variable的管理

流程实例中,存有contextInstance来管理token和variable.
contextInstance是通过一个map来进行管理的,这个map的key是token,value是一个TokenVariableMap的对象.

TokenVariableMap本身并不是个map,而是一个普通的Object

TokenVariableMap有三个属性,一个是contextInstance,一个是Token对象本身,还有一个是
一个Map,用来放variableInstance,这个Map的名称为variableInstances.

variableInstances是一个map,它的key是variable的名称,如"a",value是一个 VariableInstance对象,VariableInstance对象放了四个属性,一个是token对象本身,一个是variable的名称, 一个是TokenVariableMap对象,还有一个是processInsance,你可能会奇怪:variable的value放到哪里呢?实际上 VariableInstance是一个抽象类,具体的实现是它根据value的class类型选择它的子类,子类中有个属性叫value。这个 variable的value,如 new Integer(3).

一个流程实例可以有多个Token,Token间是有父子关系的:
Token tokenAB=new Token(tokenA,"ab");
上行代码的意思是在tokenA下面建立一个TokenAB,该新建的
Token的名字是"ab".(文章来源 www.iocblog.net)

ci.createVariable(tokenA, "a", new Integer(3));
表示在tokenA范围内建立一个variable,它的名称为"a",
值为new Integer(3)
建立这个variable后,tokenA下面的token都可以看到该
variable,而上面的token则看不到.

只有createVariable可以在某个token上建立variable,其它的
方法只可以在rootToken上建立variable.
如:ci.setVariable(tokenA, "a", new Integer(3));(文章来源 www.iocblog.net)
其实是在rootToken上建立了一个名称为"a"的variable
    Map variables = new HashMap();
    variables.put("a", new Integer(3));
    variables.put("b", new Integer(4));
    ci.addVariables(variables);
上面四行代码在rootToken上建立了两个variable.
实际上在ExecutionContext中只有两个方法:
  public void setVariable(String name, Object value) {
    getContextInstance().setVariable(name, value, token);
  }
  public Object getVariable(String name) {
    return getContextInstance().getVariable(name, token);
  }
可以在子token中修改父token中建立的variable.



Actions的说明

 

存在两种action,一种是 event触发的action,一种是挂在node 节点的action。要注意它们的区别,event触发的action无法控制流程,也就是说它无法决定流程经过这个节点后下一步将到哪一个 leaving transition;而挂在node 节点的action就不同,它可以控制流程。不管是哪一种action都要实现ActionHandler接口。




文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。

相关项目