怎样在osworkflow中使用BeanShell
1)如下定义流程文件:
<workflows>
<workflow name="example" type="URL" location="/samples/comment-arg.xml"/>
</workflows>
这样就定义了一个名称为example,位置在/samples/comment-arg.xml的流程文件
2)建立测试类com.hongsoft.os.Test
里面的main方法的代码如下:
counter = 0; //要测试的变量
Map inputs = new HashMap();
inputs.put("test", this); //key: "test" value: 本类的对象
long id = workflow.initialize("example", 1, inputs);//把map传入
assertEquals("beanshell script not parsed correctly", 2, counter);//判断
3)流程定义的initial actions定义如下:
<initial-actions>
<action id="1" name="Start Workflow">
<pre-functions>
<function type="beanshell">
<arg name="script">
com.hongsoft.os.Test test = transientVars.get("test");
test.counter++;
test.counter++;
</arg>
</function>
</pre-functions>
<results>
<unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/>
</results>
</action>
</initial-actions>
这样,在调用workflow.initialize()方法时,将调用beanshell里面的脚本
最后,test.counter由0变为了2.