一、前言

大家好,因为目前手里需要用到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工作流想要生效需要几个步骤:

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

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

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 fhadmin.cn*/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 fhadmin.cn* @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);taskService.complete(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该怎么获取?第二个是实际业务产生的表单如何与工作流相关联?大家有想法吗,可以在评论区一起讨论哦。

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

  1. 【Activiti工作流】5. 简单请假流程

    1. 画出流程图 使用之前安装的Eclipse的流程设计器,画出如下流程图: 1.1 设置开始节点 在properties中选中Main config:设置如下: 然后选中Form,设置如下: 具体操 ...

  2. Activiti(二)简单请假流程实现

    在SpringBoot2集成Activiti6的环境中,实现简单的请假流程.编写请假业务流程.流程业务为: 1,员工请假,先创建请假流程 2,员工填写请假申请,也可以不填写,直接结束流程 3,提交给直 ...

  3. flowable工作流简单请假流程,自定义完成的流程图表颜色字体以及连接线的颜色字体。

    效果图 代码 1.bpmn文件ExpenseProcess.bpmn20.xml(通过可视化工具生成[非常熟悉也可以手动编写]) <?xml version="1.0" en ...

  4. 状态模式实例请假流程

    工作流中的请假流程 某人提出请假申请,先由项目经理审批,如果项目经理不同意,审批就直接结束 如项目经理同意,再看是否超过3天,如果三天以内,审批直接结束 否则,交给部门经理,部门经理审核后,无论是否同 ...

  5. springboot集成flowable创建请假流程实例

    springboot如何集成flowable,如何部署flowable在线编辑器画bpm图以及bpm图的画法,我在上一篇博客中写了,这里直接上代码(源码地址:晚安/flowable_holiday ( ...

  6. Activiti工作流(一):OA 上的那些请假流程如何快速实现呢?

    大家好,我是 杰哥 在公司中,每个人都需要经常创建或者审批一些流程,比如说转正申请.请假流程.出差申请等等 那么,你有没有想过,要是你,你会如何实现这些流程的控制逻辑呢? 比如说请假申请,首先需要提前 ...

  7. SpringBoot整合Flowable工作流引擎框架

    Flowable工作流引擎框架介绍 一个Java编写的轻量级业务流程引擎,为开发人员.系统管理员和业务用户提供工作流和业务流程管理(BPM)平台. 不仅包括BPMN,还有DMN决策表和CMMN Cas ...

  8. flowable工作流 流程变量_业务流程 BPM、工作流引擎、Flowable、Activiti

    特点 基于 Flowable(Activiti)生来具有的稳定工作流引擎 支持在线流程设计器,流程导入导出,符合 BPMN 规范,中国式工作流 支持流程办理.退回.自由流.会签.并行.串行.服务任务等 ...

  9. 第6篇:Flowable快速工作流脚手架Jsite_请假实战_部门经理审批

    接上一篇:第5篇:Flowable快速工作流脚手架Jsite_请假实战_部署流程和发起流程https://blog.csdn.net/weixin_40816738/article/details/1 ...

最新文章

  1. Bruck:一个Web界面布局原型设计框架\n
  2. python 装饰器 参数-[Python]写个带参数的装饰器
  3. 最大后验概率估计算法
  4. eclipse 安装svn插件 及试用
  5. php获取日期中的月份,年份
  6. 【TCP/IP详解 卷一:协议】第十八章 TCP连接 的建立与终止 (2)其余内容
  7. 银联再发道歉声明;印度发布吃鸡禁令;甘肃全省校园禁售辣条;波音面临50亿罚款;女子撕扯民警头发罚两百;这就是今天的大新闻。...
  8. 2019-03-18-算法-进化(反转链表)
  9. 文件服务器监控用户修改信息,文件服务器监控日志软件
  10. hana 查看表字段_hana 查看表数据库
  11. 华硕ROG5电竞手机跑分数据曝光:骁龙888+16G超大运存
  12. VCL组件之公用对话框组件
  13. ChIP-seq 数据分析
  14. 通用的流氓软件手动清理方法
  15. 《机器人动力学与控制》第九章——动力学 9.2 动能与势能的一般表达
  16. 2021前端经典面试题
  17. 深度诗歌阅读:你永远是个孩子
  18. 神经网络的基本原理,神经网络算法三大类
  19. 高级Java开发招聘
  20. 阿里高级外包你待得住吗?

热门文章

  1. Python matplotlib 饼图
  2. EPICP安装与测试
  3. 中科大计算机考研录取分数线_计算机专业学校考研难度排行榜 计算机考研难度排名...
  4. 计算机英语输入法怎么,电脑英文输入法不见了怎么处理?
  5. 史上讲解最好的Docker教程,从入门到精通(建议收藏的教程)
  6. Sql Server 生成 Word 文档 表结构
  7. matplotlib数据可视化实验报告1(最终版)
  8. 视频编码码率控制:CBR、VBR和ABR
  9. matlab测量平差实验报告,测量平差实习心得精选三篇
  10. c语言字符串怎么退位,C语言第五六次作业.ppt