2012-07-09 66 views
0

我想创建一个方法来发布和使用核心服务完成工作流活动。我正在收到编译错误。以下是我的代码。任何人都可以纠正我吗?它是一个迫切的。使用核心服务需要帮助来发布和完成活动

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); 
} 
+0

“的编译错误”并没有告诉我们很多。 下次考虑说明确切的错误(使用堆栈跟踪)。这将使人们可以在不尝试编译代码的情况下进行回答(这需要花费更多的精力)。 – 2012-07-09 14:05:09

回答

5

存在一些问题,但主要的是,有没有TcmUri类,像TOM.NET,它在CoreService字符串。而对于Publish方法一样,它需要字符串数组作为输入,而不是项目的阵列,像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); 
+2

您可以从项目中添加对Tridion.Common.dll的引用。 Tridion.Common中的所有类都可安全地在Tridion服务器之外使用。此dll将包含TcmUri类,您可以使用它。 – 2012-07-09 14:33:17

+0

如果您的web.config或app.config使用Tridion Live Docs中的WCF配置,请使用它连接到CoreServiceClient。 var client = new SessionAwareCoreServiceClient(“netTcp_2011”); – robrtc 2013-01-16 15:07:53

+0

此外,publishInstruction需要更新。下面的例子构建模块使用, //设置发布指令发布到儿童出版物 PublishInstructionData指令=新PublishInstructionData { ResolveInstruction =新ResolveInstructionData(){IncludeChildPublications = TRUE}, RenderInstruction =新RenderInstructionData() } ; – robrtc 2013-01-16 15:08:44