首页 > 其他分享 >AntFlow系列教程之流程提交

AntFlow系列教程之流程提交

时间:2024-08-27 14:25:31浏览次数:14  
标签:formCode 教程 AntFlow 发起 流程 表单 审批

AntFlow为笔者基于activiti深度定制的一款简单易用的开源低代码流程引擎,类似钉钉工作流.详细介绍可以查看企业级仿钉钉低代码工作流引擎开源啦.项目刚开源不久,希望喜欢的大佬们多点赞关注.后面除了会写文章介绍AntFlow的使用,还会写文章介绍activiti 8的使用.

流程的操作抽象为一个公共接口.提交、审核同意、审核不同意(拒绝)、打回修改都是同一个接口,靠operationType来区分是哪一个操作,同时靠formCode来区分是什么类型的流程,比如是一个请假流程、出差流程或者是一个加班申请流程等。formCode字段意思是表单编号,实际上是一类流程的惟一标识,并不是具体某个流程提交的表单的编号,AntFlow中流程和表单是解耦的,流程并不关心表单数据(能决定流程走向的关键字段除外)。

重申一遍,后面称formCode直接用英文名称呼,或者称作表单编号,但是其本身含义并不是流程对应的表单的编号,而是某一类流程的惟一标识。另一个重要概念流程编号,流程编号为某个运行着的或者已完结的流程的一个编号。formCode可以看作是模板,processNumber可以看作是实例。可以结合面向对象类和实例对象的关系来理解。以demo里的第三方账号申请流程为例,它的formCode为DSFZH_WMA,它下面发起的具体的流程编号为DSFZH_WMA_1,DSFZH_WMA_2,DSFZH_WMA_3 …

请求路径

POST {{serverurl}}/bpmnConf/process/buttonsOperation?formCode=DSFZH_WMA

请求参数

字段名字段类型描述
formCodeString表单编号,代表着具体的要发起的是什么样的流程,比如一个请假流程
operationTypeNumber操作的类型,1代表流程的提交
remarkString流程摘要,看似无关紧要,但是实际业务中不可或缺,后面办理人已办理的流程列表里流程会越来越多,你都办公过谁提交的流程你并不能记得特别清楚
根据实践来看,一般流程摘要定义为申请人姓名-具体业务。比如张三发起的一个请假流程,摘要可以定义为张三-请假流程。首先,根据流程类型过滤掉一批流程
然后再根据摘要过滤掉一批,再根据流程的发起时间大概就能找到具体的流程了。比如张三某年某月发起了一个一万元的加班申请费用,你审批了,但是
由于可能时间很久,你也记不清楚为什么批了这么大额度的加班费用申请流程。你首先进到我的已办流程里面,根据流程类型筛选出加班申请流程,然后
再根据张三的名字搜索出张三申请的流程,找到具体的流程以后,就可以查看当时的审批意见了。(这里也给流程办理人员提个醒,虽然流程审批很繁琐
但是权利也代表着责任。尤其是一些很重要的流程审批的时候且不要只点同意就完事了,一定要填写好备注(审批备注不是这里的remark不要搞混淆了,
这里的remark是流程的摘要信息,是为了方便过滤流程用了,是流程根据一定规则生成的)。不然后面出现争议自己记不清楚了就很难办了。流程审批意见
会在流程审批章节讲

关注remark的延伸是笔者自己的经验之谈,流程备注有个前提就是重要的流程,一些不重要的流程比如办公用品申领没必要填写审批备注。(对于一些不重要的流程,还会设计批量审批功能,审批者可以批量勾选然后一键同意).至于什么样的算重要,什么样的算不重要,一般是流程管理员设定的,审批人自己也可以根据自己的情况酌情添加流程备注,酌情使用一键审批

关于请求参数。以上内容是一些公共的必填参数。实际上并不包含表单数据。前面说过流程引擎和表单是解耦的,没有表单数据也能够正常执行,但是一般情况下没有表单的流程是没有业务意义的。审批人也不知道自己审批的是什么东西。流程表单数据是根据实际流程的业务而定的,可能着随着业务的演变而不断的演变。分离的设计有一个好处就后面如果流程上没有变更只有表单数据的变更,只需要修改表单业务相关代码即可。同样,表单业务没有变动但是审批人要增加或者减少,只需要修改流程配置即可。不需要动到表单相关的代码。表单的业务数据只需要附带到请求参数的json body里即可。流程发起时会回调org.openoa.processmgr.adp.FormOperationAdaptor#submitData 方法,FormOperationAdaptor为抽象接口,具体的流程业务实现该接口,在submitData方法里将表单数据保存到数据库即可。

FormOperationAdaptor为抽象接口,不同的流程业务都需要实现这个接口然后在相应的方法里填充数据。最终FormOperationAdaptor可能会有上百个甚至上千个实现类(都必须是Spring bean),AntFlow执行引擎会根据formCode找到一个惟一的处理对应业务的实现类,在不同的节点回调不同的方法。

如何想看流程配置

如果想知道自己发起的流程配置是什么样子的,可以根据formCode(有些用户可能会有疑问,我怎么知道某个流程的formCode是什么呢,实际上你并不需要知道,流程发起的时候你只需要填写表单数据即可,流程的formCode是发起流程的时候前端自动带过来的),然后进到 流程配置预览页 页面,点击更多-流程配置列表,根据formCode来查看具体的流程配置

流程配置列表里同一个formCode可能会有多条配置项,其中只有一条是活跃的(即激活状态,生效状态),其它的都是不生效状态.之所以会这样是因为流程审批业务可能会发生变更,需要增加审批节点/减少审批节点,增加流程分支条件等.一旦管理员编辑了流程就会生成一条新的配置.最终的结果就是有多条配置,实际上是流程的不同版本.有些流程审批人不对往往是由于流程版本发生变化引起的.比如张三上月发起了一个请3天病假的流程,上个月只需要组长审批,现在需要部门主管审批了,小张就会问到管理员这是为什么.管理员可以根据流程配置生效时间来看线三发起不同流程所处的时间当时生效的流程是什么样子的,这样才能为用户做好解释.不然就是一笔糊涂账,导致用户对流程不信任,最终影响流程的推广使用效果

目前这块设计的还比较粗糙,把所有的流程都罗列出来了,没有过滤选项,没有生效按钮,后面会逐步加上,内测专家用户委屈一下.

点击预览就可以查看流程配置了

流程通用请求参数

流程的提交、审批都是要获取系统的登陆用户(外部系统需要传入),由于AntFlow设计不与任何用户组织相关数据做绑定耦合(可以快改造接入到企业现有的系统中,不少类似竞品都是根据自己做过的业务设计了用户和组织系统,实际上不同企业的用户和组织系统千差万别,有些概念不能完全兼容。造成数据无法同步到流程引擎对应的用户组织系统里,改造公司现有系统来适应流程引擎显然不太现实。此外,即便能够将员工和组织信息同步到流程引擎表,数据同步造成的不一致性也是噩梦,对于中小企业可能影响还不大,对于大型企业处理来说处理同步数据不一致是一件极其领人暴躁抓狂的事。天天有人来找你说员工领导信息不对、部门更改了流程发起的部门负责人还是老部门负责人等等。从最佳实践上来看,后面的Activiti7也移除了act_id_groupact_id_membershipact_id_useract_id_group,几个用户和组织相关的表,主要原因就是上面说的,企业的员工组织信息千差万别,设定的很难满足实际需求,改造有时候是一项很大的成本开支),说了这么多,就是说AntFlow设计很具有前瞻性,放弃了用户和组织设计。由于没有和任何系统融合,流程引擎没有任何与员工和组织相关的数据,需要mock

请求的时候在请求头上带上userId字段,带表用户的Id,值必须在示例表t_user表里面(生产中可以替换为自己的员工表,AntFlow只用到了员工的Id和姓名字段,姓名主要是展示用的)

通过demo页发起流程

点击更多tab,里面有一个发起测试按钮,点击发起测试,进入到流程发起页面,填写完表单通过基本验证之后,就可以点击按钮发送流程发起测试了,f12查看请求的数据

curl请求示例

curl --location 'http://localhost:7001/bpmnConf/process/buttonsOperation?formCode=DSFZH_WMA' \
--header 'userId: 21' \
--header 'Content-Type: application/json' \
--data '{
    "formCode":"DSFZH_WMA",
	"operationType": 1,
	"remark": "中通云账号申请",
    "accountType":"1"
}'

标签:formCode,教程,AntFlow,发起,流程,表单,审批
From: https://blog.csdn.net/zypqqgc/article/details/141504969

相关文章

  • delphi初级教程之delphi断点调试一
    所谓断点,就是在程序代码的某一行上设置一个标记,程序执行到这里将暂停,由调试器接管对程序的控制。使用断点与使用【RuntoCursor】命令有些相似,都是执行到某一行后暂停。不同的是,程序中可以设置多个断点并且能够给断点设置条件。断点通常设置在有疑点的区域。在遇到断点之前,程序......
  • 【开源分享】PHP工单管理系统源码 带搭建教程
    一、设备报修工作内容1.工单管理:设备报修系统可以将设备故障统计为工单并对工单进行汇总管理。将工单数据进行归类,将故障分类进行查看、统计、分析等等。2.设备状态:工单可通过用户上报设备状态数据进行查看,维修工程师在维修设备前,可以进行设备信息查询。3.设备状态:设备运行......
  • 在线客服系统PHP源码免费开源 (搭建教程+全新UI)
    安装环境宝塔面板  php>8.0 mysql5.7安装搭建1.建站点上传程序2.建数据库 导入数据3.网站目录/public伪静态设置4.修改数据库配置信息5.修改config.js里的配置信息6.启动wokerman命令更详细的搭建教程请下载源码根目录下 安装教程.docx产品亮点:自动回复......
  • 24年最新最详细Python安装教程,附安装包!感觉收藏!
      Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,......
  • 【ROS教程】ROS常用API讲解
    @目录1.节点初始化2.话题通信2.1创建发布者对象2.2消息发布2.3创建订阅者对象3.服务通信3.1创建服务对象3.2创建客户对象3.3客户发送请求3.4客户对象等待服务4.回旋函数4.1spin4.2spinOnce5.时间5.1时刻5.1.1获取当前时刻5.1.2设置时刻5.2时间间隔5.2.1设置时间间......
  • Adobe InCopy(IC)文字处理软件win/mac软件下载安装 系统要求和使用教程
    目录一、AdobeIC软件介绍1.1软件概述1.2软件特点1.3适用范围二、系统要求2.1Windows系统要求2.2macOS系统要求三、安装步骤3.1Windows系统安装步骤3.2macOS系统安装步骤四、使用教程4.1基本操作4.2高级功能4.3注意事项一、AdobeIC软件介绍1.1软......
  • 从Flow小白到专家,Winter '25让流程自动化更简单!
    Salesforce平台每月提供超过1万亿次自动化服务,每月可节省超1090亿小时,预计为客户创造超2万亿美元的商业价值。这是一组不可思议的数字,充分展现了软件自动化的力量。Flow是整个Salesforce平台自动化的未来,一直在将大量资源用于开发Flow创新。本次Winter'25中自然也少不了Flow的......
  • c++教程之三大结构
    C++顺序结构教程在编程的世界里,顺序结构是构建所有程序的基础。无论是简单的脚本还是复杂的应用程序,它们都是由一系列按照特定顺序执行的指令组成的。C++,作为一种高效、灵活的编程语言,同样遵循这一原则。本教程将深入介绍C++中的顺序结构,包括变量与数据类型、运算符与表达式、......
  • 在Windows上搭建自己的Git服务器的图文教程
    一、简介以前,在别家的公司,一般早就把源代码管理工具搭建好了,很少有机会自己搭建一套。最近,公司也许要把现在不少的源码进行管理,于是我打算自己搭建源代码管理服务器。说起源代码管理,当然有很多中解决方案,我个人偏向搭建一个Git服务器。毕竟这个自己用的比较多,也熟悉。而且,现在......
  • Adobe Lightroom Classic LRC v13.5 下载及安装教程 (图像后期处理软件)
    前言AdobeLightroomClassic为您提供强大的一键式工具和高级控件,使您的照片看起来很棒。轻松整理桌面上的所有照片,并以多种方式共享。使用LightroomClassic,您需要具备所有桌面编辑工具,才能充分发挥照片的作用。增强色彩,使沉闷的镜头充满活力,去除分散注意力的物体,并拉直歪斜的镜......