如何通过流程审批与外部表单实现对接
在流程的审批过程中,我们有很多业务是需要进行流程的审批的,但实际上这些业务在大部分处理上跟流程上是无关的,他们只是有部分业务的数据需要参与审批的动作而已,如:
销售采购合同,制订采购合同是需要走审批流程,一旦审批完成后,这个采购合同后续的执行是则是由采购合同模块本身的处理来完成,后续跟审批操作没有多太关系。在系统设计上,我们需要开发一个单独的模块进行采购合同的处理,但我们又希望他们有些信息是需要参与审批,并且在审批完成后,能完成对采购合同进行修改。
为了更形象说明这个整合开发原理,我们举一个简单的例子:如供应商入库,前期的供应商信息我们是需要审批的,一旦审批通过后,我们后续的其他业务模块就可以使用供应商的信息。为此JSAAS提供了灵活的处理,本文先介绍其中一方便快捷的方法,本文的前提就是供应商管理模块已经存在。我们需要在供应商表中加一个字段 act_inst_id_,用于存储Activiti的流程实例Id,用于后续追踪供应商的审批过程。
步骤一
根据供应商的信息制作在线表单,如:
步骤二
编写供应商的数据处理接口
1.通过审批表单的数据来创建供应商
实现流程在启动时创建时调用供应商的创建接口,实现接口ProcessStartAfterHandler即可。
2.通过审批表单更新供应商的数据
实现TaskAfterHandler接口即可
3.通过审批表单的审批触发供应商数据的审批状态
实现ProcessEndHandler即可。
代码说明
以下是我们把以上三个实现均放在CrmProviderManager中来实现,代码如下所示
@Service public class CrmProviderManager extends BaseManager<CrmProvider> implements ProcessStartAfterHandler,TaskAfterHandler,ProcessEndHandler{ /** * 通过Json数据创建供应商 * @param json * @param bpmInstId * @return */ public CrmProvider createFromJson(String json,String actInstId){ CrmProvider crmProvider=JSON.parseObject(json, CrmProvider.class); //关联流程实例ID crmProvider.setActInstId(actInstId); crmProviderDao.create(crmProvider); return crmProvider; } /** * 通过Json更新供应商的值 * @param json * @param busKey */ public void updateFromJson(String json,String busKey){ CrmProvider orgProvider=get(busKey); if(orgProvider==null) return; CrmProvider newProvider=JSON.parseObject(json,CrmProvider.class); try { BeanUtil.copyNotNullProperties(orgProvider, newProvider); } catch (Exception e) { e.printStackTrace(); } crmProviderDao.update(orgProvider); } /** * 1.通过流程实例创建完成后通过表单的数据创建供应商信息 */ @Override public String processStartAfterHandle(String json, String actInstId) { CrmProvider crmProvider=createFromJson(json,actInstId); crmProvider.setStatus(MStatus.INIT.name()); //返回业务主键给流程实例 return crmProvider.getProId(); } /** * 2.任务审批完成时调用,用于更新供应商的数据 */ @Override public void taskAfterHandle(IExecutionCmd cmd, String nodeId, String busKey) { updateFromJson(cmd.getJsonData(),busKey); } /** * 3.流程成功审批完成时,对供应商的审批状态进行更新 */ @Override public void endHandle(BpmInst bpmInst) { String busKey=bpmInst.getBusKey(); CrmProvider crmProvider=crmProviderDao.get(busKey); if(crmProvider!=null){ crmProvider.setStatus(MStatus.ENABLED.name()); crmProviderDao.update(crmProvider); } } }
步骤三
配置流程定义及流程解决方案,实现以下几点,特别是节点上的数据配置处理
关联审批表单
关联审批人员
在节点上配置调用供应商的数据处理接口
配置完成后,流程启动在审批过程中,就会调用对应的供应商接口实现数据的同步处理了。
若我们需要在供应商管理模块中,点添加的时候,就可以实现启动供应商审批流程,这时我们需要做一点配置。在全局的模块流程绑定模块中,配置供应商模块中的流程,同时在供应商添加管理模块中,调用这个配置处理。如下:
在供应商管理模块中增加以下调用,用来替换原来的添加处理即可,同时增加查看流程实例的信息调用:
//处理添加 function _add(){ //检查是否存在流程配置,若没有,则启用本地的默认配置 _ModuleFlowWin({ title:'供应商入库申请', moduleKey:'CRM_PROVIDER', //failCall:add, success:function(){ grid.load(); } }); } //查看流程审批实例信息 function checkDetail(actInstId){ _OpenWindow({ title:'审批明细', width:800, height:480, url:__rootPath+'/bpm/core/bpmInst/get.do?actInstId='+actInstId }); }
这时我们在这个模块中添加供应商时,即可以显示供应商的填写流程申请入口。如下所示:
同时在供应商管理中可以看到流程审批的相关信息
最终的使用效果如下所示:
相关推荐
伪汇总审批,就是每一条流程都是独立的,这些独立的流程在走到某个节点的时候,这个节点的审批人可以一次性进行多个任务的审批
springboot整合activiti5.22实现页面流程设计项目,可直接启动,自动建表,调用接口http://localhost:8080/models/newModel,创建流程模型后,可直接访问http://localhost:8080/static/modeler.html?modelId=75001...
activiti流程图查看demo
终于将Activiti的流程设计器分离出来,与SpringMVC,spring整合了起来,先把工程分享出来,等有时间了在慢慢讲解具体的整合步骤。工程下载之后直接可以运行,只需要改一下数据库连接。访问...
activiti代码实现审批流程的审批功能,可以正常运行,我已经调试通过
activiti在线流程图设计整合,springboot+activiti流程设计
忙活了一个星期左右,查找各种资料,终于将Activiti的流程设计器分离出来,与SpringMVC,spring整合了起来,先把工程分享出来,等有时间了在慢慢讲解具体的整合步骤。工程下载之后直接可以运行,只需要改一下数据库...
Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于Java的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。 Activiti 流程引擎...
简单介绍了,Springboot 整合activiti6.0,以及整合的demo。demo是一个简单的请假审批流程,如果下载后,bpm文件是乱码,请修改编码方式为utf-8
springboot整合activiti6.0的代码demo,首先按照自己的数据库地址修改springboot地址,然后运行AppBoot启动类,启动工程,然后通过postman工具访问MyController类中的方法即可观察结果。
Activiti流程图部署及流程图部分操作 流程图部署及流程图部分操作 流程图部署有两种⽅式,⼀种是通过classpath,另⼀种是通过zip⽂件 通过classpath⽅式如下 public void deploymentProcessDefinition_classpath() {...
Activiti工作流整合Web流程设计器,Activiti工作流整合Web流程设计器
spring boot整合activiti modeler实例源码下载,spring boot整合activiti modeler实例源码下载
Springboot2整合Activiti5设计器,包括代码和指南,笔者使用的Springboot版本为2.0.3 Release,activiti版本为5.22.0,JDK1.8。
spring整合activiti网页流程设计器所需要的静态资源文件下载
这是activiti业务流程管理的几个小例子。包含了各种需要流程管理的例子,有助于你加深对activiti流程管理的理解与运用。
SpringMVC整合Activiti Modeler必备,请参照:https://blog.csdn.net/u011294519/article/details/81152571食用,要是没有积分可以到我的百度云盘下载:https://pan.baidu.com/s/1XVTammPbIrbzU1MK7TBFOA
activiti5.22 流程设计器绘画的流程图条件线上的字不显示 下载该jar包 替换对应的maven仓库的jar包就可以了
Activiti12流程跟踪任务节点和线高亮显示,能标记流程所走过节点和线为红色,未走过的节点和线不标记,支持驳回和子流程。
SSM整合Activiti開發框架搭建,軟件環境:tomcat8.5,jdk7,Activiti5.18,spring3.2.2。