关于流程,任务变量
上杉t
2007-06-18
各位同仁:请教大家一个问题
<variable name="IdeaContent" access="read,write,required"mapped-name="IdeaContent"></variable> 中的required是什么意思。 另外 jbpm会默认把上一个任务变量值带到下一个步骤,有没有除了写action以外的方法让任务变量默认为空,不引用上一次的值 |
|
wuxufeng8080
2007-06-19
好像流程变量是一个全局变量,只要变量在一个processInstance中创建之后,就会一直存在。你可以通过contextInstance来得到这个变量。
至于如何清空,不知道:) |
|
youngliuus
2007-06-19
从TaskController的submitParameters方法看,required的大概意思是在TaskInstance中必须有值。我想也就是表单提交的时候不能为空吧。
流程变量的生存周期有3级:ProcessInstance,Token和TaskInstance. 我不太确定我是否明白你的需求,“有没有除了写action以外的方法让任务变量默认为空,不引用上一次的值”,但看来你知道TaskController的用法,如果这样写: <task name="clean ceiling"> <controller> <variable name="a" access="read" mapped-name="x" /> </controller> </task> a这个变量的值就不会被copy回流程变量,也就不会被下一个任务用到。这是你想要的效果吗? |
|
wuxufeng8080
2007-06-19
请问我怎么控制流程变量的生命周期?
|
|
上杉t
2007-06-19
我的意思可以这样理解:比如我有三个任务 没个任务都有
<variable name="IdeaContent" access="read,write,required"mapped-name="IdeaContent"></variable> 这样的定义。正常的来说,每个任务在读取 IdeaContent时都会默认上一个任务的值(也就是从流程变量里带回)我现在希望每个任务开始的时候是空值,而不是默认流程里的值。 <variable name="a" access="read" mapped-name="x" /> 如果这样写变量值就不能被保存了。但实际上每次都要保存新值的 |
|
youngliuus
2007-06-20
那就试试这样写:
<variable name="a" access="write" mapped-name="x" /> 这样写初始化的时候TaskController会给你的TaskInstance设置一个null值的流程变量。满意了吧?:) to: wuxufeng 之前我说“流程变量的生存周期有3级”,这个说法不太准确,抱歉。 应该说:流程变量可以定义在Token(每个token可以有自己的流程变量)上,或者TaskInstance。这在文档的10.4Variables scopes和11.4Task instance variables讲了。 |
|
delphidoc
2007-06-22
<event type="task-end">
<script>在脚本里把变量清空</script> </event> |