以下のようなワークフローモデルを開発しました。
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バージョンに取り組んでいます。