请假申请
以(请假申请)流程为示例,进行流程配置讲解。
1. 介绍
本案例,主要指用户通过“在表单中,自定义按钮”启动流程的方式。
下面,以(请假申请)流程为示例,进行配置讲解。
- 案例需求
- 案例流程
- 注意事项
本案例是模拟XX单位的请假流程:
申请人发起请假申请,由部门经理审批后,当请假天数小于等于3天时,直接结束流程;
当请假天数大于3天时,经部门经理审批后,再由总经理审批,经总经理审批后,结束流程。
(1)新增流程时,状态默认:编制。
(2)流程启动后,状态为:审批中;该状态下数据不允许保存、提交。
(3)流程结束后,状态为:审批通过;该状态下数据不允许保存、提交和删除。
2. 开发平台的配置
在开发平台中,定义业务构件。
命名规范:
构件编码 | 构件名称 | 业务分类 | 作用 |
---|---|---|---|
ydg_leave | 请假申请 | 业务构件 | ① 定义数据表 ② 初始化基础数据 ③ 日常业务表单管理 |
在进行VBase的流程配置之前,需要先添加引用:
添加引用 | 作用 |
---|---|
vbase_workflow_facade(VBase_流程管理) | 必须添加,配置流程启动时需要使用。 例如:打开 "流程启动" 窗体启动流程,该窗体在 vbase_workflow_facade(VBase_流程管理) 构件中。 |
LoginComp(登录构件) | 主要用于获取当前登录用户信息赋值给表相关系统和业务字段(例如:申请人、新增人、修改人相关字段)userName:用户名称 userId:用户Id orgName:机构名称 orgId :机构Id |
在当前构件【引用】文件夹下,右键“增加引用”,依次选择LoginComp(登录构件)
、vbase_workflow_facade(VBase_流程管理)
构件添加至引用,确定即可。
引用构件的方法使用,以及窗体使用,可以查看:流程常用方法-方法信息。
配置视频:
详细配置:
- 1. 实体定义
- 2.界面设计
- 3.方法定义
- 4.方法实现
(1)
leave(请假申请)
:通过表生成对应的实体编码、实体字段和字段类型。(2)
ENT_QueryPanel(查询条件过滤实体)
:通过查询面板控件绑定数据源自动生成(不允许修改和删除,除非查询面板控件删除了,才可删查询实体)。在该窗体中,依次添加了以下事件:①窗体加载事件 ②查询过滤事件 ③新增事件删除事件 ④业务单号链接事件 ⑤自定义加载数据事件
info自定义加载数据方法,主要是窗体加载事件和查询过滤事件配置业务逻辑一样。
因此,定义加载数据方法后,窗体加载事件和查询过滤事件通过执行方法执行该方法即可。
从数据获取数据到实体:根据查询条件,从数据获取数据到实体,并设置排序字段。
(1) 打开窗体并返回数据
(2)IF:BR_OUT.BR_OpenComponentReturnData1.isConfirmSelectionOnClose
打开请假申请窗体, 提交业务表单数据,启动流程后,确定退出,将返回True值。
(3)执行方法_loadData(加载数据):执行“加载数据(loadData)”事件,刷新数据。
配置视频:
详细配置:
- 1. 窗体输入
- 2. 实体定义
- 3. 界面设计
- 4.方法定义
- 5.方法实现
编码 名称 类型 初始值 描述 bizId
流程业务Id 文本 流程字段。
主要在流程定义时,设置业务关联配置,将业务表id映射给流程变量bizId,
那么在流程任务对应的待办、已办任务打开流程框架时,加载对应的业务数据。mainId
主表Id 文本 主要用于主页面编辑、查看数据时打开编辑窗体进行传参 leave(请假申请):通过表生成对应的实体编码、实体字段和字段类型。
在本示例中,“业务单号、申请人、申请机构、申请日期”控件,均设置只读。
方法变量:
规则链:
bizId流程业务Id或者mainId主表Id是否为空,然后执行不同的活动集。其过滤条件的业务含义如下:
(1)IF:IsEmpty(@bizId)&&IsEmpty(@mainId):bizId且mainId为空,则即流程没启动(第一步),需要填写表单(新增数据操作)。
① 执行方法API_QueryLoginInfo(API查询登录信息)——该方法在
LoginComp(登录构件)
构件中,因此前面需要引入该构件用于获取当前登录用户信息,赋值给方法变量,再根据方法变量赋值给对应的实体字段。
② 新增实体记录
添加“新增实体记录”规则,并且设置缺省值字段(申请人、申请部门、申请状态等)。
③ 单据编号生成
【业务单号】字段通过单据编号自动生成。
(2)Else:bizId或mainId不为空,即在审批环节打开表单,或者在列表页点击【业务单号】打开表单,需要加载对应的表单数据。
① 从数据库获取数据到实体
结合函数IsNullOrEmpt(),若bizId不为空,则根据bizId作为过滤条件加载数据;若bizId为空,在则根据mainId作为过滤条件加载数据。
② IF:
[leave].[bizStatusCode] <> "T"
控件属性设置:非编制状态,设置字段控件只读、按钮控件不显示(按需设置使能或不显示)。
(1)必填项检查:检查“业务单号、申请人、请假天数”字段。
(2)IF:必填不通过:中断当前规则链。
(3)保存实体到数据库:提交启动流程前,需保存数据。
(4)打开窗体并返回数据:打开流程启动窗体,设置参数传递————该窗体在
vbase_workflow_facade(VBase_流程管理)
构件中,因此前面需要引入该构件
BizId(业务记录ID)
:业务表单Id字段,业务的标识字段,通过唯一的业务ID标识业务流程(流程框架启动),必须赋值。
topic(待办任务与流程实例标题)
:格式可以自定义,用于待办任务和已办任务等环节查找流程时,标识流程任务名称。
BizComponentId(业务窗体Id)
:构件编码.窗体编码,用于指定业务表单窗体。
BizDataXML(业务快照数据XML)
:VConvertEntityToXML("实体编码"),够记录流程每一步业务数据的值,即可了解流程审批过程业务历史情况,按需设置。
processCode(流程编号)
:在流程管理中,进行流程定义时,对应的流程编号参数——查看流程定义。注意:若不设置
processCode(流程编号)
参数,当存在多个流程定义匹配同一个业务表单,在启动流程的时候需要手动选择具体的流程定义;若只有一个流程定义匹配一个业务表单,则可以不设置该参数。(5)IF : BR_OUT.BR_OpenComponentReturnData1.isConfirmSelectionOnClose=False:打开【流程启动】窗体,未启动流程取消退出,将返回False值。
① 中断规则:退出当前规则链。
(6)显示设置的提示信息:“提交成功!”。
(7)退出窗体:确定退出。
在流程业务中,一般需要根据提交、审批等不同环节,修改对应的业务表状态字段,在流程图定义时设置流程事件时选择对应的构件方法。
“updateLeaveBizStatus修改请假申请业务状态”事件
- 方法输入
- 方法输出
- 规则配置
编码 名称 类型 初始值 必须 描述 ids
数据Ids 文本 #bizId ✔ 多个Id用英文逗号隔开 bizStatusCode
状态编码 文本 "B" ✔ T-1\编制;B\1\审批中;E-9\审批不通过;F\9\审批通过;C\0\已作废;A\8\修订中;R\2\退回 bizStatus
状态 文本 "审批中" ✔ T-1\编制;B\1\审批中;E-9\审批不通过;F\9\审批通过;C\0\已作废;A\8\修订中;R\2\退回
编码 名称 类型 初始值 描述 isSuccess
是否成功 布尔 true 默认为True errorCode
错误代码 文本 000000:成功;0040XX:参数错误;0010XX:未登录;0020XX:未授权;0050XX:方法内部错误 errorMessage
错误信息 文本 (1) IF:只要有一个入参为空
① 给界面实体/控件/变量赋值:给方法输出赋值(在本示例中,方法输出设置没有直接体现,主要是根据开发规范,在日志查询、调试等可以获取对应的信息)
② 中断规则:中断当前规则链
(2)修改数据库中的记录:根据方法输入,修改对应的状态字段
(3)给界面实体/控件/变量赋值:给方法输出赋值
3. 执行平台的配置
使用超级管理员(账号sa)身份登录控制台,或者将【流程管理】菜单授权给系统管理员登录配置中心,进行流程管理的配置。
往下学习之前,须熟悉V-AppBase前几节课程的知识,以及一些数据的准备:
在"业务系统初始化配置 → 流程管理 → 流程定义 → 流程定义"中打开流程定义,进行相关配置。
(1)流程目录管理
流程目录,是为了更好地管理流程的类型,可根据不同的业务创建不同的目录。
(2)新增流程
选择对应的流程目录,新增请假申请流程。
在"业务系统初始化配置 → 流程管理 → 流程定义 → 业务关联配置"中打开业务关联配置,进行相关配置。
(1)选入关联业务
打开“业务关联配置”页面,点击“选入关联业务”按钮,在“关联业务表及窗体选择”弹窗中,选择开发平台中对应的请假流程构件、窗体和业务表。
(2)配置变量映射
在“流程变量关联业务字段配置”弹窗中,配置流程变量与业务表中对应字段关联。
点击”配置变量映射“后,将打开【流程变量关联业务字段配置】窗体,匹配对应的流程变量。
在"流程定义"中,选择流程进行活动定义。
info修改流程定义前,需要先停用流程才可保存修改结果(首次定义流程,未启用,流程状态为“编辑中”)。
根据需求,定义流程图,并且设置相关活动节点。
1. 流程图定义
2. 人工节点设置
根据需求,修改活动名称,设置选择执行人(在本案例中,部门经理选择机构岗位人员,总经理由外部指定执行人)。
(1)部门经理:选择对已的部门经理岗位(在 准备工作中,已设置基本的机构、岗位、人员基础数据)
(2)总经理:选择对已的部门经理岗位(在 准备工作中,已设置基本的机构、岗位、人员基础数据)
3. 判断节点条件设置
在判断节点中,选择分支线,定义名称,设置判断条件。
(1)请假天数 <=3
(2)请假天数 > 3
4. 流程事件设置
在流程图定义中,设置流程的相关事件,用于修改流程业务状态。
在本案例中,流程启动后和流程结束后,调用同一个构件方法,实现修改状态的功能。
(1)流程启动后事件,参数配置:
(2)流程结束后事件,参数配置:
1. 待选菜单项管理
在业务系统化配置 → 基础设置 → 待选数据 → 待选菜单项管理 中,选入在开发平台中定义的构件菜单【请假申请】。
2. 菜单管理
在业务系统化配置 → 菜单管理 → 菜单管理中设置用户菜单子目录,然后选入菜单项。
3. 菜单授权
在本示例中,将【请假申请】菜单,授权给所有人使用。在实际项目中,可以根据需求进行授权。
一般用户登录,进行“请假申请”启动流程。
本案例请假申请天数大于3,流程审批顺序:员工申请(开始)→ 部门经理审批 → 总经理审批 → 结束。
启动流程时,是否传递
processCode(流程编号)
参数的效果: