рд╣реЗ рд╣рд╛рдмрд░! рдо рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рдирд╛рдХрд░реНрд╖рдгрдорд╛ рд▓реЗрдЦрдХреЛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрджрдЫреБ
режрен/режрен/реирежреиреж, рдЕрдиреБрд╡рд╛рдж
рдо рдкреНрд░рд╛рдпрдГ рдЧреИрд░-рдЬрд╛рднрд╛ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд╕рдБрдЧ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЫрд▓рдлрд▓ рдЧрд░реНрдЫреБ: C# рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ, Node.JS/JavaScript рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ, рд╡рд╛ Golang aficionadosред рддреА рд╕рдмреИрд▓рд╛рдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдорд╛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдореЗрдХрд╛рдирд┐рдЬрдо рдЪрд╛рд╣рд┐рдиреНрдЫ, рд╡рд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд▓рд╛рдИ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рд░ рдЕрд░реНрдбрд░ рдЧрд░реНрдиреЗ, рдЯрд╛рдЗрдордЖрдЙрдЯрд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреЗ, рд╕рд╛рдЧрд╛ рд░ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдЧрд░реНрдиреЗ рд▓реЗрдирджреЗрдирд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреНрдиреЗ рддрдереНрдпрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБ рдкрд░реЗрдХреЛ рдЫред
BPM рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд╕рд╛рде
рд╣реЛрдЗрди! рд╡рд╛рд╕реНрддрд╡рдорд╛, рддрдкрд╛рдЗрдБ рд╕рдЬрд┐рд▓реИ рд╕рдВрдЧ рдХреБрдиреИ рдЬрд╛рднрд╛ рдЬреНрдЮрд╛рди рдмрд┐рдирд╛ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рддрдкрд╛рдЗрдБрдХреЛ рдордирдкрд░реНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рднрд╛рд╖рд╛рдорд╛ рдХреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕ рд▓реЗрдЦрдорд╛, рд╣рд╛рдореА рд╣реЗрд░реНрдиреЗрдЫреМрдВ:
- рдЖрдзрд╛рд░рднреВрдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛;
- REST API
- рдЬрд╛рднрд╛ рдмрд╛рд╣реЗрдХ рдЕрдиреНрдп рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЧреНрд░рд╛рд╣рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдорд╛ рд╕рд▓реНрд▓рд╛рд╣;
- рдЙрджрд╛рд╣рд░рдг C# рд░ Node.JS рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░;
- Camunda рд╕рд░реНрднрд░ (рдбрдХрд░ рд╡рд╛ Tomcat) рд╕реБрд░реБ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВред
рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЬрд╛рднрд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рд░ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рднрд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди (JVM) рдЪрд╛рд╣рд┐рдиреНрдЫред Camunda рд▓реЗ REST API рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдордирдкрд░реНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рднрд╛рд╖рд╛рдорд╛ рд▓реЗрдЦреНрди рд░ Camunda рд╕рдБрдЧ REST рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ:
рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдорд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд╣рд░реВ BPMN рдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬреБрди рдореВрд▓ рд░реВрдкрдорд╛ XML рдлрд╛рдЗрд▓ рд╣реЛред рдпрд╕рдХреЛ рд╕рд╛рде рдореЛрдбреЗрд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ
рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдбрдХрд░ рдЫрд╡рд┐ рдорд╛рд░реНрдлрдд рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдБрджреИ
рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛред рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдиреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░рд┐рдХрд╛рд╣рд░реВ рдпрд╕ рд▓реЗрдЦрдорд╛ рдкрдЫрд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред
рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдмрд╕ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest
рддрдкрд╛рдИрдВрд▓реЗ рд▓рд┐рдирдХреНрд╕, JVMs рд╡рд╛ Tomcats рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЪрд┐рдиреНрддрд╛ рд▓рд┐рдиреБ рдкрд░реНрджреИрдиред Dockerfiles рд░ рдЖрдзрд╛рд░рднреВрдд рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдЯрд╛рдмреЗрд╕ рдЬрдбрд╛рди рдЧрд░реНрди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ) рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫрдиреН
рдпрджрд┐ рддрдкрд╛рдЗрдБ Camunda рдЗрдиреНрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рд╕рдЬрд┐рд▓реИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рдЬреЗ рд╣реЛрд╕реН, рдбрдХрд░рд╕рдБрдЧ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдиреБрдХреЛ рдПрдЙрдЯрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдЫ: рддрдкрд╛рдЗрдБ рдЯрдордХреНрдпрд╛рдЯрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреБрд╣реБрдиреЗрдЫ рдЬреБрди рд╕рдБрдзреИ рдирд╡реАрдирддрдо рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрдиред рдпрд╕рдХреЛ рд╡рд░рд┐рдкрд░рд┐ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рджреЗрдЦрд╛рдЗрдП рдЕрдиреБрд╕рд╛рд░ рд╡рд╛рдВрдЫрд┐рдд Tomcat рд╡рд┐рддрд░рдгрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЖрдлреНрдиреИ рдбрдХрд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ рддрд▓ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЛрдбреЗрд▓ рддреИрдирд╛рддреА
рдХреНрд▓рд╛рд╕рд┐рдХ рдЯреНрд░рд┐рдк рдмреБрдХрд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЧрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВ рдЬрд╣рд╛рдБ рддрдкрд╛рдИрдВ рдкрдЩреНрдХреНрддрд┐рдорд╛ рддреАрдирд╡рдЯрд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдЯреНрд░рд┐рдЧрд░ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рд░ рдкрдЫрд┐ рдЕрд╕рдлрд▓ рднрдПрдорд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдореНрдкрдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рджрд┐рди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫред BPMN рдлрд╛рд░рдордорд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдПрдХреЛ, рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:
рдЕрдм рддрдкрд╛рдИрдВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
curl -w "n"
-H "Accept: application/json"
-F "deployment-name=trip"
-F "enable-duplicate-filtering=true"
-F "deploy-changed-only=true"
-F "[email protected]"
http://localhost:8080/engine-rest/deployment/creat
рдЕрдм рддрдкрд╛рдИрдВ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
curl
-H "Content-Type: application/json"
-X POST
-d '{"variables":{"someData" : {"value" : "someValue", "type": "String"}},"businessKey" : "12345"}}'
http://localhost:8080/engine-rest/<!-- -->process-definition/key/<!-- -->FlowingTripBookingSaga<!-- -->/start
рдЕрд░реНрдХреЛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдкреНрд░рд╢реНрди рд╣реЛ: рдХреНрдпрд╛рдореБрдиреНрдбрд╛рд▓реЗ рдХрд╛рд░ рдмреБрдХрд┐рдЩ рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдХрд╕рд░реА рдХрд▓ рдЧрд░реНрдЫ? рдХреНрдпрд╛рдореБрдиреНрдбрд╛рд▓реЗ рдХреЗрд╣реА рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрддреНрдХрд╛рд▓ рд╕реЗрд╡рд╛рд╣рд░реВ (рдкреБрд╢-рд╕рд┐рджреНрдзрд╛рдиреНрдд) рдХрд▓ рдЧрд░реНрди рд╕рдХреНрджреИрди
рддреНрдпрд╕реИрд▓реЗ рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
curl
-H "Content-Type: application/json"
-X POST
-d <!-- -->'{"workerId":"worker123","maxTasks":1,"usePriority":true,"topics":[{"topicName": "reserve-car"}, "lockDuration": 10000, "variables": ["someData"]}]}'<!-- -->
http://localhost:8080/engine-rest/external-task/fetchAndLock
рддреНрдпрд╕рдкрдЫрд┐ рдХреНрдпрд╛рдореБрдиреНрдбрд╛рд▓рд╛рдИ рднрдиреНрдиреБрд╣реЛрд╕реН
curl
-H "Content-Type: application/json"
-X POST
-d <!-- -->'{"workerId":"worker123", "variables": {}}'<!-- -->
http://localhost:8080/engine-rest/<!-- -->external-task/EXTERNAL_TASK_ID/complete
рддреНрдпреЛ рд╣реЛ - рддрдкрд╛рдИрд▓рд╛рдИ рдЕрдЭреИ рдкрдирд┐ рдЬрд╛рднрд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реЗрдХреЛ рдЫреИрди, рд╣реИрди? рд░ рдпреЛ рд╕реБрд░реВ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫ!
рдЧреНрд░рд╛рд╣рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ
рдХреБрдиреИ рдкрдирд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдорд╛ REST API рдХрд▓ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫред JavaScript рдорд╛, рдпреЛ рд╕рдЬрд┐рд▓реИ рд╕рдВрдЧ JQuery рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЧрд░рд┐рдиреНрдЫ, рд░ C# рдорд╛, System.Net.Http рд░ Newtonsoft.Json рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред рддрд░ рдпреЛ рд╕рдордп рд▓рд╛рдЧреНрдиреЗрдЫред рддреНрдпрд╕реЛрднрдП рддрдкрд╛рдИрд▓реЗ рдХреЗрд╣рд┐ рдЧреНрд░рд╛рд╣рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдпрд╕ рд╕рдордпрдорд╛, рдзреЗрд░реИ рддрдпрд╛рд░ рдЧреНрд░рд╛рд╣рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН:
- рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
рд▓рд┐рдЩреНрдХ ред Camunda рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд; - рдЬрд╛рднрд╛:
рд▓рд┐рдЩреНрдХ ред Camunda рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд; - C #:
рд▓рд┐рдЩреНрдХ ╨╕рд▓рд┐рдЩреНрдХ ред рдпреА рджреБрдмреИ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдордзреНрдпрд╡рд░реНрддреА рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЫрдиреН рд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдкрдорд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЫрдиреН, рддрд░ рд░рд╛рдореНрд░реЛ рд╕реБрд░реБрд╡рд╛рдд рдмрд┐рдиреНрджреБрдХреЛ рд░реВрдкрдорд╛ рд╕реЗрд╡рд╛ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН; - PHP:
рд▓рд┐рдЩреНрдХ - рдзреЗрд░реИ рдкреВрд░реНрдг рдЫреИрди рд░ рдирд╡реАрдирддрдо API рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрди, рддрд░ рдорд▓рд╛рдИ рдпреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдерд╛рд╣рд╛ рдЫред
JavaScript рд░ Java рдХреЛ рдЕрдкрд╡рд╛рджрдХреЛ рд╕рд╛рде, рдЧреНрд░рд╛рд╣рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ Camunda рдЙрддреНрдкрд╛рджрдирдХреЛ рднрд╛рдЧ рд╣реЛрдЗрдирдиреНред рдЙрдиреАрд╣рд░реВрд▓реЗ рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдХрд╛ рд╕рдмреИ REST API рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрди рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рддреНрдпрд╣рд╛рдБ рдЫреИрди рднрдиреНрдиреЗ рд╣реЛрдЗрди, рд╕рдзреИрдВ Camunda рдХреЛ REST API рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╕рдиреНрджрд░реНрдн рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрд▓рд╛рдИ рд╕реБрд░реВрд╡рд╛рдд рдмрд┐рдиреНрджреБ рд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред
C# рдЙрджрд╛рд╣рд░рдг
рдорд╛рдерд┐рдХреЛ рдЧреНрд░рд╛рд╣рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдХреЗрд╡рд▓ рд▓реЗрдЦреНрди рд╕рдХреНрдЫреМрдВ:
var camunda = new CamundaEngineClient("http://localhost:8080/engine-rest/engine/default/", null, null);
// Deploy the BPMN XML file from the resources
camunda.RepositoryService.Deploy("trip-booking", new List<object> {
FileParameter.FromManifestResource(Assembly.GetExecutingAssembly(), "FlowingTripBookingSaga.Models.FlowingTripBookingSaga.bpmn")
});
// Register workers
registerWorker("reserve-car", externalTask => {
// here you can do the real thing! Like a sysout :-)
Console.WriteLine("Reserving car now...");
camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
});
registerWorker("cancel-car", externalTask => {
Console.WriteLine("Cancelling car now...");
camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
});
registerWorker("book-hotel", externalTask => {
Console.WriteLine("Reserving hotel now...");
camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
});
// Register more workers...
StartPolling();
string processInstanceId = camunda.BpmnWorkflowService.StartProcessInstance("FlowingTripBookingSaga", new Dictionary<string, object>()
{
{"someBookingData", "..." }
});
рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдЕрдирд▓рд╛рдЗрди рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ:
Node.js рдХреЛ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг
var Workers = require('camunda-worker-node');
var workers = Workers('http://localhost:8080/engine-rest', {
workerId: 'some-worker-id'
});
workers.registerWorker('reserve-car', [ 'someData' ], function(context, callback) {
var someNewData = context.variables.someData + " - added something";
callback(null, {
variables: {
someNewData: someNewData
}
});
});
workers.shutdown();
рдердк рдЬрд╛рдирдХрд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ
рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рд▓рдиреНрдЪ рдЧрд░реНрдиреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░рд┐рдХрд╛рд╣рд░реВ
"Camunda рд╕реНрдЯреНрдпрд╛рдиреНрдбрдЕрд▓реЛрди WAR" рд╕рдВрдЧ рдХрд╕реНрдЯрдо рдбрдХрд░ рдЫрд╡рд┐
рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдмрд╛рдЯ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдЯрдордХреНрдпрд╛рдЯ рдЖрдлреИрдВ рддрдпрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбрдХрд░ рдЯрдордХреНрдпрд╛рдЯ рдЫрд╡рд┐рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд) рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХрдореБрдиреНрдбрд╛рд▓рд╛рдИ рдПрдХ рддрдерд╛рдХрдерд┐рдд WAR рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдзреЗрд░реИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдЫрдиреН рд░ рдЬрд╛рднрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рд╕реНрдЯреНрдпрд╛рдиреНрдбрдЕрд▓реЛрди рдпреБрджреНрдз рдкрдирд┐ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдорд╛ рдЬрд╕реНрддреИ Maven рдирд┐рд░реНрдорд╛рдг рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдирд┐рд░реНрдорд╛рдг
Camunda Tomcat рд╡рд┐рддрд░рдг рд╕реБрд░реБ рдЧрд░реНрджреИ
рдЕрд░реНрдХреЛ рд╡рд┐рдХрд▓реНрдк рднрдиреЗрдХреЛ Camunda Tomcat рд╡рд┐рддрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ рдЕрдирдЬрд┐рдк рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ Java Runtime Environment (JRE) рд╕реНрдерд╛рдкрдирд╛ рднрдПрдХреЛ рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рд╕рдЬрд┐рд▓реИ рд╣реБрди рд╕рдХреНрдЫ
рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╡рд╛ рдЕрд░реВ рдХреЗрд╣рд┐ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рддрдкрд╛рдИрд▓реЗ Tomcat рд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
Tomcat рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Camunda рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ
рдЕрдиреНрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рднрдиреЗрдХреЛ рдЯрдордХреНрдпрд╛рдЯ рдЖрдлреИрдВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреБ рд░ рдпрд╕рдорд╛ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рд╣реЛ,
рдХреНрдпрд╛рдореБрдиреНрдбрд╛рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рд▓рдиреНрдЪ рдЧрд░реНрджреИ
рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ Camunda рдЪрд▓рд╛рдЙрди рдХреЗрд╣рд┐ рдЕрдиреНрддрд┐рдо рд╕реЗрдЯрдЕрдк рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред рддреНрдпрд╣рд╛рдБ рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдорд╛ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢рд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ, рддрд░ рдо рдпрд╕ рд▓реЗрдЦрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЬрд╛рдиреЗрдЫреИрди - рдо рдХреЗрд╡рд▓ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рдирд╛рдо рджрд┐рдиреЗрдЫреБ: рд╡рд┐рддрд░рдгрдХреЛ REST API рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рд╣реЛрд▓рд╛ред
рд╕рдВрдХреНрд╖реЗрдк рд╣реБрдБрджреИ
рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рддрдкрд╛рдИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣рдиреБ рднрдПрдХреЛ рднрд╛рд╖рд╛рдХреЛ рдкрд░реНрд╡рд╛рд╣ рдирдЧрд░реА Camunda рд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред рдореБрдЦреНрдп рдмрд┐рдиреНрджреБ рдпреЛ рд╣реЛ рдХрд┐ рд╕рдмреИ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ REST API рдорд╛рд░реНрдлрдд рдЧрд░рд┐рдиреНрдЫред рд╕реНрдерд╛рдкрдирд╛ рдкрдирд┐ рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ред
рд╕реНрд░реЛрдд: www.habr.com