1

我开发了一个工作流模型,如下所示。

流程开始 -> 测试流程 -> 自定义参与者 -> 结束 我已经为两个不同的自定义流程步骤和自定义动态参与者步骤编写了两个不同的 OSGI 包。

第一个 OSGI 实现 - 在 /apps/mywebsite/wfprocess/ 下创建了一个包,java 文件的路径是 /apps/mywebsite/wfprocess/src/main/java/com/test/workflow/MyWorkflowProcess.java

      @Component
     @Service
      public class MyWorkflowProcess implements WorkflowProcess {

     @Property(value = "An example workflow process implementation.")
    static final String DESCRIPTION = Constants.SERVICE_DESCRIPTION; 
    @Property(value = "Adobe")
     static final String VENDOR = Constants.SERVICE_VENDOR;
    @Property(value = "Custom Step Process ")
    static final String LABEL="process.label";
    private static Logger log = LoggerFactory.getLogger(MyWorkflowProcess.class);
    private static final String TYPE_JCR_PATH = "JCR_PATH";

    public void execute(WorkItem item, WorkflowSession session, MetaDataMap args)  
    throws WorkflowException {
        String argument = args.get("PROCESS_ARGS", "default value");
    /*
     Do I need to do something here to call second dynamic participant step?  
   /*
   }
   }

现在是第二个 OSGI,自定义参与者 - 在 /apps/mywebsite/custPerticipantChooser/ 下创建了一个包,java 文件的路径是

/apps/mywebsite/custPerticipantChooser/src/main/java/com/test/cust/actor/MyDynamicParticipant.java

    @Component
    @Service
    @Properties({
    @Property(name = Constants.SERVICE_DESCRIPTION, 
              value = "A sample implementation of      dynamic participant chooser."),
    @Property(name = Constants.SERVICE_VENDOR, value = "Adobe"),
    @Property(name = ParticipantStepChooser.SERVICE_PROPERTY_LABEL, 
              value = "Sample Participant Chooser")})  
      public class MyDynamicParticipant implements ParticipantStepChooser {

   private static final String TYPE_JCR_PATH = "JCR_PATH";

   public String getParticipant(WorkItem workItem, WorkflowSession workflowSession,  
    MetaDataMap args) throws WorkflowException {
    WorkflowData workflowData = workItem.getWorkflowData();
     if (workflowData.getPayloadType().equals(TYPE_JCR_PATH)) {
        String path = workflowData.getPayload().toString();
        String pathFromArgument = args.get("PROCESS_ARGS", String.class);
        if (pathFromArgument != null && path.startsWith(pathFromArgument)) {
            return "sam";
        }
     }
    return "marketingrp";
    }
        }

现在我确实安装了两个捆绑包,并且都处于活动状态。

问题是当我启动工作流时,第一个自定义流程步骤正在执行,但在它完成后,第二个自定义动态参与者流程代码没有被执行。但是,当我删除第一个自定义步骤流程(测试流程)时,将为自定义动态参与者流程执行代码。

如果我在这里遗漏了什么,你能告诉我吗?谢谢您的帮助!

我正在开发 5.4 版本。

4

1 回答 1

2

您的自定义流程似乎没有进入参与者步骤。请检查您是否在Process Step中选中了Handler Advance复选框。请记住在更新自定义流程组件后保存工作流程。

于 2013-09-24T20:32:59.520 回答