我开发了一个工作流模型,如下所示。
Flow Start ->Test Process->自定义参与者->End我为两个不同的定制流程步骤和自定义动态参与者步骤编写了两个不同的OSGI。
首先,OSGI在/app/ under /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,自定义参与者-在/app/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版本。
发布于 2013-09-24 20:32:59
您的自定义过程似乎没有推进到参与者步骤。请检查您是否在过程步骤中选中了Handler预先复选框。记得在更新自定义流程组件后保存工作流。
https://stackoverflow.com/questions/18989445
复制相似问题