任务与外部系统数据结合问题
|
matikak
2008-07-25
我发布出去了,我把action放出来
public class RemindAction implements ActionHandler { private static final Log log = LogFactory.getLog(RemindAction.class); /** * get support data from enternal interface */ private static final long serialVersionUID = 1L; private static final String username = "administrator"; private static int i = 0; public void execute(ExecutionContext executionContext) throws Exception { //get token Token token = executionContext.getToken(); //task manager instance TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance(); //task node TaskNode taskNode = (TaskNode) executionContext.getNode(); //task name String taskName = executionContext.getTaskInstance().getName(); //task object Task task = taskNode.getTask(taskName); for(int j=0;j<10;j++){ i++; } if(i==9){ //create tast tmi.createTaskInstance(task, token).setPooledActors(new String[]{username}); } } } 只是做简单的测试模拟 |
|
|
matikak
2008-07-25
<task-node name="enternal data done" signal="last-wait" create-tasks="false">
<task name="enternalDone"></task> <event type="node-enter"> <create-timer name="getResource" duedate="20 seconds" repeat="10 seconds"> <action class="mcaps.apps.prrm.workflow.common.RemindAction"></action> </create-timer> </event> <event type="node-leave"> <cancel-timer name="getResource"/> </event> <transition to="Evaluate Apply Infomation" name="done over"></transition> </task-node> |
|
|
matikak
2008-07-25
怪了,在job表里创建了定时器,却没有进到action,我在action里设置了,断点,指定了任务创给谁,却没有执行过来
|
|
|
matikak
2008-07-25
还没有可能是其它问题呢,:),再看看吧
|
|
|
上杉t
2008-07-26
你这个定义要进这个节点后20秒后,才会执行你的action,你等20秒了吗?
|
|
|
matikak
2008-07-28
问题解决,需要在web.xml中配置
<servlet> <servlet-name>JobExecutorServlet</servlet-name> <servlet-class>org.jbpm.job.executor.JobExecutorServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JobExecutorServlet</servlet-name> <url-pattern>/jobexecutor</url-pattern> </servlet-mapping> 之后,有可能会遇到hibernate或是session问题,这方面网上有相关的解决方法,我用的是3.2.2,用到了hibernate文件,但也遇到了不能getcurrentSession()问题,将jbpm.cfg.xml中的isCurrentSessionEnabled设置为false即可,如 <field name="isCurrentSessionEnabled"><false /></field> 谢谢大家的支持 |

