web工作流管理系统开发流程变量与表达式
工作流系统和业务系统的结合,不仅仅是表之间的关联(即流程实例id和业务数据的关联),还有很多变量的关联。
变量的关联表现在很多方面,通常都是在流程定义时,需要引入这些变量,辅助流程的定义。
如,流程在运行时,需要获取具体业务数据某个关键字段的值。
费用报销申请流程中,需要将用户的报销金额获取,流程按照报销金额的大小来决定是否需要2级审核。
还有的需要获取流程上下文中的流程定义信息,操作用户等,流程定义信息包含流程名称,流程中文描述名,流程版本,节点的名称等等。
例如流程实例运行时,需要在生成的任务提醒中获取流程中文描述,如,您需要审核 "某某" 填写的 "费用报销申请"。某某为流程实例运行时的操作用户,费用报销申请为流程中文名。
变量还分为临时变量和持久化变量,这有点类似局部变量和全局变量的意思;临时变量仅存在于一次流程运转过程,提交返回后,就失效了;
持久化变量通常为一些业务变量,因为持久化到数据库中的,所以只要发生过,无论什么时候都能获取到值。
综合一下,流程中需要使用的变量类型:
业务变量: 业务关键字段的值,通常作为显示或条件判断用,为持久化变量。
流程上下文变量:获取流程运行时的执行者信息,流程定义信息,流程实例信息,通常为临时变量。
业务数据字典等变量:业务变量的延伸,code对应中文名称,通常用表达式来转换出中文名称。
在eworkflow工作流系统中,变量的使用场合通常是,流程定义文件的自定义参数,自定义脚本中,通过表达式来引入这些变量。
工作流引擎在解释流程定义文件时,根据实时的情况,解释表达式,得到变量的值。
如,
引入用户名称的表达式:${oCaller.name}
引入业务关键字段信息,如审核结果: ${result}; 审核结果数据字典(中文): ${result.审核结果}
引入流程实例id: ${entry.id}
在自定义脚本中还可以如编写java代码一样,来作为变量引用,就更加的灵活和多样了。
- 最新评论