【发布时间】:2012-09-26 02:55:01
【问题描述】:
在 Tridion 2011 SP1 中遇到自动决策问题。
我有一个自动决策项,它沿着两条路径之一(一条用于手动决策,另一条用于手动活动)。附上截图。
我需要做的是分析提交工作流第一步的用户的权限,并自动将工作流向下移动到正确的路径。
我正在为 AutomaticAssignActivity 使用事件处理程序(通过事件日志写入成功测试),并在 API 中找到了如何完成活动,但分配下一个活动没有过载。
我发现this post 读起来很有趣,并尝试实现CoreServiceSession 和SessionAwareCoreServiceClient,但每次代码尝试加载核心服务时,我都会收到以下错误:无法加载文件或程序集'Tridion.ContentManager. CoreService.Client,Version=6.1.0.996,Culture=neutral,PublicKeyToken=ddfc895746e5ee6b' 或其依赖项之一。系统找不到指定的文件。
我在 Web 层中使用核心服务来生成一些次要内容,但它不想在事件系统中工作。我究竟做错了什么?我的事件系统 DLL 位于 Tridion.ContentManager.CoreService.Client.dll 所在的 Tridion bin 文件夹中。
任何帮助表示赞赏:)
【问题讨论】:
-
如果您的第一次尝试是使用 VBScript,您能否分享您的 FinishActivity 代码?我相信您所需要的只是完成消息和带有活动名称的用户之后的额外参数。希望其他人可以回答您的核心服务问题。
-
我将不得不走那条路。我记得 VBScript 中的命令,但是我需要对权限进行相当多的分析,而我更愿意在 VS 中使用 C# 进行。
Call CurrentWorkItem.ActivityInstance.FinishActivity("Finish message", "Name of activity or TCMID") -
这里为什么需要CoreService?您可以从事件处理程序中使用 TOM.NET,还是从自动活动中使用 TOM?如果您可以发布事件系统的代码,周围的人可以帮助您使其工作。否则,您可以随时尝试使用 Fusion 日志查看器来查看它期望核心服务 dll 的位置
-
在网上搜索后,我能找到的唯一示例是有人指导自动决策使用了该服务。使用正常的 Finish() 方法,我只能设置下一个受让人,而不是活动。
DecisionActivityFinishData dafd = new DecisionActivityFinishData(); dafd.Message = "this and that"; dafd.NextActivity = new TridionCore.LinkToActivityDefinitionData() { IdRef = "240" }; dafd.NextAssignee = new TridionCore.LinkToTrusteeData() { IdRef = "11" }; client.FinishActivity(activityInstance.Id, dafd, readOptions); -
dafd.NextActivity = new TridionCore.LinkToActivityDefinitionData() { IdRef = "240" }; - 这看起来不对。您可以将其设置为正确的 id,例如“tcm:0-240-131088”吗?
标签: tridion tridion-2011