-module(supply). -include_lib("bpe/include/bpe.hrl"). -include_lib("erp/include/transport.hrl"). -compile(export_all). action({request,'Init'}, Proc) -> {reply,Proc}; action({request,'Payment'}, Proc) -> Payment = bpe:doc({payment_notification},Proc), case is_tuple(Payment) of true -> {reply,'Process',Proc}; false -> {reply,'Signatory',Proc} end; action({request,'Signatory'}, Proc) -> {reply,'Process',Proc}; action({request,'Process'}, Proc) -> Account = #'Transport'{id=Proc#process.id}, kvs:add(Account), {reply,Proc}; action({request,'Final'}, Proc) -> {reply,Proc}. def() -> #process { name = 'Supply Process', flows = [ #sequenceFlow{source='Init', target='Payment'}, #sequenceFlow{source='Payment', target='Signatory'}, #sequenceFlow{source='Payment', target='Process'}, #sequenceFlow{source='Process', target='Final'}, #sequenceFlow{source='Signatory', target='Process'}, #sequenceFlow{source='Signatory', target='Final'} ], tasks = [ #userTask { name='Init', module = spawnproc }, #userTask { name='Signatory', module = spawnproc }, #serviceTask { name='Payment', module = spawnproc }, #serviceTask { name='Process', module = spawnproc }, #endEvent { name='Final'} ], beginEvent = 'Init', endEvent = 'Final', events = [ #boundaryEvent{ name = '*', timeout={0,{0,30,0}} }, #messageEvent{name="PaymentReceived"} ] }.