Search code examples
tridiontridion-2011

Need help to Publish and Finish activity using Core Service


I am trying to create a method to publish and finish the workflow activity using core service. am getting the compile error. Below is my code. Can any one correct me? Its an urgent.

public void PublishComponent(string WorkItemId)
    {
        var client = new SessionAwareCoreServiceClient();
        var readoptions = new ReadOptions();            
        ComponentData component = (ComponentData)client.Read(new TcmUri(WorkItemId), readoptions) as ComponentData;
        List<IdentifiableObjectData> ItemToPublish = new List<IdentifiableObjectData>();            
        ItemToPublish.Add(component);
        PublishInstructionData instruction = new PublishInstructionData();
        PublicationTargetData pubtarget = (PublicationTargetData)client.Read(new TcmUri("tcm: 0 - 21 - 65537"), readoptions) as PublicationTargetData;
        List<PublicationTargetData> target = new List<PublicationTargetData>();
        target.Add(pubtarget);            
        client.Publish(ItemToPublish, instruction, target, PublishPriority.Normal, readoptions);


        WorkItemData workitem = new WorkItemData();
        workitem.Id = new TcmUri(WorkItemId);            
        ActivityInstanceData currentactivity = new ActivityInstanceData();
        ActivityFinishData finish = new ActivityFinishData();
        finish.Message="Published";
        client.FinishActivity(currentactivity, finish, readoptions);
}

Solution

  • There were several problems, but the main is that there's no TcmUri class, like in TOM.NET, it's string in CoreService. And the same for Publish method, it takes string arrays as input, not item arrays, like in TOM.NET

            var client = new SessionAwareCoreServiceClient();
            var readoptions = new ReadOptions();
            ComponentData component = (ComponentData)client.Read(WorkItemId, readoptions);
            List<string> ItemToPublish = new List<string>();
            ItemToPublish.Add(component.Id);
            PublishInstructionData instruction = new PublishInstructionData();
            PublicationTargetData pubtarget = (PublicationTargetData)client.Read("tcm:0-21-65537", readoptions);
            List<string> target = new List<string>();
            target.Add(pubtarget.Id);
            client.Publish(ItemToPublish.ToArray(), instruction, target.ToArray(), PublishPriority.Normal, readoptions);
    
    
            WorkItemData workitem = new WorkItemData();
            workitem.Id = WorkItemId;
            ActivityInstanceData currentactivity = new ActivityInstanceData();
            ActivityFinishData finish = new ActivityFinishData();
            finish.Message = "Published";
            client.FinishActivity(currentactivity.Id, finish, readoptions);