100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 初识flowable工作流-实现简单请假流程SpringBoot+VUE

初识flowable工作流-实现简单请假流程SpringBoot+VUE

时间:2020-09-25 02:21:03

相关推荐

初识flowable工作流-实现简单请假流程SpringBoot+VUE

一、前言

大家好,因为目前手里需要用到flowable工作流,之前没有接触过,所以在这里记录一下学习的进度,开始后台使用SpringCloud分布式框架和前端Vue框架实现一个简单的请假流程。

二、代码实现

1.首先引入需要flowable的坐标,也是就pom依赖包。

<!-- flowable初始化工程所需--><dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>${flowable.version}</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions></dependency><!-- 如果指定了自己的数据库则不需要,h2基于内存存储--><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.4.197</version></dependency>

2.流程设计

利用flowable-UI可视化设计器设计自己的请假流程,这里只做一个简单请假审批流程,如下图:

其中,开始审批节点可以指定流程发起者和绑定相应的请假表单,表单可以自己设计,

在创建新的表单时的key很重要,后面是跟流程绑定的。

这样自己设计的表单就建好了,在之后的每个流程节点上的表单引用选择此表单进行绑定(同流程开始节点)。

好了,这里建好了需要的模型,接下来就是如何后台启动部署并走流程了。

3.后台实现

首先,flowable工作流想要生效需要几个步骤:

建立流程模型(上一步已经做好了),获得bpmn.xml配置文件,这个xml里面记录的是可视化设计页面上的节点、指定人、表单相关信息。部署该模型,指定需要使用的流程是哪一个。启动刚刚指定的流程实例。根据节点指定的审批人或组的key获取待办列表。审批该节点。自动到下一个节点指定的审批人或组。查询节点已办列表。

接下来每一步将详细介绍:

1.获得配置文件

之前咱们建好了流程模型,先下载配置文件

2.部署流程

这里部署流程有三种:

1.当前我们使用的是classpath部署,即指定classes路径。将下载的xml放在resources下面

//部署流程Deployment deploy = repositoryService.createDeployment().addClasspathResource("yourmodelkey.bpmn20.xml").name("yourmodelkey").deploy();

2.根据ui.modeler的 modelId部署

/**部署流程定义(根据ui.modeler的 modelId部署)* @param modelId 模型ID* @from */protected String deploymentProcessDefinitionFromUIModelId(String modelId) throws Exception{Model model = modelService.getModel(modelId);BpmnModel bpmnModel = modelService.getBpmnModel(model);Deployment deployment = repositoryService.createDeployment().name(model.getName()).addBpmnModel(model.getKey() + ".bpmn", bpmnModel).deploy();return deployment.getId(); //部署ID}

3.从zip压缩包部署

/**部署流程定义(从zip压缩包)* @param name //部署名称* @param zippath //zip文件路径* @from * @throws FileNotFoundException */protected String deploymentProcessDefinitionFromZip(String name, String zippath) throws Exception{File outfile = new File(zippath);FileInputStream inputStream = new FileInputStream(outfile);ZipInputStream ipInputStream = new ZipInputStream(inputStream);DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();//创建部署对象deploymentBuilder.name(name); //部署名称deploymentBuilder.addZipInputStream(ipInputStream);Deployment deployment = deploymentBuilder.deploy(); //完成部署ipInputStream.close();inputStream.close();return deployment.getId();//部署ID}

3.启动流程

@Autowiredprivate RuntimeService runtimeService;ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("forleave");processInstance.getId();//启动的流程Id

到这里已经可以应用刚刚创建的请假流程了,接下来需要到下一个节点审批人。

4.待办列表

/*** @assignee 指定人id**/public List<Task> getTasks(String assignee) {//taskCandidateUser() 根据指定人查//taskCandidateGroup() 根据指定组查ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();return taskService.createTaskQuery().taskAssignee(assignee).orderByTaskCreateTime().desc().list();}

当我们的待办人登录后,则需要选择一条流程进行审批。

5.审批流程

/***@id 流程Id*@approved true表示通过,false表示驳回*/public void dealTask(String id,Boolean approved) {Map variables = new HashMap<String, Object>();variables.put("approved", approved);plete(id, variables);}

此刻通过后流程自动流转到下一审批人,需要下一审批人登录后处理。这里我们可以查看当前审批人的已办列表已经有该流程。

6.已办列表

/*** @assignee 指定人id**/public List<HistoricProcessInstance> getdoed(String assignee) {return historyService.createHistoricProcessInstanceQuery().involvedUser(assignee).orderByProcessInstanceStartTime().desc().list();}

三、总结

以上是初识了两天flowable工作流的内容,熟悉了flowable中Rest API使用和种类,知道了flowable数据库表中表功能,简单的实现了请假流程。这里再补充两个问题,一个是微服务模式下,分布式部署flowable的xml该怎么获取?第二个是实际业务产生的表单如何与工作流相关联?大家有想法吗,可以在评论区一起讨论哦。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。