>[19:23:13] <hadrian> another thing i looked at recently is scxml, i'll >write a component for it too, probably at acon Does scxml really need v3? Surely it can work just fine in camel 2? I imagined two interfaces - A producer that sends an event to an scxml executer, and a eventDispatcher that receives sends from scxml, sending them to consumers.
examples using jexl: <state id="state6"> <transition event="exchange" target="state7" cond="_eventdata.getProperty('key') eq 7"/> <transition event="exchange" target="state8" cond="_eventdata.in.body eq 7"/> </state> <state id="state7" final="true"/> A producer drives it by triggering an event: //exchange.setProperty("key", new Integer(7)); Message message = new DefaultMessage(); message.setBody(new Integer(7)); exchange.setIn(message); te = new TriggerEvent("exchange", TriggerEvent.SIGNAL_EVENT, exchange); exec.triggerEvent(te); Which transitions from state6 to state7. Exchange headers can be saved in the state context domain model: message.setHeader("key", "val"); te = new TriggerEvent("exchange", TriggerEvent.SIGNAL_EVENT, exchange); exec.triggerEvent(te); <state id="state9" final="true"> <onentry> <assign name="dmone" expr="_eventdata.in.header['key']" /> </send> </onentry> </state> But the exchange can't be updated and returned to camel (that I know of), so its a one way trip. To go from scxml to camel the scxml Send Event calls a custom EventDispatcher: <state id="state9" final="true"> <onentry> <assign name="dmone" expr="_eventdata.in.header['key']" /> <send event="'body'" type="'t'" target="'jms:x'" targettype="'camelEndPoint'" namelist="dmone dmtwo"> </send> </onentry> </state> The scxml domain model items must be named on the send namelist (dmone, dmtwo in the above example). EventDispatcher eventDispatcher = new EventDispatcher() { public void cancel(String sendId) { } public void send(String sendId, String target, String targetType, String event, Map params, Object hints, long delay, List externalNodes) { }}; An implementation of the EventDispatcher should be able to create an exchange, assign the event to the body, the params to the exchange headers/properties, look up the endpoint. Again its a one-way trip. -- View this message in context: http://camel.465427.n5.nabble.com/DISCUSS-CAMEL-3-0-weekly-IRC-chat-at-02-12-2013-7-00PM-8-00PM-CET-tp5727462p5732013.html Sent from the Camel Development mailing list archive at Nabble.com.