gitee源代码地址
后端代码: https://gitee.com/nbacheng/nbcio-boot
前端代码:https://gitee.com/nbacheng/nbcio-vue.git
github源代码地址
后端代码:https://github.com/nbacheng/nbcio-boot.git
前端代码:https://github.com/nbacheng/nbcio-vue.git
目前只提供mysql的数据库,但代码也兼容oracle11g ,同时也在oracle11g上测试过。
因为系统是基于jeecg-boot 3.0版本基础上,所以可以参考jeecg-boot相应的安装与使用手册进行安装与调试。
首先安装nbcio-boot.sql文件,生成mysql数据,同时在dev进行配置自己的数据库服务器地址与端口,我这里用的minio文件服务器,也可以根据需要用本地或其它oss服务器。
本系统flowable版本是6.7.2。
工作流,首先需要定义一个流程模板,这里用web版流程设计器编辑,得出的是一个流程定义的xml对象,叫流程模板,它的key叫流程定义key,这个是代表一套流程模板的,同一个key能有多个版本的模板。每个版本的模板对象都有个id,这里叫流程定义id。通常,我们是根据key来获取最新版本的模板启动一个流程(当然,也可以根据定义id来开启一个流程,正常逻辑应该是取最新去,又指定的业务情景就使用id),这个被启动的流程,这里叫流程实例,同样,它也有个id,我们叫流程实例id 。
对于用户任务节点,同样的,有两种,一个是定义模板中取来的,里面的信息是事先定义好的,不变的,里面的id就是我们设计流程的时候输入的id。一个是流程实例中取来的,这个对象的id是自动生成的,一般就是uuid。
这里流程分三种,一种是关联web定义表单的流程,一种是根据不同业务自己进行定义的业务流程,还有就是通过钉钉审批的流程。
对业务流程所定义的流程与业务的关联关系表为flow_my_business中:
data_id 业务数据id
process_definition_key 流程定义key
process_definition_id 流程定义id
process_instance_id 流程实例id
task_id 流程实例中的待处理节点id,就是uuid那个
task_name 这个节点的名字,咱们输入的中文的那个
task_name_id 这个节点的定义中的id,比如第一个任务节点为发起人的节点。
操作流程实例的时候,用的就是实例的id;操作流程模板,用的便是定义id。
注意:流程模块中,凡是涉及到用户的,使用username做唯一Key,即用户名,并非id,另外流程定义中第一个用户任务一定要是申请发起人的节点。
通过web图形化的流程模型定义,如下
这里流程分成几类,OA、财务、钉钉薪资、钉钉人事和自定义业务,当然这些也可以根据自己需要进行定义。
普通的OA流程,关联web定义表单,流程分类要选择OA
一般每个节点都采用用户任务为多,更多可以参考flowable的相关说明。
其中OA和财务可以关联表单配置的表单定义,钉钉薪资与钉钉人事是通过钉钉进行审批,定义好后可以直接进行提交审批,自定义业务是可以配置自己定义业务表单进行审批,也可以在业务表单里进行流程模块的关联。
通过web图形化的表单设计,满足一些简单的业务表单需求。
通过上面的流程模型,可以在OA和财务分类的流程模板关联这里定义的表单。
对于自定义业务表单的流程需要在这里进行定义(当然在相应的代码也要进行单独编写),主要涉及业务表单名称,服务名称,前端路由地址,组件注入方式等,可以参考给出的两个例子来参考。
同时可以关联流程,把自定义业务表单与流程模板进行关联,以便后面审批过程中通过这个流程模板进行流转。
这个是管理员才有的功能,普遍用户没有这个。
这里可以看到所有人发起的任务,同时可以对任务进行委派,转办和取消申请等功能操作,以便对一些异常流程进行处理。
备注:委派:是将任务节点分给其他人处理,等其他人处理好之后,委派任务会自动回到委派人的任务中 。
转办:直接将办理人assignee 换成别人,这时任务的拥有着不再是转办人,而是为空,相当与将任务转出。
这里就是我发起的任务都在这里,可以对任务取消申请或删除等操作,看到的只有我自己发起的任务。
就是需要你办理的任务列表,一般是通过流转流到你这里的任务,需要你进行处理,
比如上面对当前待办的任务可以进行审批,退回与驳回的功能
备注:驳回就是跳转到当前节点的上一个节点,只能是回到上一个节点,驳回可以回退到子流程开始。
回退:回退只能退回到串线路线上,不能回退到子流程。
不过目前平台还不支持子流程。
通过自己办理的任务列表。
这里提供两个自定义业务的流程案例,一个是单表的,一个是主从表的。这些都要结合业务进行代码级的修改。
4.1 单表流程
这里是一个人员管理的例子,可以直接通过业务表单进行流程审批,提交审批后就进入正常的流程审批了。
4.2 主子流程
这里提供了一个主从表的例子,也与上面类似的流程提交方式,同时这里从表录入支持类似ERP功能的选择物料等。
增加了待办消息,对于待办同时往待办消息里添加一个待办消息,可以通过这里进行处理审批流程,对于结束等流程进行消息通知。
这里提供了一个简单的例子,录入薪资的一些数据,根据这个数据进行分类统计提交钉钉进行审批。
同时可以对钉钉流程进行跟踪
当然要满足上面要求,需要对钉钉的相关参数进行设置,
#第三方APP对接
third-app:
enabled: true
type:
#钉钉
DINGTALK:
enabled: true
# appKey
client-id: dingrclmpcbhnquxtpsi
# appSecret
client-secret: UT9T-zTD82wqMZc_IJl5qoSUaijoy1_YvN1MKU_7a-_cf9SEbB9erZpZ8wq9HKrl
agent-id: 1105646298
根据自己的参数进行dev里设置,同时在钉钉管理里进行模板设置,比如:
这样提交到手机端,可以看到如下类似界面
主要完善流程的一些功能,同时增加OA、CRM和ERP的相关功能。