EL表达式
EL 全名为ExpressionLanguage,EL 语法很简单,它最大的特点就是使用上很方便。在JBPM的jar包中,也提供了对EL表达式的支持。JUEL
在流程实例xml文件中有时候我们需要动态的指定一些数据,这时候我们就能用到JUEL了。
将实体数据动态绑定到流程定义文件。不会EL表达式的同学先自己补充一下EL的知识。
首先看一下流程定义文件中是如何写的。
<?xml version="1.0"encoding="UTF-8"?>
<process key="test"name="test" xmlns="http://jbpm.org/4.4/jpdl">
<start g="255,35,48,48" name="start1">
<transition g="-63,-25"name="提交到科长" to="科长审批"/>
</start>
<task assignee="${user.kezhang}"g="230,148,92,52" name="科长审批">
<transition g="-63,-25"name="提交到主任" to="主任审批"/>
</task>
<task assignee="${user.zhuren}"g="233,263,92,52" name="主任审批">
<transition g="-62,-25"name="通过" to="end1"/>
</task>
<end g="259,379,48,48" name="end1"/>
</process>
看一下代码中如何操作:
/**
* 创建流程实例,动态赋值负责人
*/
@Override
public voidcreateInstance() {
super.startUp();
Map<String,Object> map= new HashMap<String,Object>();
User user = newUser();
user.setKezhang("张三");
user.setZhuren("李四");
map.put("user",user);
ProcessInstanceprocessInstance = executionService.startProcessInstanceByKey("test",map);
print("流程实例ID",processInstance.getId());
}
PS:在采用实体模型进行动态赋值时,必须序列化实体模型,即实现序列化接口Serializable,否则JBPM会抛出异常。
JUEL表达式和EL表达式几乎没有什么区别,只要用过EL表达式就可以忽略此篇了。