委托代理的数据管理由管理服务类完成
org.snaker.engine.IManagerService 管理服务接口针对委托代理提供以下方法:
void saveOrUpdate(Surrogate surrogate) void deleteSurrogate(String id) Surrogate getSurrogate(String id) List getSurrogate(QueryFilter filter) String getSurrogate(String operator, String processName) List getSurrogate(Page page, QueryFilter filter) 决策表达式
决策表达式主要用于decision(选择分支)节点,该节点支持三种路由选择方式
decision的expr transition的expr 自定义类 decision的expr
decision节点的expr有两种方式来设置
1.表达式中增加判断逻辑,如:${day > 3 ? 't1' : 't2'},此时根据day的值决定走t1、或t2的路由,用于设置范围值的情况 2.表达式仅仅是一个变量,如:${tname},此时,传递tname的值为路由name即可,用于设置具体值的情况(如:同意、不同意) transition的expr
如果decision节点的expr为空,可设置输出路由的expr,必须返回boolean类型
路由1设置expr的值为:${content==1}, 路由2设置expr的值为${content > 1}。 自定义类
自定义类需要实现DecisionHandler接口的decide方法
org.snaker.engine.DecisionHandler 该方法返回字符串即表示输出路由的name
Snaker默认支持Juel、SringEL两种表达式引擎,需要在snaker.xml中配置。配置如下:
?
Juel表达式引擎常用语法 String expr1 = \Map args1 = new HashMap(); args1.put(\System.out.println(eval(String.class, expr1, args1)); String expr2 = \Map args2 = new HashMap(); //此处不仅支持数字类型,也支持字符串类型,但是值必须可转换为数字 args2.put(\System.out.println(eval(String.class, expr2, args2)); String expr3 = \Map args3 = new HashMap(); //此处只要是数字类型即可,如1或0.5等 args3.put(\System.out.println(eval(String.class, expr3, args3)); //juel支持表达式为字符串类型而参数为数字类型 String expr4 = \Map args4 = new HashMap(); //此处不仅可以写字符串\,也可以写char类型'1',写数字类型1,浮点类型1.00 args4.put(\System.out.println(eval(String.class, expr4, args4)); //逻辑表达式与,使用&&表示 String expr5 = \Map args5 = new HashMap(); //此处不仅可以写字符串\,也可以写char类型'1',写数字类型1,浮点类型1.00 args5.put(\System.out.println(eval(String.class, expr5, args5)); //逻辑表达式或,使用||表示 String expr6 = \Map args6 = new HashMap(); //此处不仅可以写字符串\,也可以写char类型'1',写数字类型1,浮点类型1.00 args6.put(\System.out.println(eval(String.class, expr6, args6)); //逻辑表达式 String expr7 = \Map args7 = new HashMap(); //此处不仅可以写字符串\,也可以写char类型'1',写数字类型1,浮点类型1.00 args7.put(\System.out.println(eval(String.class, expr7, args7)); ?
Spring EL表达式引擎常用语法 String expr1 = \Map args1 = new HashMap(); args1.put(\System.out.println(expr1 + \ String expr2 = \Map args2 = new HashMap(); //此处仅支持数字类型 args2.put(\System.out.println(expr2 + \ String expr3 = \Map args3 = new HashMap(); //此处只要是数字类型即可,如1或0.5等 args3.put(\System.out.println(expr3 + \ //spel支持表达式为字符串类型而参数为数字类型 String expr4 = \Map args4 = new HashMap(); //此处仅支持字符串\args4.put(\System.out.println(expr4 + \ //逻辑表达式与,使用and表示 String expr5 = \Map args5 = new HashMap(); //此处仅支持数字类型 args5.put(\System.out.println(expr5 + \ //逻辑表达式或,使用||表示 String expr6 = \Map args6 = new HashMap(); //此处不仅可以写字符串\,也可以写char类型'1',写数字类型1,浮点类型1.00 args6.put(\System.out.println(expr6 + \ //逻辑表达式 String expr7 = \Map args7 = new HashMap(); //此处不仅可以写字符串\,也可以写char类型'1',写数字类型1,浮点类型1.00 args7.put(\System.out.println(expr7 + \子流程
子流程的作用是将一个复杂的业务流程进行细化拆分,提高流程的复用性。