流程应用启动流程
在请假申请案例的基础上,采用业务单据实例-流程应用启动流程。
1. 介绍
往下学习之前,比须熟悉【案例-请假申请】的配置过程,约30分钟。
以【案例-请假申请】为例,在该案例的基础上,采用业务单据实例-流程应用启动流程,指用户通过“业务框架按钮”,调用API去启动流程应用的流程配置。
下面,在案例-请假申请的基础上,主要针对新功能部分进行配置讲解。
2. 开发平台的配置
开发平台配置,主要新增两个知识点:
- 业务单据实例:通过业务动作按钮保存业务数据和提交流程、设置业务框架状态属性等。
- 流程应用:通过配置流程应用启动流程的方式,使用流程应用配置流程(相对于流程定义启动流程)功能范围更广,可以满足多种业务场景的需求。
本案例,需要添加的引用:
添加引用 | 作用 |
---|---|
vbase_prd_workflow(vbase_产品化流程管理) | 必须添加,配置流程应用启动时需要使用。 例如:通过执行 API_WorkFlowOpenStartApplicationWindow(打开启动流程应用窗体) 方法启动流程,该方法在vbase_prd_workflow(vbase_产品化流程管理) 构件中。 |
LoginComp(登录构件) | 主要用于获取当前登录用户信息赋值给表相关系统和业务字段userName:用户名称 userId:用户Id orgName:机构名称 orgId :机构Id |
在本案例中,新增vbase_organization_facadeVBase_组织机构
、vbase_prd_workflow(vbase_产品化流程管理)
引用。
引用构件的方法使用,以及窗体使用,可以查看:流程常用方法-方法信息。
在本构件中,选择【业务动作】菜单,按开发规范定义业务动作【保存】、【提交】。
命名规范:
业务动作编码 | 业务动作 |
---|---|
action_submit | 提交 |
ep_action_submit | 提交(业务动作扩展实现) |
action_save | 保存 |
ep_action_save | 保存(业务动作扩展实现) |
在案例-请假申请的基础上,主要更新页面设计,导入业务动作,然后重新定义方法。
- 1.窗体输入
- 2.实体定义
- 3.界面设计
- 4. 导入业务动作
- 5. 方法定义
对比案例-请假申请的配置,在本案例中新增多一个窗体输入。
私有 编码 名称 类型 初始值 描述 √ bizId
流程业务Id 文本 流程字段。
主要在流程定义时,设置业务关联配置,将业务表id映射给流程变量bizId,
那么在流程任务对应的待办、已办任务打开流程框架时,加载对应的业务数据。mainId
主表Id 文本 主要用于主页面编辑、查看数据时打开编辑窗体进行传参。 parentWindowInstanceCode
来源窗体实例编码 文本 用于执行来源窗体方法。
本案例中,主要是保存数据时执行主窗体的方法,用于判断参数,刷新主窗体数据。与案例-请假申请的配置一样,添加【leave(请假申请)】实体:通过表生成对应的实体编码、实体字段和字段类型。
在案例-请假申请的基础上,更新页面设计。
在本示例中,业务单数据保存、提交流程均通过业务动作实现,因此界面去掉【提交】按钮。
导入后,在窗体方法中,会有对应的业务动作扩展实现:
在案例-请假申请的基础上,自定义保存、提交方法、以及使用产品化函数,设置业务框架属性。
(1)方法输入
编码 名称 类型 枚举值 描述 bizCodeTitle
单据编号标题 文本 单据编号;
业务编号;
编号为null则不修改,
为 " " 则不显示单据编号标题bizCode
单据编号 文本 为null则不修改,
为 " " 则不显示单据编号bizStatusTitle
单据状态标题 文本 单据状态;
业务状态;
当前状态;
状态为null则不修改,
为 " " 则不显示单据状态标题bizStatus
单据状态 文本 编制:T;
审批中:B;
审批不通过:E;
审批通过:F;
已作废:C;
修订中:A;
退回:R为null则不修改,
为 " " 则不显示单据状态bizStatusCode
单据状态编号 文本 T:编制;
B:审批中;
E:审批不通过;
F:审批通过;
C:已作废
A:修订中
R:退回为null则不修改,
用于控制表单状态bizStatusColor
单据状态颜色 文本 #000000:黑色;
#FF0000:红色;
#FFFF00:黄色;
#00FF00:绿色;
#0000FF:蓝色为null则不修改,默认为#FF0000
支持常见颜色编码和16进制颜色编码(2)规则
① 执行方法_setFrameworkBizTitle(设置框架业务状态信息)
② 执执行方法_setFrameworkBizStatus(设置框架业务状态属性)
(1)方法输入
编码 名称 类型 枚举值 描述 bizCodeTitle
单据编号标题 文本 单据编号;
业务编号;
编号为null则不修改,
为 " " 则不显示单据编号标题bizCode
单据编号 文本 为null则不修改,
为 " " 则不显示单据编号bizStatusTitle
单据状态标题 文本 单据状态;
业务状态;
当前状态;
状态为null则不修改,
为 " " 则不显示单据状态标题bizStatus
单据状态 文本 编制:T;
审批中:B;
审批不通过:E;
审批通过:F;
已作废:C;
修订中:A;
退回:R;
未发布:T;
已发布:F为null则不修改,
为 " " 则不显示单据状态bizStatusColor
单据状态颜色 文本 #000000:黑色;
#FF0000:红色;
#FFFF00:黄色;
#00FF00:绿色;
#0000FF:蓝色为null则不修改,默认为#FF0000
支持常见颜色编码和16进制颜色编码(2)规则
PrdSetBizFormStateInfo()函数的具体使用,请参考流程产品化函数。
(1)方法输入
编码 名称 类型 枚举值 描述 bizStatusCode
单据状态编号 文本 T:编制;
B:审批中;
E:审批不通过;
F:审批通过;
C:已作废
A:修订中
R:退回为null则不修改,
用于控制表单状态(2)方法变量
编码 名称 类型 默认值 描述 isEnable
是否可编辑 布尔 (3)规则
① IF:IsEmpty(BR_IN_PARENT.bizStatusCode)
中断规则:入参为空,则中断当前规则链。
② 给界面实体/控件/变量赋值【是否可编辑】
③ 执行函数/表达式【设置框架状态】:
PrdSetFrameWindowEnable(BR_VAR_PARENT.isEnable)
PrdSetFrameWindowEnable()
函数,主要是设置框架窗体全局使能属性控制方式,参数True则框架窗体全局使能,否则False为不使能。主要用于通过【请假申请列表】窗体,打开【请假申请】业务框架时,根据业务状态判断是否允许编辑,则控制框架窗体全局使能。
该函数的具体使用,请参考流程产品化函数。
④ 执行函数/表达式【设置窗体状态】:
PrdSetBizWindowEnable(BR_VAR_PARENT.isEnable)
PrdSetBizWindowEnable()
函数,主要是设置业务单窗体全局使能属性控制方式,参数True则框架窗体全局使能,否则False为不使能。主要用于通过在待办任务、已办任务中,审批流程打开【业务单流程操作】窗体在家对应的业务单窗体时,根据业务状态判断是否允许编辑,则业务单窗体全局使能属性。
该函数的具体使用,请参考流程产品化函数。
在本案例中,不管新增或加载的逻辑,均执行方法_setFrameworkAttribute(设置框架属性),根据状态判断业务框架属性或窗体属性,然后设置业务单相关信息(包括:单据编号、业务状态等)
执行方法_setFrameworkAttribute(设置框架属性):
① 必填项检查
② IF:!BR_OUT.BR_CheckRequired1.isCheckRequiredOK
中断规则:必填不通过中断所有。
info
- 中断当前:仅中断当前规则链的执行(若后续存在其他规则链,将继续执行)
- 中断所有:中断所有规则链的执行(若后续存在其他规则链,也不再执行);客户端:不回滚事务,服务端:回滚事务。
本案例中,由于提交和业务扩展实现保存(save)均需要执行保存逻辑,因此自定义保存(save)方法,因此保存(save)方法中必填不通过时,需要中断所有规则链;
若仅仅中断当前规则链,提交(submit)和业务动作扩展实现(保存)执行保存(save)自定义方法后,必填不通过也会执行后续的规则,不符合本案例的需求。
③ 保存实体到数据库【请假申请】
④ 执行方法_setEditInfo(设置修改信息(编辑窗体调用))
该方法在【请假申请列表】主窗体中定义,用于编辑窗体保存成功时,执行主窗体该方法传递相关参数,主窗体再根据参数判断进行数据刷新。
由于跨窗体执行方法,因此需要设置方法所在窗体的窗体实例,窗体实例参数在主窗体打开编辑窗体时传入。
(1)方法变量
本案例通过执行流程应用方法启动流程,因此需要定义isSuccess参数接收返回值;
同时,由于本案例根据请假天数判断流程执行分支,因此使用流程应用启动流程时,需要传入对应的流程变量信息。
(2)规则
① 执行方法_save(保存)
② 新增实体记录【流程变量-请假天数】
定义流程变量名称,需要和配置中心定义流程变量一一对应,请参考配置中心设置。
③ 执行方法_API_WorkFlowOpenStartApplicationWindow(打开启动流程应用窗体)
该方法在引用
vbase_prd_workflow(vbase_产品化流程管理)
构件中,因此需要引入该构件。设置入参如下:
BizId(业务记录ID)
:业务表单Id字段,业务的标识字段,通过唯一的业务ID标识业务流程(流程框架启动),必须赋值。
topic(待办任务名称)
:格式可以自定义,用于待办任务和已办任务等环节查找流程时,标识流程任务名称。
StarUserId(流程发起人ID)
:一般是当前登录用户Id(或启动流程用户Id)。
StarUserName(流程发起人名称)
:一般是当前登录用户名称(或启动流程用户名称)。
bizComponentCode(业务窗体构件编码)
:GetComponentCode()
,用于指定业务表单窗体所在构件编码。
bizWindowCode(业务窗体编码)
:GetWindowCode()
,用于指定业务表单窗体编码。
snapshotData(业务快照)
:PrdGetCurrentWindowSnapShow()
——流程产品化函数。。
variableEntity(流程变量信息)
:映射定义方法变量(流程变量实体)。
processCode(流程编号)
:在流程管理中,进行流程定义时,对应的流程编号参数——查看流程定义。注意:若不设置
processCode(流程编号)
参数,当存在多个流程定义匹配同一个业务表单,在启动流程的时候需要手动选择具体的流程定义;若只有一个流程定义匹配一个业务表单,则可以不设置该参数。同时需要返回值。
④ IF:BR_VAR_PARENT.isSuccess==False——未成功启动流程应用
中断规则:中断当前规则链。
⑤ 显示设置的提示信息【提交成功】
⑥ 退出窗体:确定退出。
在本案例中,由于使用打开业务框架,通过业务动作按钮启动流程,因此需要定义业务单据实例。
在【请假申请列表】窗体中,通过“新增”或“业务单号”打开业务框架,进行业务单提交、编辑、查看。业务单据实例概念说明,请参考业务单据实例。
1. 窗体输入
由于本案例,在编辑窗体保存数据时 ,不直接配置退出窗体规则,若直接关闭窗体,则需要根据保存情况刷新主页面数据。
因此,在【请假申请列表】窗体中,需要定义相关窗体输入和方法设置保存状态。
私有 | 编码 | 名称 | 类型 | 初始值 | 描述 |
---|---|---|---|---|---|
√ | currentWindowInstanceCode | 当前窗体实例编码 | 文本 | 当其他窗体需要执行当前窗体方法时,传递给目标窗体。 | |
isEditData | 编辑数据标识 | 文本 | Flase | 用于判断编辑窗体是否编辑了数据,主页面根据返回值为true刷新数据 |
2. 方法定义
在案例-请假申请的基础上,修改以下几点:
- 窗体加载事件:获取
currentWindowInstanceCode(当前窗体实例编码)
- 更改“新增”单击事件:设置打开业务框架,而不是打开窗体。
- 更改“业务单号”链接事件:设置打开业务框架,而不是打开窗体。
- 新增
setEditInfo设置修改信息(编辑窗体调用)
自定义方法:主要由【请假申请】窗体保存时执行,给窗体输入isEditData(编辑数据标识)
赋值True,新增和编辑场景根据窗体输入isEditData(编辑数据标识)
为True则刷新数据。
1. 窗体加载事件
2. 新增事件
① 打开业务框架
② IF:@isEditData==True
在业务框架【请假申请】中,保存逻辑将执行本窗体自定义的setEditInfo设置修改信息(编辑窗体调用)
方法,设置窗体输入isEditData
编辑数据标识为True。
则刷新数据,执行执行方法_loadData(加载数据)。
3. 业务单号链接事件
与新增事件类似,只是编辑或查看场景,需要传递业务表id数据。
① 打开业务框架
② IF:@isEditData==True
执行方法:执行方法_loadData(加载数据)。
4. setEditInfo设置修改信息(编辑窗体调用)事件
主要由【请假申请】窗体保存时执行,给窗体输入isEditData(编辑数据标识)
赋值True,新增和编辑场景根据窗体输入isEditData(编辑数据标识)
为True则刷新数据。
(1)方法输入
编码 | 名称 | 类型 | 默认值 | 描述 |
---|---|---|---|---|
isEnable | 是否可编辑 | 布尔 | False |
(2)规则
3. 执行平台的配置
使用超级管理员(账号sa)身份登录控制台,或者将【流程管理】菜单授权给系统管理员登录配置中心,进行流程管理的配置。
往下学习之前,须熟悉V-AppBase前几节课程的知识,以及一些数据的准备:
在案例-请假申请的基础上,主要讲解通过流程应用配置流程的过程。
在本案例中,只需要设计流程图,相关流程活动节点属性,无需设置,主要通过流程应用设置。
info
- 若在流程图定义中,设置了活动节点相关属性,也会同步到流程应用中。
- 同样,在流程应用中修改活动节点后,也会同步至流程图定义中。
在本案例中,结合开发平台中表单窗体对应的【提交】按钮,定义的流程变量一致。
区别:
- 在流程框架/非流程框架中,流程变量一般通过业务关联配置变量映射,使得流程变量和对应的字段编码一致。
- 在业务框架-流程应用配置流程的过程中,无需配置业务关联配置,因此流程变量需要通过自定义(一般也是定义和对应的字段编码一致)。
(1)目录管理
(2)新增流程应用
新增流程应用,关联流程定义。
(3)流程应用设置
① 基础设置
- 可启用流程
- 启动操作菜单设置,一般保留默认,不设置
- 默认启动和开始环节表单才可编辑,其他环节不可编辑,可按需勾选
- 默认流程办结不须填写审批意见,可按需勾选
- 根据本案例需求,需要设置流程启动后、流程结束后事件。
流程启动后:
流程结束后:
② 关联表单
③ 环节设置
【员工申请(流程开始)】:环节属性设置环节名称。
【部门经理审批】:环节属性设置环节名称,执行人设置选择对应的岗位。
【总经理审批】:环节属性设置环节名称,执行人设置选择对应的岗位,输入线条件(请假天数 > 3天)。
- 执行人选择
- 输入线条件
【结束】:设置输入线条件(请假天数 <= 3天)。