def test_1(): engine.db.clear() engine.load_definition(""" <definitions targetNamespace="http://www.example.org/UserTaskExample" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"> <process id="p1" name="process1"> <startEvent id="event_1" name="START"></startEvent> <sequenceFlow id="sf1" sourceRef="event_1" targetRef="2"></sequenceFlow> <scriptTask id="2" scriptFormat="application/x-pybpmn" script="from time import sleep;sleep(2)"></scriptTask> <sequenceFlow id="sf2" sourceRef="2" targetRef="event_2"></sequenceFlow> <endEvent id="event_2"></endEvent> </process> <process id="p2" name="process2"> <scriptTask id="2" scriptFormat="application/x-pybpmn" script="from time import sleep;sleep(3)"></scriptTask> <sequenceFlow id="sf2" sourceRef="2" targetRef="event_3"></sequenceFlow> <endEvent id="event_3"></endEvent> </process> </definitions>""") eq_(len(engine.processes), 2) proc1 = engine.processes['p1'] proc2 = engine.processes['p2'] eq_(len(proc1.children), 5, str(proc1.children)) eq_(len(proc2.children), 3, str(proc1.children)) proc1.instantiate() proc2.instantiate() eq_(len(proc1.instances), 1) eq_(len(proc2.instances), 1) print proc1.instances[0].tokens eq_(len(proc1.instances[0].tokens), 1) eq_(len(proc2.instances[0].tokens), 1) proc1.join() proc2.join() assert not proc1.instances assert not proc2.instances
def test_1(): engine.db.clear() xmlstr = """ <definitions targetNamespace="http://www.example.org/UserTaskExample"> <resource id="regionalManager" name="Regional Manager"> <resourceParameter id="buyerName" isRequired="true" name="Buyer Name" type="xsd:string"/> <resourceParameter id="region" isRequired="false" name="Region" type="xsd:string"/> </resource> </definitions>""" engine.load_definition(xmlstr) eq_(engine.db.count(), 4) eq_(len(engine.db['regionalManager'].resourceParameters), 2) ok_(engine.db['buyerName'].isRequired) assert not engine.db['region'].isRequired
def test_usertask(): engine.db.clear() xmlstr = """ <definitions targetNamespace="http://www.example.org/UserTaskExample"> <resource id="regionalManager" name="Regional Manager"> <resourceParameter id="buyerName" isRequired="true" name="Buyer Name" type="xsd:string"/> <resourceParameter id="region" isRequired="false" name="Region" type="xsd:string"/> </resource> <userTask id="ApproveOrder" name="ApproveOrder"> <potentialOwner> <resourceRef>regionalManager</resourceRef> <resourceParameterBinding parameterRef="buyerName"> <formalExpression>getDataInput('order')/address/name</formalExpression> </resourceParameterBinding> <resourceParameterBinding parameterRef="region"> <formalExpression>getDataInput('order')/address/country</formalExpression> </resourceParameterBinding> </potentialOwner> </userTask> </definitions> """ engine.load_definition(xmlstr) eq_(engine.db.count(), 11) usertask = engine.db['ApproveOrder'] eq_(usertask.name, 'ApproveOrder') eq_(len(usertask.resources), 1) po = usertask.resources[0] assert isinstance(po, PotentialOwner) eq_(po.resourceRef.refid, 'regionalManager') eq_(po.resource.name, 'Regional Manager') eq_(len(po.resourceParameterBindings), 2) po.resourceParameterBindings.sort() para1, para2 = po.resourceParameterBindings assert isinstance(para1, ResourceParameterBinding) assert isinstance(para2, ResourceParameterBinding) eq_(para1.parameterRef, 'buyerName') eq_(para1.parameter.name, 'Buyer Name') eq_(para2.parameterRef, 'region') eq_(para2.parameter.name, 'Region') assert isinstance(para1.expression, FormalExpression) assert isinstance(para2.expression, FormalExpression) eq_(para1.expression.body, "getDataInput('order')/address/name") eq_(para2.expression.body, "getDataInput('order')/address/country")
def test_default2(): engine.load_definition(""" <definitions targetNamespace="http://www.example.org/UserTaskExample" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"> <process id="p1" name="Process1"> <task id="1"></task> <sequenceFlow sourceRef="1" targetRef="2"></sequenceFlow> <exclusiveGateway id="2" default="sf_3"> </exclusiveGateway> <sequenceFlow id="sf_2" sourceRef="2" targetRef="3"></sequenceFlow> <task id="3"></task> <sequenceFlow id="sf_3" sourceRef="2" targetRef="4"></sequenceFlow> <sequenceFlow sourceRef="3" targetRef="end"></sequenceFlow> <task id="4"></task> <sequenceFlow sourceRef="4" targetRef="end"></sequenceFlow> <endEvent id="end"></endEvent> </process> </definitions>""") process = engine.processes['p1'] process.instantiate() process.join()