我必须使用项目服务公开Activiti API流程。
我的要求如下:
我希望在运行Process之前了解有关使用Java的Activiti Process Definition中的任务的详细信息,即。在创建Activiti ProcessInstance之前。有没有办法实现这个目标?
我已多次浏览Activiti API的Java文档和用户指南,但无法找到方法。
任何帮助将不胜感激,谢谢。
答案 0 :(得分:4)
您可以使用RepositoryService接口中提供的getBpmnModel(processDefinitionId)方法。
结果是一个Pojo,您可以使用它来反省过程。最初的pojo代表模型,它可以有多个进程(但通常只有一个)。从给定的Process,您可以使用findFlowElementsOfType(类类型)查找所有任务。
例如,这段代码应该会为您提供一个进程中的UserTasks列表(未经过测试,但应该让您知道需要什么):
BpmnModel model = processEngine.getRepositoryService().getBpmnModel(someProcessId);
List<Process> processes = model.getProcesses();
List<UserTask> userTasks = new ArrayList<>();
for( Process p : processes ) {
userTasks.addAll( p.findFlowElementsOfType(UserTask.class))
}
答案 1 :(得分:4)
要访问有关工作流程(bpmn)定义的信息,您可以执行以下操作:
RepositoryService repositoryService = processEngine.getRepositoryService();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
List<Process> processes = bpmnModel.getProcesses();
for (Process p : processes) {
Collection<FlowElement> elements = p.getFlowElements();
for (FlowElement element : elements) {
if (element instanceof UserTask) {
// do something
} else if (element instanceof ServiceTask) {
// do something
} else if (element instanceof StartEvent) {
// do something
}
}
}