# demo35 **Repository Path**: FlowableDemo/demo35 ## Basic Information - **Project Name**: demo35 - **Description**: 给缓存中添加单一独立节点 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-01-20 - **Last Updated**: 2021-04-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ------ 环境: [jkd8+]() [mysql5.6+]() ## 一、给缓存中添加单一独立节点 - 创建任务节点:user-d ```java UserTask userTask = new UserTask(); userTask.setId("user-d"); userTask.setName("user-d"); userTask.setAssignee("demo"); userTask.setBehavior(createBehavior(userTask)); ``` - 创建连线:sequence-s1 **** ``` SequenceFlow sequenceFlow = new SequenceFlow(); sequenceFlow.setId("sequence-s1"); sequenceFlow.setName("sequence-s1"); sequenceFlow.setTargetRef("user-b"); sequenceFlow.setTargetFlowElement(process.getFlowElement("user-b")); ``` - 设置任务节点:user-d的出线 ``` userTask.setOutgoingFlows(Arrays.asList(sequenceFlow)); ``` - 将任务节点,连线添加到流程中 ``` process.addFlowElement(userTask); process.addFlowElement(sequenceFlow); ``` - 更新缓存 ``` ProcessDefinitionCacheEntry processDefinitionCacheEntry = managementService.executeCommand(new GetProcessDefinitionCacheEntryCmd(processDefinitionId)); processDefinitionCacheEntry.setProcess(process); ``` ## 二、实践测试 - 运行demo - 查看数据库表 - DEBUG看看是否添加成功 ``` org.flowable.bpmn.model.Process process2 =managementService.executeCommand(new GetProcessDefinitionCacheEntryCmd(processDefinitionId)).getProcess(); System.out.println(process2); ``` - 节点跳到刚刚新的节点user-d ``` managementService.executeCommand(new CustomCommonJumpCmd(taskId, "user-d")); ``` - 查看ACT_RU_TASK表可以看到任务已经跳转到了user-d 由于user-d任务节点在缓存中,重启后会丢失,后续可以将其缓存到redis中. 如果要完成任务,需要从缓存中获取节点user-d,详见**completeByCache**方法