创建了一个基本的工作流程,如下所示。
创建一个 calss 库,使用 ProgId,设置 comvisible true 并在 Tridion 服务器中注册程序集。
这是我测试过的方式:
- 创建了一个组件
- 完成工作清单中的活动。
- 导航到“全局工作列表”并通过选择“返回作者”步骤并单击“完成”按钮自行完成审阅者活动。
该项目未移至作者。但是当我从全局工作列表中再次完成活动时,该项目已移至作者。
似乎我的代码没有执行该活动,因为我尝试删除下面的 VB 脚本代码并尝试使用默认的自动脚本代码。
' Script for Automatic Activity Content Manager Workflow
FinishActivity "Automatic Activity Finished"
它的行为与上述相同。所以我决定我的代码不起作用。有人可以帮忙吗?
下面是我在“回到作者”的脚本框中使用的VBScript:
Option Explicit
Dim workflowHandler
Set workflowHandler = CreateObject("CoreComponentWorkflow.WorkflowHandler");
If Not workflowHandler Is Nothing Then
Call workflowHandler.MoveBackToActivity(Cstr(CurrentWorkItem.ID, "Create or Edit Component")
End If
Set workflowHandler = Nothing
下面是 C# 代码:
public void MoveBackToActivity(string workitemid, string strActivitytoMove)
{
try
{
Session session = new Session();
WorkItem workitem = new WorkItem(new TcmUri("workitemid"), session);
ActivityInstance currentactivity = workitem.Activity as ActivityInstance;
ProcessInstance procInstance = currentactivity.Process as ProcessInstance;
IEnumerable<ActivityInstance> ieActivities = procInstance.Activities
.Select (s => s)
.Where (w => w.Title.IndexOf(strActivitytoMove) !=-1)
.OrderByDescending(w =>w.StartDate);
if (ieActivities != null && ieActivities.Count<ActivityInstance>() > 0)
{
ActivityInstance targetactivity = ieActivities.ElementAt(0);
User lastperformuser = targetactivity.Performers.ElementAt(targetactivity.Performers.Count<User>() - 1);
ActivityFinish finish = new ActivityFinish(targetactivity.FinishMessage, lastperformuser, workitem.Session);
currentactivity.Finish(finish);
}
}
catch (Exception ex)
{
throw ex;
}
}