不执行自动活动(Automatic activity not performing)

2019-09-19 03:27发布

创建基本如下的工作流。

创建一个CALSS库,使用PROGID,设置标记有ComVisible特性真,并在外表套上服务器registerd大会。

这是我测试的方式:

  1. 创建一个组件
  2. 完成了从工作清单中的活动。
  3. 导航到“全局工作列表”和自己通过选择“回到作家”的步骤完成审阅活动,点击“完成”按钮。

项目将不会被移动到作者。 但是当我从全局工作列表中再次完成活动,项目转移到作者。

看来,因为我曾尝试删除下面的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;
        }
    }

Answer 1:

要知道,你正在使用的不是在自动活动支持的API。 在那里你被允许使用TOM.NET的唯一方法是事件系统处理程序和模板搭积木一样记录在这里 。

自动工作流活动 - 如果不是使用VBScript开发 - 必须使用CoreService接口。

好消息是,我知道一个事实,这个工程 - 很多人得到了它在许多实现工作。 (你)坏消息是,错误是在你的代码。 您是否尝试过调试/你的代码一步一步了吗? 您可以连接到的工作流程(cm_wf_svc.exe),并找出什么是错的代码比我们要快得多。

这里是一个非常简单的代码片段,完成活动与CoreService:

ActivityFinishData activityFinish = new ActivityFinishData
    {
        Message = "Automatically Finished from Expiration Workflow Extension"
    };
ActivityInstanceData activityInstance = 
    (ActivityInstanceData)processInstance.Activities[0];
client.FinishActivity(activityInstance.Id, activityFinish, readOptions);

顺便说一句-如果你打算无论如何要使用TOM.NET,为什么你懒得问要使用的API ?



Answer 2:

继努诺的回答,是的,你应该改变使用TOM或核心服务的代码。 因为它用比我们使用的工作流程(COM)的底层技术不同的线程单元不支持TOM .NET。

关于这个问题我已经检查您呼叫这样的活动。

Call workflowHandler.MoveBackToActivity(Cstr(CurrentWorkItem.ID, "Create or Edit     Component")

它看起来像活动名称不匹配。 有“编辑”和“组件”之间的一些奇怪的字符

我希望这有帮助。



Answer 3:

自动活动由工作流代理服务执行。 分配的状态可能表明,它只是没有被服务接走。 是您的服务运行正常,并之类的东西队列通知设置是否正确?



文章来源: Automatic activity not performing