Camunda流程引擎启动一条流程实例

简介: Camunda完成一条简单的流程实例

上文提到如何部署【发布】一个流程定义,本篇将使用部署成功的流程定义来完成一条简单的流程实例

ResultReturn是自定义的返回值类,有需要的可以私信我获取,返回值改一下,这部分代码与本文无关就不贴出来了】  

创建流程定义

在发起人节点的任务代理人这里设置变量

在经理审批节点也设置一个任务代理人变量

完成后拿到xml内容去项目中替换之前的one.bpmn文件

那么bpmn文件更新后是需要重新部署的【也是我在上一篇博文中不设置参数的原因,为了说明这一步】

注意:如果bpmn文件中的这个id没有改变,则重新部署流程定义后,流程引擎会认为是版本迭代,并取最新版本来发起流程实例    

这个id也就是下文中的processDefinitionKey

相关代码

首先创建一个流程实例服务接口

public interface ProcessInstanceService {
   
public ResultReturn startProcessInstanceByKey(String processDefinitionKey, String businessKey);
}

其实现类:

@Service("processInstanceService")
public class ProcessInstanceServiceImpl implements ProcessInstanceService {
   
@Autowired
   
private RuntimeService runtimeService;
   
@Autowired
   
private IdentityService identityService;
   
@Override
   
public ResultReturn startProcessInstanceByKey(String processDefinitionKey, String businessKey,String initiator) {
           
Map<String,Object> map = new HashMap<>();
         
map.put("userOne","userOne");
         
map.put("userTwo","userTwo");
         
//设置流程发起人
           
identityService.setAuthenticatedUserId("initiator");
           
ProcessInstance processInstance=runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey,map);
   }
}

流程实例接口类

@RestController
@RequestMapping
("/processInstance")
public class ProcessInstanceController {
   
@Autowired
   
ProcessInstanceService processInstanceService;
   
@PostMapping("/startProcess")
   
public ResultReturn startProcess(String processDefinitionKey,String businessKey,String initiator){
     
returnprocessInstanceService.startProcessInstanceByKey(processDefinitionKey,businessKey,initiator);
   }
}

然后启动项目,重新部署流程定义

然后发起流程:  

然后使用上篇提到的camunda view查看   有我们开启流程时设置的业务ID、流程定义版本号、当前节点的任务处理人

其实完成任务和处理人没关系,处理人的设置是用来查询待办,能看见才有机会完成。

所以接下来写个查询待办服务。首先创建一个任务服务接口

public interface ProcessTaskService {

      public ResultReturn queryMyToDo(String userId);

}

其实现类

@Service
public class ProcessTaskServiceImpl implements ProcessTaskService {

   
@Autowired
   
private TaskService taskService;
   
@Autowired
   
private IdentityService identityService;
   
@Autowired
   
private RuntimeService runtimeService;
   
@Autowired
   
private HistoryService historyService;                                     @Override
public ResultReturn queryMyToDo(String userId) {
   
try {
       
List<Task> tasks = taskService.createTaskQuery().taskAssignee(userId).list();
       
return ResultReturnUtil.success(tasks);
   }
catch(Exception e){
       
e.printStackTrace();
       
throw new ProcessException(ResponseEnums.QUERY_TASK_MY_TO_DO_FAIL.getMsg());
   }
}                                                                                        }

controller

@RestController
@RequestMapping
("/processTask")
public class ProcessTaskController {
   
@Autowired
   
ProcessTaskService processTaskService;                                            @GetMapping("/queryMyToDo")
public ResultReturn queryMyToDo(String userId){
   
return processTaskService.queryMyToDo(userId);
}                                                                                       }

请求后

此时也就可以控制谁可以看见哪些任务,有了待办就需要去完成,再来写一个完成任务的接口

还是在ProcessTaskService 中来写,很简单哈,传一个任务ID即可。

@Override
public ResultReturn taskPass(String taskId) {
   
taskService.complete(taskId);
   
return ResultReturnUtil.success("审批通过");
}

@PostMapping("/taskPass")
public ResultReturn taskPass(String taskId){
 
return processTaskService.taskPass(taskId);
}

在刚刚查询待办的返回数据中就可以获取到TaskId

拿到这个值就可以测试一下审批通过是否可以使用

此时再去看一下,camunda view,说明确实审批通过了

同样的步骤完成【经理审批】节点,也就结束了本条简单的流程。

相关文章
|
存储 数据库
13activiti - 流程管理定义(部署流程定义)
13activiti - 流程管理定义(部署流程定义)
72 0
|
数据库
19activiti - 流程管理定义(启动流程实例)
19activiti - 流程管理定义(启动流程实例)
47 0
24activiti - 流程变量(启动流程实例)
24activiti - 流程变量(启动流程实例)
31 0
|
存储 Java API
流程引擎Activiti流程实例讲解
流程引擎Activiti流程实例讲解
267 0
flowable 三种方式部署流程
flowable 三种方式部署流程
481 0
|
XML 缓存 Java
项目中工作流部署详细解析!Spring中部署Activiti流程定义的三种姿势
本文对工作流Activiti框架中流程定义的部署进行了详细说明介绍。介绍了工作流Activiti框架中业务流程部署的两种方式,包括编程式部署以及通过Activiti Explorer控制台部署。介绍了流程部署时需要使用到的外部资源,流程定义部署不同的版本生成不同的流程定义的图片。通过这篇文章,基本上对工作流Activiti框架中流程定义的部署就可以很熟练了。
458 0
项目中工作流部署详细解析!Spring中部署Activiti流程定义的三种姿势
|
XML 网络协议 安全
Activiti中工作流的生命周期详细解析!一个BPMN流程示例带你认识项目中流程的生命周期
本文详细说明了在工作流Activiti框架中的BPMN流程定义整个运行的生命周期。介绍了BPMN流程工作的运行环境,从定义流程开始,首先介绍了BPMN流程的几个组成部分,包括用例,流程图,以及流程图的XML内容。然后开始启动一个流程,生成任务列表,然后到领取任务,完成任务后结束流程。
702 0
Activiti中工作流的生命周期详细解析!一个BPMN流程示例带你认识项目中流程的生命周期
|
XML SQL Java
Spring集成使用工作流框架Activiti!事务配置,注解配置以及流程资源自动化部署
本文详尽地说明了如何在Spring项目中集成使用工作流Activiti框架。介绍了在Spring框架的项目中使用工作流Activti框架时事务的配置,表达式的使用,资源的自动化部署,单元测试以及基于注解的配置。通过这篇文章介绍的工作流框架Activiti集成到Spring项目中的使用,可以让我们更加能够熟练的在项目中使用工作流Activti框架。
1026 0
Spring集成使用工作流框架Activiti!事务配置,注解配置以及流程资源自动化部署
|
XML 缓存 Java
工作流引擎使用详解!工作流框架Activiti的详细配置以及安装和使用
本文极尽详细地阐述了工作流框架Activiti的详细配置以及安装和使用的相关注意点。从工作流Activiti框架的创建Activiti流程引擎ProcessEngine开始讲起,一直到数据库配置,部署以及工作流中的事件处理。通过这篇文章,基本上可以完全掌握工作流的基本搭建和基本使用原理,为后面项目中集成使用工作流框架Activiti进一步深化学习。
901 0
工作流引擎使用详解!工作流框架Activiti的详细配置以及安装和使用
flowable流程部署
flowable流程部署
159 0