1

以下のようなワークフローモデルを開発しました。

Flow Start ->Test Process-> Custom Participant ->End 2 つの異なるカスタム プロセス ステップとカスタム動的参加者ステップに対して、2 つの異なる 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?  
   /*
   }
   }

2 番目の 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";
    }
        }

2 つのバンドルをインストールしましたが、どちらもアクティブな状態です。

問題は、ワークフローを開始すると、最初のカスタム プロセス ステップが実行されますが、終了後に 2 番目のカスタム動的参加者フロー コードが実行されないことです。しかし、最初のカスタム ステップ プロセス (テスト プロセス) を削除すると、カスタム動的参加者フローのコードが実行されます。

ここで何か不足している場合はお知らせください。ご協力ありがとうございました!

私は5.4バージョンに取り組んでいます。

4

1 に答える 1

2

カスタム プロセスが参加者ステップに進まないようです。Process StepでHandler Advanceチェックボックスが選択されていることを確認してください。カスタム プロセス コンポーネントを更新したら、必ずワークフローを保存してください。

于 2013-09-24T20:32:59.520 に答える