2014-11-05 65 views
1

我期待有一个序列启动一个任务,每次消息通过(在其调解过程中)。例如:(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

添加这个脚本您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控制台中编辑您的任务时,您可以观察到定义已更新:触发器类型已从'Cron'更改为'Simple'计数= 1和间隔= 0)。定义在内存中发生了变化,当您重新启动ESB时丢失了内存

+0

这很好,谢谢你的时间! – PLivesey 2014-11-06 14:19:33

相关问题