有没有办法在不创建流程实例的情况下获取Activiti流程定义中的任务?
Is there a way to get tasks in Activiti process definition without creating a process instance?
我必须使用我项目的服务公开 Activiti API 进程。
我的要求如下:
我想知道有关 Activiti 流程定义中任务的详细信息,使用 Java,在 运行 流程之前,即。在创建 Activiti ProcessInstance 之前。有什么办法可以实现吗?
我已经阅读了 Java 文档和 Activiti 的用户指南 API 很多次,但找不到方法。
任何帮助将不胜感激,谢谢。
您可以使用 RepositoryService 接口中提供的 getBpmnModel(processDefinitionId) 方法。
结果是一个 Pojo,您可以使用它来检查流程。初始的pojo代表模型,可以有多个Processes(但通常只有一个)。从给定的流程中,您可以使用 findFlowElementsOfType(Class 类型) 找到所有任务。
例如,此代码段应为您提供进程中的 UserTask 列表(未测试但应让您了解需要什么):
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))
}
要访问有关工作流 (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
}
}
}
我必须使用我项目的服务公开 Activiti API 进程。
我的要求如下:
我想知道有关 Activiti 流程定义中任务的详细信息,使用 Java,在 运行 流程之前,即。在创建 Activiti ProcessInstance 之前。有什么办法可以实现吗?
我已经阅读了 Java 文档和 Activiti 的用户指南 API 很多次,但找不到方法。
任何帮助将不胜感激,谢谢。
您可以使用 RepositoryService 接口中提供的 getBpmnModel(processDefinitionId) 方法。
结果是一个 Pojo,您可以使用它来检查流程。初始的pojo代表模型,可以有多个Processes(但通常只有一个)。从给定的流程中,您可以使用 findFlowElementsOfType(Class 类型) 找到所有任务。
例如,此代码段应为您提供进程中的 UserTask 列表(未测试但应让您了解需要什么):
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))
}
要访问有关工作流 (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
}
}
}