Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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")
Example #6
0
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()
Example #7
0
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()