Create cross-platform, multi-threaded, software process quickly via XML and/or DSL.
Note: very much a work in progress
TODO:
- Aggregation strategies
- Error handling strategies
- Error handling scopes
- Service repository (plus service adaptors, eg: SQL, Files, HTTP, FTP, etc)
- Service invocation framework
- https://github.com/ianharrigan/hpel/blob/master/src/haxe/processing/hpel/Process.hx#L218
- Much more!
DSL | XML |
---|---|
.beginSequence() .beginSequence() .log("start sequence 1") .delay(.5) .log("end sequence 1") .endSequence() .beginSequence() .log("start sequence 2") .delay(.5) .log("end sequence 2") .endSequence() .beginSequence() .log("start sequence 3") .delay(.5) .log("end sequence 3") .endSequence() .endSequence() |
<sequence> <sequence> <log message="start sequence 1" /> <delay seconds=".5" /> <log message="end sequence 1" /> </sequence> <sequence> <log message="start sequence 2" /> <delay seconds=".5" /> <log message="end sequence 2" /> </sequence> <sequence> <log message="start sequence 3" /> <delay seconds=".5" /> <log message="end sequence 3" /> </sequence> </sequence> |
DSL | XML |
---|---|
.beginParallel() .beginSequence() .log("start thread 1") .delay(15) .log("end thread 1") .endSequence() .beginSequence() .log("start thread 2") .delay(10) .log("end thread 2") .endSequence() .beginSequence() .log("start thread 3") .delay(5) .log("end thread 3") .endSequence() .endParallel() |
<parallel> <sequence> <log message="start thread 1" /> <delay seconds="15" /> <log message="end thread 1" /> </sequence> <sequence> <log message="start thread 2" /> <delay seconds="10" /> <log message="end thread 2" /> </sequence> <sequence> <log message="start thread 3" /> <delay seconds="5" /> <log message="end thread 3" /> </sequence> </parallel> |
DSL | XML |
---|---|
.beginSequence() .set("var1", 100) .beginSequence() .set("scopedVar", 200) .set("result", "${var1 + scopedVar}") .log("result = ${result}") .endSequence() .beginSequence() .set("scopedVar", 300) .set("result", "${var1 + scopedVar}") .log("result = ${result}") .endSequence() .endSequence() |
<sequence> <set var="var1" value="100" /> <sequence> <set var="scopedVar" value="200" /> <set var="result" value="${var1 + scopedVar}" /> <log message="result = ${result}" /> </sequence> <sequence> <set var="scopedVar" value="300" /> <set var="result" value="${var1 + scopedVar}" /> <log message="result = ${result}" /> </sequence> </sequence> |
DSL | XML |
---|---|
.beginSequence() .beginLoop([15, 10, 5], "delay") .log("delaying for ${delay} seconds") .delay("${delay}") .log("${delay} second delay complete") .endLoop() .endSequence() |
<sequence> <loop items="[15, 10, 5]" var="delay"> <log message="delaying for ${delay} seconds" /> <delay seconds="${delay}" /> <log message="${delay} second delay complete" /> </loop> </sequence> |
DSL | XML |
---|---|
.beginParallel() .beginLoop([15, 10, 5], "delay") .log("delaying for ${delay} seconds") .delay("${delay}") .log("${delay} second delay complete") .endLoop() .endParallel() |
<parallel> <loop items="[15, 10, 5]" var="delay"> <log message="delaying for ${delay} seconds" /> <delay seconds="${delay}" /> <log message="${delay} second delay complete" /> </loop> </parallel> |
DSL | XML |
---|---|
.beginSequence() .set("testVar", 0) .beginChoose() .when("${testVar >= 1}") .log("1 or greater! (value=${testVar})") .when("${testVar < 0}") .log("less than 0! (value=${testVar})") .otherwise() .log("Guess it must be zero! (value=${testVar})") .endChoose() .endSequence() |
<sequence> <set var="testVar" value="0" /> <choose> <when condition="${testVar >= 1}"> <log message="1 or greater! (value=${testVar})" /> </when> <when condition="${testVar < 0}"> <log message="less than 0! (value=${testVar})" /> </when> <otherwise> <log message="Guess it must be zero! (value=${testVar})" /> </otherwise> </choose> </sequence> |