作者:管理员  历史版本:1  更新时间:2024-10-24 16:08

适用版本:v3.1.8+;

流程事件脚本设置

在流程运行中,为了方便快速将业务数据更新、添加或使用第三方接口同步相关数据等业务,可使用节点的事件设置中,编写脚本类方法,在此调用脚本类中方法进行处理。

进入流程事件设置页面

  • 首先进入【工作流管理】-【流程定义管理】选择其中一条流程定义的数据,点击“设置”按钮,进入设置页面,在左边的流程图中选中“开始”,系统自动在右边对应出现开始事件设置页面,将脚本代码编写如下图:

    温馨说明:
    (1)将编写的代码复制出来,具体代码如下图:
    Map<String,Object> valMaps = new HashMap<String,Object>();
    valMaps.put("ZHUANG_TAI_", "zzyxz");
    scriptImpl.updateDataByBusValue(businessKey_,"t_qbsqd",valMaps);
    注意3.3.7以上版本将上述类名和方法调整为以下代码(即将scriptImpl改成jdbcScript,下面所示代码同理):
    Map<String,Object> valMaps = new HashMap<String,Object>();
    valMaps.put("status_", "spz");
    jdbcScript.updateDataByBusValue(businessKey_,"t_cgdd",valMaps);

(2)方法和参数说明:

  • updateDataByBusValue:根据主键值(系统默认主键字段名是”ID_“)更新对应物理表的字段信息;
  • businessKey_:固定参数名,可复制直接使用,代表获取流程绑定表的主键值;
  • t_qbsqd:更新物理表名,根据实际情况传递需要更新的表名,此代码范例中是更新流程绑定的业务对象生成的物理表信息,因此传递业务对象在数据库表中生成的实际表名信息一致即可;
    注意:业务对象生成的表名是根据前缀T_+编码组合而成,故此处范例表名则是此格式!
  • valMaps:定义Map数组,传递要更新的字段名信息和值,其中代码范例中“ZHUANG_TAI_”对应物理表的字段名称一致,“zzyxz”传递此字段要更新的值。

(3)自定义物理表和字段名时,需要更新对应表单信息时,调用方法是:scriptImpl.updateDataByBusKeyAndValue("主键字段名称",businessKey_,"更新表名",valMaps);

(4)在流程审批完后需要将数据插入到另外表信息时,调用示例方法是:

String idValue = scriptImpl.getUuid();
Map<String,Object> valMaps = new HashMap<String,Object>();
valMaps.put("orderId", idValue);
valMaps.put("ZHUANG_TAI_", "zzyxz");
scriptImpl.addDataByBusKey("orderForm",valMaps);

(5)在流程审批过程中,需要根据当前审批节点操作“同意”、“驳回”、“反对”等按钮进行更改状态,调用实例方法是:

//根据主键获取当前节点按钮操作状态
String status =bpmnScript.getActionStatus(businessKey_);
//设置变更状态Map数组
Map<String,Object> valMaps = new HashMap<String,Object>();
//判断驳回信息是否一致
if(cscript.equalsIgnoreCase("reject",status)){
    valMaps.put("zhuang_tai_", "已驳回");
    jdbcScript.updateDataByBusValue(businessKey_,"t_ibps_inspect_plan",valMaps);
}else{
   valMaps.put("zhuang_tai_", "主管通过");
   jdbcScript.updateDataByBusValue(businessKey_,"t_ibps_inspect_plan",valMaps);
}

其他按钮状态说明:

获取在线表单的字段值

在开始事件页面中,点击“表单变量”系统自动出现流程绑定业务对象所对应的字段信息,在出现的字段菜单中,点击字段信息,在事件编辑器的页面自动出现获取字段值的代码,如下图:

温馨说明:
(1)获取表单字段的信息,根据业务对象维护的字段类型匹配,即是字符串则需要String 定义属性信息获取;
(2)在更新字段值或需要获取表单值传参数均可使用该方式获取,在将代码传入。
(3)该代码方式遵守Groovy语法即可。

表单变量细节说明
1、表单变量:流程绑定的在线表单中使用的所有表单属性(只支持主表属性,子表属性不支持)
2、流程常量:流程启动后系统默认给的常量变量值,可在全局使用;
(1)流程实例ID:启动流程后的实例ID,命名为“instanceId_”。
(2)流程定义Key:设计在线流程保存后的流程业务主键信息,命名为“flowKey_”。
(3)流程定义ID:设计在线流程保存后的流程定义ID信息,命名为“processDefId_”。
(4)发起人:流程启动后的发起人ID信息,命名为“startUser”。
(5)表单主键:流程绑定在线表单的主键值,命名为“businessKey_”。
(6)流程事项标题:流程启动后设置的事项标题,命名为“subject_”。
3、流程变量:其他途径额外增加的变量信息;
(1)在流程设置中-“流程变量”增加的变量信息。
(2)后台代码或事件设置中调用流程设置变量方法设置的变量信息。

FAQ:在事件设置编写的脚本数据库有更新,但页面没有实时更新获取最新值?
回复:在执行脚本最后面代码块增加:com.lc.ibps.base.framework.utils.J2CacheUtil.flushAll();