2014-11-05 37 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

相關問題