创建基本如下的工作流。
创建一个CALSS库,使用PROGID,设置标记有ComVisible特性真,并在外表套上服务器registerd大会。
这是我测试的方式:
- 创建一个组件
- 完成了从工作清单中的活动。
- 导航到“全局工作列表”和自己通过选择“回到作家”的步骤完成审阅活动,点击“完成”按钮。
项目将不会被移动到作者。 但是当我从全局工作列表中再次完成活动,项目转移到作者。
看来,因为我曾尝试删除下面的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;
}
}