@Override
public Object execute(CommandContext commandContext) {
TaskEntityManager taskEntityManager = commandContext.getTaskEntityManager();
//根据任务id获取任务实例
TaskEntity taskEntity = taskEntityManager.findById(taskId);
ProcessEngineConfigurationImpl processEngineConfiguration = commandContext.getProcessEngineConfiguration().getProcessEngineConfiguration();
ManagementService managementService = processEngineConfiguration.getManagementService();
// 添加节点进行测试: 问题 --> 一个流程添加了节点,新发起一个流程也有了这个节点
Process mainProcess = managementService.executeCommand(new ProcessGetCmd(taskEntity.getProcessDefinitionId()));
UserTask testTask = new UserTask();
testTask.setId("123456");
testTask.setName("审批人");
testTask.setAssignee("1");
mainProcess.addFlowElement(testTask);
return null;
}
我刚学activiti,不清楚你的问题是什么。
这么添加节点的插入位置在哪,流入和流出不完善吧
在创建流程时,有具体设置流程id嘛?比如:我现在有请假流程和报销流程,则这两个流程的id也是不同的。
可以使用activiti插件,图形化设计流程,设计好以后会自动生成xml文件。
@Test
public void test() {
//使用内存数据库,创建流程引擎
ProcessEngine engine = ProcessEngineConfiguration
.createStandaloneInMemProcessEngineConfiguration().buildProcessEngine();
//部署
RepositoryService repositoryService = engine.getRepositoryService();
repositoryService.createDeployment().addClasspathResource
("workflow/diagrams/xx.bpmn")
.deploy();
//验证
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery()
.singleResult();
final String key = "firstProcess";
assertEquals(key, definition.getKey());
//启动流程并返回实例
RuntimeService runtimeService = engine.getRuntimeService();
ProcessInstance instance = runtimeService.startProcessInstanceByKey(key);
assertNotNull(instance);
System.out.println("id=" + instance.getId() + ",definitionId=" + instance
.getProcessDefinitionId());
}
ProcessDefinitionId 流程定义id,流程定义数据在表act_re_procdef表中。可以查看两个流程数据库中的数据分析问题。