任务与外部系统数据结合问题

matikak 2008-07-24
问题描述:
当上一个任务处理完成之后,进入下一个任务,在这个任务里有这样的要求:
1.当外部系统提供数据数据过来后,再触发这个任务,并指定任务处理人
2.如果外部数据没有提供过来,任务进入等待状态,外部系统一旦提供数据,就后台进行数据处理,再指派任务处理人

注:这里的外部系统是指另一个系统

现在不大理解的是:JBPM如何进入任务等待状态,外部系统提供了数据过来以后,用什么方式进行后台数据处理,处理完了以后再指派任务处理人

各位达人,提供点方案吧,在此先谢过了

建议什么的都行,大家一起讨论一下这种方式,:)
上杉t 2008-07-24
先关闭task-node的创建任务的能力,然后给这个节点加一个任务调度(timer).每隔多长时间去查一下外部数据,数据来了再创建任务.指定人员
matikak 2008-07-24
先关闭task-node的创建任务的能力?
怎么理解,可以说细一些吗
上杉t 2008-07-24
举个例子
<task-node name="aaa" create-tasks="false"//不由节点创建任务>
<timer duedate="20 seconds" repeat="10 seconds">//定时器每10秒执行actionA
        <action class="actionA">//查询外部数据库,创建任务,指定人员的类
        </action>
      </timer>
<task name=""></task>//你的任务
</task-node>
定时器的格式不一定对,手写的.只表示这意思.
matikak 2008-07-24
明白你的意思了,那关健就在我这个action处理了,等待数据的支待等等
上杉t 2008-07-24
外部数据 你总要自己查到没到吧,所以要定时查一下.你总不是想用"推"的方式吧.那不大可能.你每隔一定时间查一下外部数据是否到达.到到达了就做下面的事情呗.
还是我没明白你到底要做什么
matikak 2008-07-24
客户想用推的方式,我也认为不可行,那就相当于外部因素来驱动流程了,什么时候驱动,怎么驱动,驱动的标志是什么等等,都是问题,你说到的方案我也有想过,试着写个小demo看看。
刚去你的blog上看了下,写的不错啊,看样子,是个jbpm的老手啊,呵呵,支持你的,期待你的大作,哈
上杉t 2008-07-24
如果要用推的方式,就要在外面写独立的逻辑,这个逻辑应该是写在你能获取信号到来的方法里,jbpm任务还是让他不自己创建,就那样等着.你那个类等信号来了 就要遍历所有在跑的流程,找到匹配的任务节点,创建任务.
你不让流程知道外部数据,就得要外部数据知道要创建那些任务
skllb 2008-07-24
推也可以的, 转换一下思路,让接入系统推到另外一个标示点上 ,你这边还是同样的定时查询,只不过查询的是你的标示点上了。
matikak 2008-07-25
这个节点我该怎么定义呢
<task-node name="enternal data done" create-tasks="false">
<task name="enternalDone"></task>
<timer duedate="20 seconds" repeat="10 seconds">
<action class="com.action">
</action>
</timer>
<transition to="Evaluate Apply Infomation" name="done over"></transition>
</task-node>
这样的话,进入这个节点的时候,是启动不了timer的,怎么修改呢