前提
实现了最基本的动态表单配置,此时回过头来看activiti里面的动态表单配置,发现里面有两个配置属性,第一个是表达式,第二个是变量。
这两个的意思理解了一下,将组件的值与变量关联,然后通过表达式获取或者通过表达式将数据绑定给某个变量。
acitivit官网关于表达式的描述:
分别是4.7章节和spring整合中的5.3章节。
为了方便阅读,给出activiti5版本的中文地址:http://www.mossle.com/docs/activiti/index.html
目的
只是为了了解变量、表达式的使用以及怎么解析的表达式,为了方便以后做拓展。
通过阅读官方文档,
表达式支持:value-el,method-el也就是值表达式,方法表达式。
有内置三个变量可以在表达式中使用:execution,task,authenticatedUserId。
变量的使用
普通变量
通过之前的步骤,发现如果启动节点和审核节点的表单名称id是一致的,则会在下一个流程中自动查出上一个流程中与之匹配名字的表单数据。现在为启动节点加上变量名进行操作:
更新流程
开始节点
分别在对应的位置填写对应的变量
username->请假人-> 变量 :name
leave_date_start->请假开始日期-> 变量:startDate
leave_date_end->请假结束日期-> 变量:endDate
days->请假天数-> 变量:leaveDays
审核节点
分别在对应的位置填写对应的表达式
username->请假人-> 变量 :#{name}
start_date->请假开始日期-> 变量:#{startDate}
end_date->请假结束日期-> 变量:#{endDate}
leave_days->请假天数-> 变量:#{leaveDays}
效果
正常回显。
考虑:如果加入一个审核人,那么在动态表单中使用的表达式为
#{authenticatedUserId} 即可。
表达式中的对象变量
对象变量的意思是获取该对象变量中的某个属性作为值。然后在这里有普通对象和Spring的bean对象两种。下面验证两种方式
更新流程
开始节点
删掉配置的变量名。
审核节点
分别在对应的位置填写对应的表达式
username->请假人-> 变量 :#{info.name}
start_date->请假开始日期-> 变量:#{info.startDate}
end_date->请假结束日期-> 变量:#{info.endDate}
leave_days->请假天数-> 变量:#{info.leaveDays}
代码
普通JavaBean对象
在发起成功的时候获取返回的流程实例,根据流程实例id设置变量名为info,值为user。
class User implements Serializable {
private String name = "王五";
private Date startDate = new Date(