activiti5第三弹-----------脚本任务
来源:互联网 发布:java 获取特定时间 编辑:程序博客网 时间:2024/05/21 09:56
首先是流程定义图:
重点关注一下流程节点中 Script Task 节点的 properties中的Main config
这里可以选择不同的脚本语言,由于其他的部怎么会··就用javascript来吧。
从图中可以看出只是定义了一个变量x,它的值为 a;
很多人都说这样定义了这个变量以后就可以在流程中获得这个变量。所以我进行了测试。结果如下:
package final_activiti.progress;import org.activiti.engine.impl.test.PluggableActivitiTestCase;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.task.Task;import org.activiti.engine.test.Deployment;import org.junit.Test;public class ScriptTaskTest extends PluggableActivitiTestCase {@Test@Deployment(resources = "final_activiti/progress/ScriptTask.bpmn")public void test() {ProcessInstance p = runtimeService.startProcessInstanceByKey("javascript");Task task = taskService.createTaskQuery().singleResult();assertTrue("a".equals(taskService.getVariable(task.getId(), "x")));}}
断言的结果是错误的:
输出一下的话,可以看到居然是null,鼓捣了半天以后,在xml中发现了这样的语句---->
<scriptTask id="scripttask1" name="Script Task" scriptFormat="javascript" activiti:autoStoreVariables="false">
<script>var x ="a";
</script>
</scriptTask>
标红的部分貌似在表示,自动把标量方到流程中在这里是被禁止的,那就改为true吧。结果还是有问题。测试结果是这样的
额,这个错误找了半天也没有明白是怎么个意思。自己水平有限,希望有知道的大神赐教。怎么办呢,然后就看了API,然后看到activiti自己都说这个怎么怎么存在问题,然后说什么最佳实践是把那个设置为fasle,手动把变量加入到流程中。然后重新鼓捣··自己只能做到下面这种程度了,至于那个自动,有待研究,呵呵。
execution.setVariable("x",x);这句话就是把变量放到流程中的语句。
然后是测试代码
package final_activiti.progress;import org.activiti.engine.impl.test.PluggableActivitiTestCase;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.task.Task;import org.activiti.engine.test.Deployment;import org.junit.Test;public class ScriptTaskTest extends PluggableActivitiTestCase {@Test@Deployment(resources = "final_activiti/progress/ScriptTask.bpmn")public void test() {ProcessInstance p = runtimeService.startProcessInstanceByKey("javascript");Task task = taskService.createTaskQuery().singleResult();assertTrue("a".equals(taskService.getVariable(task.getId(), "x")));assertTrue(10D == (Double) taskService.getVariable(task.getId(), "y"));taskService.complete(task.getId());assertProcessEnded(p.getId());}}
测试结果:
0 0
- activiti5第三弹-----------脚本任务
- activiti5第六弹 手动任务、接收任务、邮件任务
- activiti5用户任务分配
- 五、Activiti5 任务管理
- activiti5第四弹----serviceTask中的java服务任务
- Activiti5第十一弹,流程监听器与任务监听器
- activiti5.0DOC之用户任务
- Activiti5第十弹,RepositoryService
- Jbpm4或Activiti5的流程任务分发与汇总
- 工作流Activiti5流程变量 任务变量 setVariables 和 setVariablesLocal区别
- 工作流Activiti5流程变量 任务变量 setVariables 和 setVariablesLocal区别
- activiti5第一弹-----基本的activiti示例
- Activiti5第八弹,ProcessEngineConfiguration和ProcessEngine
- activiti5第二弹----使用activiti5提供的测试类进行测试
- 第三周 任务二
- 第三周 任务三
- 第三周任务三
- 第三周 任务四
- mysql参数优化建议
- 两个相同VID PID的不同设备加载同一个KO文件中的不同驱动
- UIViewController
- 20150110工作小结
- 【PHP加油站】我们要学习的PHP是什么?
- activiti5第三弹-----------脚本任务
- ubuntu安装后的一些操作
- Java调用C++webservice接口
- 把这些地方都注意了,你的网站就不会有那么多的兼容问题了
- 上传Appstore步骤 截图
- 史上最简单Robotium跨进程操作实践——基于ADB框架
- 買下地球系列--美股ETF國際代碼整理(前進海外必備)
- 性能测试监控工具nmon安装及使用方法
- 理解MySql事务隔离机制、锁以及各种锁协议