我开发了一个工作流模型,如下所示。
流程开始 - >测试过程 - >自定义参与者 - >结束 我为两个不同的自定义流程步骤和自定义动态参与者步骤编写了两个不同的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,Custom Participant-在/ 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版本。