当前位置:首页 > 文章中心 > 正文内容

zPaaS低代码平台使用介绍:实现流程审批功能

接上一篇《zPaaS低代码平台使用介绍:文件上传下载服务开发》,本篇主要介绍一下如何使用zPaaS低代码开发平台进行流程审批类功能的快速开发。

  1. 开发的功能说明

流程审批功能涉及到工作流引擎,目前低代码平台的工作流引擎集成的camunda,本示例将基于我的休息记录表实现休息记录的管理以及休息申请的会签审批功能,实现的前端功能包括《我的休息记录》以及《申请申请审批》两个功能。


涉及的数据库表为《my_rest_record》,建表语句如下:

CREATE TABLE `my_rest_record` (

`id` varchar(32) NOT NULL COMMENT '主键',

`user_id` varchar(32) NOT NULL COMMENT '用户id',

`begin_time` datetime NOT NULL COMMENT '开时时间',

`end_time` datetime NOT NULL COMMENT '结束时间',

`apply_time` datetime DEFAULT NULL COMMENT '申请时间',

`apply_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '申请原因',

`process_inst_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '流程实例id',

`status` varchar(1) DEFAULT NULL COMMENT '状态',

`status_time` datetime DEFAULT NULL COMMENT '状态时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='我的休息记录';

其中:

  • 用户标识user_id字段:取登录用户的用户标识流程实例标识process_inst_id字段:用户记录工作流引擎的流程实例标识,在工作流引擎流程实例的流程参数中同时记录我的休息记录的主键信息{"applyId":""}
  1. 前提条件

目前低代码平台未直接提供对数据库以及数据库表的管理功能,因此需要使用其他工具,提前创建一个数据库,并在数据库中创建好对应的表。

前提工作:

(1)部署mysql数据库

(2)创建一个database,如demo

(3)在demo库中,使用如上的建表语句,创建my_rest_record表


  1. 准备工作

同《zPaaS低代码平台使用介绍:第一个功能开发》的准备工作,其中流程审批相关的功能及服务放到休息域Rests。


  1. 流程设计

(1)使用工作台左上角的“+”按钮,创建一个流程资源

(2)创建好的流程如下:

(3)延时节点,延时10S执行,并使后续的节点执行异步化,主要用来避免流程启动时的业务逻辑与后续的自动节点逻辑执行顺序错乱的问题。

(4)提交休息申请节点,类型为Service Task,自动节点,主要用于调用后端服务执行相应的逻辑。后端服务通过内置的Java实现类
cn.zpaas.lowcode.be.engine.workflow.ServiceInvokeDelegate以及systemId(业务系统id)、serviceId(服务对象id)、operationId(方法id)三个固定的输入来定位一个后端的服务方法,三个输入参数的值目前未实现界面化的选择功能,需要通过低代码平台找到相应的值并手工填入。为避免执行顺序的错乱,该节点也设置异步执行。对应后端的方法为changeStatus2Approving。

(5)会签节点,两人会签,必须都审批通过才算通过(${nrOfInstances == nrOfCompletedInstances})。涉及审批的人员由流程参数userList传入,示例功能中由前一节点固定两用户id并传入。

(6)两个分支,rejected是流程参数,由前一个节点设置,只要有一个审批驳回审批时,整体流程为驳回;当全部审批通过(没有驳回时),整体流程才算审批通过。

(7)审批通过与审批驳回节点,调用后端服务实现申请状态的变更。对应后端的方法为changeStatus2Approved和changeStatus2Rejected。

  1. 开发后端服务

(1)通过新建《系统功能》或《根据数据库表生成》一键生成后端所有的基础对象。

(2)创建服务对象MyRestRecordService

(3)在MyRestRecordService对象中创建相应的方法如下:

(4)其中addMyRestRecord、deleteMyRestRecordById、modifyMyRestRecordById、
queryMyRestRecordByCondition和queryMyRestRecordById 5个基础的增删改查方法是自动生成的默认方法。其中addMyRestRecord方法是休息记录新增的方法,其业务流增加“对象属性设置”节点,用来设置userId、status和statusTime三个属性的默认值。queryMyRestRecordByCondit方法是休息记录查询方法,其业务流增加“对象属性设置”节点,用于设置默认的查询条件userId,只查询当前用户自己的休息记录。其余三个方法保持生成的状态即可。

(5)新增提交提交审批方法,

该方法首先判断提交审批申请的状态是否正常,如果不正常则抛出“已经存在审批流程或不是待提交状态”的提示;


输入参数

modifyMyRestRecord

status

不等于

字符串比较

固定值

0


输入参数

modifyMyRestRecord

processInstId

不等于

字符串比较

固定值

NULL


输入参数

modifyMyRestRecord

processInstId

不等于

长度比较

固定值

0


然后构建参与会签的用户列表,示例程序中写死两个用户id;

固定值

5df6ddead0d74ae8bb993e9d2af9eb5e

[{"fromAttrPath":"/","toObjectAttr":"[@+]"}]

固定值

6534f4967b3743be86d3f4944f0fe72c

[{"fromAttrPath":"/","toObjectAttr":"[@+]"}]

创建审批流程,创建的时候同时设置流程参数applyId和userList;

输入参数

modifyMyRestRecord

[{"fromAttrPath":"id","toObjectAttr":"applyId"}]

过程数据

userList

[{"fromAttrPath":"/","toObjectAttr":"userList"}]

更新modifyMyRestRecord对象信息;

过程数据

processInstId

[{"fromAttrPath":"/","toObjectAttr":"processInstId"}]

固定值

2

[{"fromAttrPath":"/","toObjectAttr":"status"}]

固定值

now()

[{"fromAttrPath":"/","toObjectAttr":"statusTime"}]

固定值

now()

[{"fromAttrPath":"/","toObjectAttr":"applyTime"}]

调用modifyMyRestRecordById方法保存申请信息;

输入参数

modifyMyRestRecord

[{"fromAttrPath":"/","toObjectAttr":"modifyMyRestRecord"}]

(5)新增add&SubmitMyRestRecord方法,该方法在新增休息记录的时候同时提交审批,生成审批流程。该方法主要调用新增以及提交审批两个方法。

(6)新增changeStatus2Approving方法,该方法主要用于工作流ServiceTask节点调用,用来更新休息记录的状态。

(7)新增approveApply方法,该方法主要用于前端的审批操作,支持审批通过和审批驳回。

(8)新增cancelApply方法,该方法主要用于前端撤加申请。

(9)新增changeStatus2Approved和changeStatus2Rejected方法,该方法主要由工作流的ServiceTask节点调用,用于更新申请的状态为审批通过或驳回。

(10)新增queryApplyToApprove方法,该方法用于前端查询待审批申请;

(11)发布需要由前端调用的服务方法。

(12)详细配置参见示例系统

  1. 开发前端功能

(1)开发《休息管理》和《休息申请审批》功能,同《zPaaS低代码平台使用介绍:第一个功能开发》。

(2)两个功能的绑定对象属性选项基本一致,一个配置好后,可以通过复制功能进行快速同步。特殊配置:申请时间字段支持范围查询、状态字段支持下拉、流程实例Id字段支持弹出查看、用户id字段支持翻译。

{

"default": {

"funcType": "P",

"params": [

{

"valueType": "A",

"value": "processInstId",

"targetAttr": "processInstId"

}

]

}

}

funcType:P为内置的流程查看子功能。

[

{

"sql": "select real_name from sys_user where id=?",

"parent": "",

"datasource": "5195adf9540c4585b413c481bb3fdd6c"

}

]

{

"default": {

"subFuncId": "c6153ad03ac64a9097fc07ba68932b4c",

"params": [

{

"valueType": "F",

"value": "1",

"targetAttr": "status"

}

],

"returnParams": {

"labelAttr": "userName",

"valueAttr": "id"

}

}

}

(3)休息管理功能

(4)休息申请审批功能

(5)最终的效果见示例功能《我的休息记录》和《休息申请审批》

  1. 其他

低代码平台的源码已经提交到GitHub:
https://github.com/zjyzju/zPaaS-lowcode,后续将通过更多的文章,逐步对低代码平台的设计理念/思想、具体的设计、部署以及操作说明进行细化,敬请关注。

另外在一台云服务器上部署了一个演示环境,有兴趣的小伙伴可以通过演示环境进行试用:

访问地址:
https://129.153.118.144:11443

试用账户: demo/adl28m2@ma(a!*D2

demo1/adl28m2@ma(a!*D2

注:(1)该演示环境部署在一台免费的云服务器上,且位于国外,在国内访问响应会比较慢

(2)系统管理子系统的菜单框架引用的@micro-zoe/micro-app@1.0.0-rc.24组件,该组件在不同浏览器中存在兼容性问题,苹果的safari浏览器访问一切正常,但是windows的Edge和谷可的Chrome会存在页面刷不出来的情况,需要多等一会儿(有解决方案的可以邮件发给我,多谢!
https://github.com/jd-opensource/micro-app/issues/1559#issuecomment-2784997902)。

如果有低代码平台以及AI相关的讨论,可以发送邮件到我的邮箱:zjyzju@163.com 。

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/3674.html

分享给朋友:

“zPaaS低代码平台使用介绍:实现流程审批功能” 的相关文章

楼上邻居弹琴跑调到“离谱”,楼下老王坐不住了…

来源:潇湘晨报俗话说“远亲不如近邻”邻里间的互帮互助一直是我们的传统美德近日,山东菏泽“致楼上邻居的一封信”在网上走红一位热心又专业的邻居老王写信对邻居练钢琴提出了一些“指导意见”指出了两首曲子中的错误还附上了自己精心准备的乐谱谁还没有一个练琴的邻居了网友们纷纷分享了自己或者邻居的“陪练”经历这封“...

安装AUTOCAD时,出现错误1606,如何解决?林老师教你2个解决方法

如果安装AutoCAD或者卸载(修改)等操作是,弹出错误1606。无法访问网络位置窗口时候,看下面的操作。网上很多都是千篇一律,修改注册表一类。我试过后,基本上无效,但也不代表其他人无效,所以我将讲解两种方法。我这里没有指明版本,但是你可以试试。因为我旨在成功。第一种:修改注册表打开注册表(WIN+...

CAD常见出错问题与处理方法

1.WIN10原版系统直接无法安装CAD2012,2014等等这是因为WIN10原版系统默认没有自带.net 3.5导致的。卸载高版本的.NET,安装.net 3.52.激活软件时出错运行激活软件,点击Patch时弹窗提示Could not get debug privilege! Are you...

魔兽争霸官方对战平台RPG游戏大厅今日上线

【百万玩家最喜爱的游戏娱乐媒体,把最带劲的娱乐资讯,最权威的游戏推荐,最齐全的手游礼包放进你的口袋,却不用你多安装一个APP,还等什么?赶紧就关注微信号 【kdyx91】 每日七点不见不散~】魔兽争霸官方对战平台(dz.163.com)自上线以来,一直受到《魔兽争霸Ⅲ》爱好者们的喜爱和支持。在1V1...

WIN10系统安装低版本CAD(如2006.2007)时出现错误的解决办法

很多同学在WIN10系统下安装低版本CAD(如2006.2007)时会出现各种问题,比如提示“许可系统出现错误”“没有足够的权限安装本产品”“写入文件时发生错误”等,导入CAD无法正常安装或打开。所以老师结合多年的教学经验整理了非常全面的几种解决办法,希望能帮助各位同学解决困惑(WIN10系统与低版...

记住这些CAD施工图符号、图例,看图不求人

来源:网络整理, 如有侵权请联系删除【定位轴线】1.作用定位轴线是施工中墙身砌筑、柱梁浇筑、构件安装等定位、放线的依据。规定:主要承重构件,应绘制水平和竖向定位轴线,并编注轴线号;对非承重墙或次要承重构件,编写附加定位轴线。2.定位轴线的编号横向定位轴线编号用阿拉伯数字,自左向右顺序编写;纵向轴线编...