在设计流程时每一个组件在Activiti中都可以称之为——Activity,部署流程时引擎把XML文件保存到数据库,当启动流程、完成任务时会从数据库读取XML并转换为Java对象,很多人想在处理任务时获取任务的一些配置,例如某个任务配置了哪些监听器或者条件Flow配置了什么条件表达式。
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionKey("leave").singleResult();
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(definition.getId());
List<ActivityImpl> activitiList = processDefinition.getActivities();
for (ActivityImpl activity : activitiList) {
Map<String, Object> properties = activity.getProperties();
String type = properties.get("type").toString();
if (type.equals("exclusiveGateway")) {
List<PvmTransition> outgoingTransitions = activity.getOutgoingTransitions();
for (PvmTransition outgoingTransition : outgoingTransitions) {
TransitionImpl ti = (TransitionImpl) outgoingTransition;
System.out.println(ti.getProperties());
}
} else {
System.out.println(properties);
}
}