(WSO2ESB)是否可以从序列中引发任务?

时间:2014-11-05 13:18:11

标签: wso2 wso2esb

我希望每次收到消息时(在调解期间)都会有一个序列启动任务。例如:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="main">
   <in>
      **<task>
         <SOME_TASK_DETAILS_TO_START_OFF>
      </task>**
   </in>
   <out>
      <send></send>
   </out>
   <description>The main sequence for the message mediation</description>
</sequence>

这实际上可行吗?我发现的所有文档似乎都与启动ESB或通过Web控制台手动启动的任务有关。

谢谢!

1 个答案:

答案 0 :(得分:1)

在inSequence中添加此脚本:

 <script language="js">importPackage(Packages.org.apache.synapse);
    importPackage(Packages.org.apache.synapse.config);
    importPackage(Packages.org.apache.synapse.task);
    var sc = mc.getConfiguration();
    var task = sc.getStartup("TestTask");
    var td = task.getTaskDescription() 
    td.setCount(0);
    //td.setCron(null);
    task.setTaskDescription(td);            
    sc.updateStartup(task);
    mc.setConfiguration(sc);
    task.destroy();
    task.init(mc.getEnvironment());</script>

如果你的任务有一个Cron表达式,td.setCount(0),任务执行停止,并且td.setCount(-1),任务执行重启。

使用td.setCount(1)+ td.setCron(null),在ESB控制台中编辑任务时,您可以观察到该定义已更新:触发类型已从&#39; Cron&#39;到&#39;简单&#39; (count = 1且interval = 0)。内存中的定义已更改,并在重新启动ESB时丢失。