流程表单节点初始化

用于在某个节点打开表单、提交表单的时候对业务数据进行赋值
初始化动作不会判断是否已经存在值,均会对字段进行赋值,如果已存在值不希望二次赋值,则需要自行判断!
配置页

提示

流程插件中只有节点初始化插件才能更新业务对象的数据,其他时机的修改赋值都是无效的。

初始化节点

必填字段,指定业务数据初始化执行的节点
如果选择“开始节点”则表示在流程启动时执行初始化动作

脚本描述

用于描述该初始化配置,推荐尽量使用简洁语言描述清晰该条配置的功能以及影响

展示前脚本

流程打开表单前执行,如果表单多次打开、则会多次执行,常用于当前用户信息的赋值,
可以使用以下插件变量

  • task 任务对象(任务节点才有)
  • instance 实例对象(启动时没有)

如: 对当前用户ID、名字赋值、对当前用户的当前组织 字段进行赋值

Demo业务对象为例
//展示前初始化一些字段信息(更多方法参考ContextUtil API)
import com.dstz.sys.util.ContextUtil;

Demo.put('bm',sysScript.getCurrentGroupName()); // 所属部门名字
Demo.put('bmId',ContextUtil.getCurrentGroupId());// 所属部门ID
Demo.put('sqrq',new Date()); // 申请时间


import import com.dstz.org.api.model.IGroup;
// 获取当前部门上级中组织类型 =1(公司)的部门
IGroup compnay = orgScript.getSpecificSuperOrg(null,1);
if(compnay != null){
compnay.getGroupId()
compnay.getGroupName()
}

保存后脚本

流程提交表单后执行,保存草稿、提交任务均会执行,所以在某些场景需要判断提交的动作,或者是否已经存在值(比如启动时不存在bpmTask 可以通过isTask判断),然后再执行赋值动作。

后置脚本可以使用 插件变量( 但是 不支持 variableScope 变量操作)

  • 如配置在流程开始节点,初始化订单编号的脚本:
import com.dstz.base.core.util.StringUtil;
// 后置初始化,可以减少流水号的损失
if(StringUtil.isEmpty(Demo.get('zd2'))){
Demo.put('zd2',sysScript.getNextSerialNo("dayNo"));
}
  • 某节点,点击同意按钮,更新业务对象某业务字段
if("agree" == actionCmd.getActionName()) {
SchoolStudent.put('type','审批通过')
}else{
SchoolStudent.put('type','审批不通过')
}
提示

展示前置脚本与保存后置脚本 是 Groovy 脚本
如果涉及比较多字段的赋值、建议抽出业务脚本来做初始化处理,尽量避免写太多Groovy脚本
这样可以借助IDE的语法检查,也有利于业务逻辑归纳管理