Kofax Total Agility:以编程方式将文档作业移动到特定流程步骤

Kofax Total Agility: moving a document job programmatically to a specific process step

我正在使用基本的 BPMN(业务流程模型和表示法)开发 Kofax Total Agility。 此过程包含不同的步骤:

我的objective是通过开发模块让以后的流程更容易管理。 在工作区,我可以导入文档并管理所有流程,最后导出文档,一切正常。

我试图在API文档中找到可以在外部调用和使用的服务和方法。在此过程中,当我到达过程的 externalCall 步骤时,我想 return 到分类步骤或文档审查,具体取决于验证步骤中检索到的值。

将变量从验证传递到 externalCall 很容易。我的问题是知道如何以编程方式将 activity“移动”到流程中导入的一个或多个文档的上一步。在这种情况下,我想在工作流中验证和外部调用后将文档重新分配到验证步骤或提取步骤。

我在ActivityService中找到了ReassignActivity之类的方法。我的问题是知道如何获得所需的变量以使其成为可能。例如,如何检索 ResourceIdentity 对象(原始资源和新资源)、JobActivityIdentity 对象等。我是否需要创建一个新的 Job ?如果是,是否必须获取上一份工作的jobId?

我终于找到了解决办法。我创建了一个 dll,允许我在工作流的某个点创建一个新作业并删除以前的作业。

为此,我使用了 JobIdentity CreateJobAndStartAt 方法。在这个阶段,很容易获得所需的sessionId,因为它是一个系统变量。

基本上,我是这样实现一个方法的:

public class AppJobService
{
    public JobIdentity CreateJobAndStartAt(string sessionId, string jobIdentityId)
    {
        JobIdentity returnValue = null;
        var js = new sdk.JobService();

        var pai = new ProcessActivityIdentity();
        pai.ActivityName = Constants.activityName;

        var pi = new ProcessIdentity();
        pi.Name = Constants.processIdentityName;

        try
        {
            returnValue = js.CreateJobAndStartAt(sessionId, pi, new JobInitialization(), pai);

            // call terminate job
            JobIdentity currentJi = new JobIdentity();
            currentJi.Id = jobIdentityId;
            TerminateJob(sessionId, currentJi);
        }
        catch (Exception ex)
        {
            throw;
        }
        return returnValue;
    }

    void TerminateJob(string sessionId, JobIdentity jobIdentity)
    {
        var js = new sdk.JobService();
        try
        {
            js.TerminateJob(sessionId, jobIdentity);
        }
        catch (Exception ex)
        {
            throw;
        }
    }
}

这段代码工作正常! 我的问题如下:

  1. 有没有办法动态检索进程名称并将其作为变量传递?在这个阶段我硬编码了它:Constants.activityName
  2. 是否还有一种方法可以将变量传递给这个新作业?例如一个布尔值 returns 如果 dll 被调用则为真
  3. 有没有办法找回以前的 activity 名字?如果我计划在过程的不同步骤重用该方法并在前一步创建一个新作业,这可能会很有用