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

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

dgx6664个月前 (08-10)文章中心14

接上一篇《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低代码平台使用介绍:实现流程审批功能” 的相关文章

网易公布war3官方对战平台,欠下的正版可以补上了?

游戏葡萄10月14日消息,由暴雪独家授权,网易自主研发的“魔兽争霸官方对战平台”即将发布。与此同时,网易宣布将继续支持魔兽争霸电竞的发展,并邀请世界顶级选手参赛,让玩家再次能欣赏魔兽争霸顶级的比赛,重现WCG时代的辉煌。该平台将包括魔兽争霸3传统的1V1、2V2、5V5DotA及RPG地图等游戏功能...

cad2007修改工具镜像工具使用方法讲解 #学习

大家好,接下来给大家分享一下cad二零零七的镜像工具,也就是对称的工具的用法。·它的工具在修改工具条上的第三个,这个叫镜像。在有一些软件可能会翻译成对称,但是cad会叫做镜像,这个在很多软件都会有。·它的用法是什么?可以直接用鼠标点它,点这个工具以后就会提示选择对象。比如这里这几根线条是要镜像的对象...

Visio 2010中文版软件下载及安装教程

下载地址见公众号内1.鼠标右键【Visio2010 (64bit)】压缩包选择【解压到Visio2010 (64bit)】2.打开解压后的文件夹,鼠标右键【Setup】,选择【以管理员身份运行】3.勾选【我接受此协议的条款】,点击【继续】4.点击【自定义】5.①点击【文件位置】;②点击【浏览】选择软...

去哪能安全、免费下载到正版的office?

嗨,各位木友们好呀,我是小木。我下载软件时有一个习惯,那就是尽量去软件官网找下载链接。有些软件,比如像腾讯、阿里系的,你一上官网就能看到醒目的下载链接,安全又便捷:但是有些软件,比如像微软的office,我保证等你找到链接时,你男朋友都跟人跑了…因此,此时很多人就会去各种奇奇怪怪的网站找下载链接,可...

国内首款自主研发三缸:升仕703F摩托车发布,4.38万元起

IT之家 4 月 29 日消息,感谢IT之家小伙伴 @小猪不配骑 提供的线索,广东大冶摩托车官宣推出升仕 703F 车型,升仕 703F 21 寸高座版现已在官网开售,定价 4.38 万元起。升仕 703F 号称是国内首款自主研发三缸摩托车,官方还表示“不是那种照片发布、PPT 发布、模型发布或发句...

C# 控制电脑睡眠,休眠,关机以及唤醒

最近碰到一个关于芯片测试过程中的问题,这颗芯片是用在笔记本端口上,笔记本客户那边会有一个压力测试,就是频繁的电脑电源状态切换,S0(正常使用的开机状态),S3(睡眠模式),S4(休眠模式)以及S5(关机模式)。当然,主要是客户在压力测试过程中,发现了芯片会不正常的死锁,客户那边将机台寄回来,那么该如...