REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рд╣реЗ рд╣рд╛рдмрд░! рдо рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рдирд╛рдХрд░реНрд╖рдгрдорд╛ рд▓реЗрдЦрдХреЛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрджрдЫреБ "Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ REST-рдЖрдзрд╛рд░рд┐рдд рдЖрд░реНрдХреЗрд╕реНрдЯреНрд░рд╛ рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЬрд╛рднрд╛ рдирдЫреЛрдЗрдХрди)" Bernd R├╝cker рджреНрд╡рд╛рд░рд╛ред

режрен/режрен/реирежреиреж, рдЕрдиреБрд╡рд╛рдж рд▓реЗрдЦ рдмрд░реНрдиреНрдб рд░реБрдХрд░

REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рдо рдкреНрд░рд╛рдпрдГ рдЧреИрд░-рдЬрд╛рднрд╛ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд╕рдБрдЧ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЫрд▓рдлрд▓ рдЧрд░реНрдЫреБ: C# рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ, Node.JS/JavaScript рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ, рд╡рд╛ Golang aficionadosред рддреА рд╕рдмреИрд▓рд╛рдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдорд╛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдореЗрдХрд╛рдирд┐рдЬрдо рдЪрд╛рд╣рд┐рдиреНрдЫ, рд╡рд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд▓рд╛рдИ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рд░ рдЕрд░реНрдбрд░ рдЧрд░реНрдиреЗ, рдЯрд╛рдЗрдордЖрдЙрдЯрд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреЗ, рд╕рд╛рдЧрд╛ рд░ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдЧрд░реНрдиреЗ рд▓реЗрдирджреЗрдирд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреНрдиреЗ рддрдереНрдпрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБ рдкрд░реЗрдХреЛ рдЫред

BPM рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд╕рд╛рде Camunda рдмрд╛рдЯ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рддреНрдпрд╕реНрддрд╛ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрдХреГрд╖реНрдЯред рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдорд┐рддреНрд░рддрд╛ рдЙрддреНрдкрд╛рджрдирдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛред рддрд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рдХрд╛рдЧрдЬрд╛рдд рд╣реЗрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдХреЛ "рдорд┐рддреНрд░рддрд╛" рдореБрдЦреНрдп рд░реВрдкрдорд╛ рдЬрд╛рднрд╛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рд▓рдХреНрд╖рд┐рдд рдЧрд░реЗрдХреЛ рдЫ рднрдиреНрдиреЗ рдЫрд╛рдк рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреНрд▓реЗрдЯрдлрд░реНрдорд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рддрд░ рдпреЛ рд╕рдмреИ Java рдорд╛ рдЧрд░рд┐рдиреНрдЫред рдХреЗ рдпреЛ рд╕рд╛рдБрдЪреНрдЪреИ рд╣реЛ?

рд╣реЛрдЗрди! рд╡рд╛рд╕реНрддрд╡рдорд╛, рддрдкрд╛рдЗрдБ рд╕рдЬрд┐рд▓реИ рд╕рдВрдЧ рдХреБрдиреИ рдЬрд╛рднрд╛ рдЬреНрдЮрд╛рди рдмрд┐рдирд╛ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рддрдкрд╛рдЗрдБрдХреЛ рдордирдкрд░реНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рднрд╛рд╖рд╛рдорд╛ рдХреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕ рд▓реЗрдЦрдорд╛, рд╣рд╛рдореА рд╣реЗрд░реНрдиреЗрдЫреМрдВ:

  • рдЖрдзрд╛рд░рднреВрдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛;
  • REST API
  • рдЬрд╛рднрд╛ рдмрд╛рд╣реЗрдХ рдЕрдиреНрдп рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЧреНрд░рд╛рд╣рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдорд╛ рд╕рд▓реНрд▓рд╛рд╣;
  • рдЙрджрд╛рд╣рд░рдг C# рд░ Node.JS рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░;
  • Camunda рд╕рд░реНрднрд░ (рдбрдХрд░ рд╡рд╛ Tomcat) рд╕реБрд░реБ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЬрд╛рднрд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рд░ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рднрд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди (JVM) рдЪрд╛рд╣рд┐рдиреНрдЫред Camunda рд▓реЗ REST API рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдордирдкрд░реНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рднрд╛рд╖рд╛рдорд╛ рд▓реЗрдЦреНрди рд░ Camunda рд╕рдБрдЧ REST рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ:

REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдорд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд╣рд░реВ BPMN рдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬреБрди рдореВрд▓ рд░реВрдкрдорд╛ XML рдлрд╛рдЗрд▓ рд╣реЛред рдпрд╕рдХреЛ рд╕рд╛рде рдореЛрдбреЗрд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдореЛрдбреЗрд▓рд░.

рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдбрдХрд░ рдЫрд╡рд┐ рдорд╛рд░реНрдлрдд рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдБрджреИ

рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛред рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдиреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░рд┐рдХрд╛рд╣рд░реВ рдпрд╕ рд▓реЗрдЦрдорд╛ рдкрдЫрд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред

REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдмрд╕ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

  docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest

рддрдкрд╛рдИрдВрд▓реЗ рд▓рд┐рдирдХреНрд╕, JVMs рд╡рд╛ Tomcats рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЪрд┐рдиреНрддрд╛ рд▓рд┐рдиреБ рдкрд░реНрджреИрдиред Dockerfiles рд░ рдЖрдзрд╛рд░рднреВрдд рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдЯрд╛рдмреЗрд╕ рдЬрдбрд╛рди рдЧрд░реНрди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ) рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫрдиреН Github.

рдпрджрд┐ рддрдкрд╛рдЗрдБ Camunda рдЗрдиреНрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рд╕рдЬрд┐рд▓реИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдбрдХрд░рдлрд╛рдЗрд▓.

рдЬреЗ рд╣реЛрд╕реН, рдбрдХрд░рд╕рдБрдЧ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдиреБрдХреЛ рдПрдЙрдЯрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдЫ: рддрдкрд╛рдЗрдБ рдЯрдордХреНрдпрд╛рдЯрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреБрд╣реБрдиреЗрдЫ рдЬреБрди рд╕рдБрдзреИ рдирд╡реАрдирддрдо рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрдиред рдпрд╕рдХреЛ рд╡рд░рд┐рдкрд░рд┐ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рджреЗрдЦрд╛рдЗрдП рдЕрдиреБрд╕рд╛рд░ рд╡рд╛рдВрдЫрд┐рдд Tomcat рд╡рд┐рддрд░рдгрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЖрдлреНрдиреИ рдбрдХрд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ рддрд▓ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЛрдбреЗрд▓ рддреИрдирд╛рддреА

рдХреНрд▓рд╛рд╕рд┐рдХ рдЯреНрд░рд┐рдк рдмреБрдХрд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЧрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВ рдЬрд╣рд╛рдБ рддрдкрд╛рдИрдВ рдкрдЩреНрдХреНрддрд┐рдорд╛ рддреАрдирд╡рдЯрд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдЯреНрд░рд┐рдЧрд░ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рд░ рдкрдЫрд┐ рдЕрд╕рдлрд▓ рднрдПрдорд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдореНрдкрдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рджрд┐рди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫред BPMN рдлрд╛рд░рдордорд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдПрдХреЛ, рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рдЕрдм рддрдкрд╛рдИрдВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЛрдбреЗрд▓ рдкрд░рд┐рдирд┐рдпреЛрдЬрдирдХреЛ рд▓рд╛рдЧрд┐ REST APIред рдорд╛рдиреМрдВ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ trip.bpmn рдХреЛ рд░реВрдкрдорд╛ рдмрдЪрдд рдЧрд░реНрдиреБрднрдпреЛ рд░ рдбрдХрд░ рдорд╛рд░реНрдлрдд рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рддрд╛рдХрд┐ рдпреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ:8080 рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ:

  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

рдЕрдм рддрдкрд╛рдИрдВ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдирдпрд╛рдБ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ REST API рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░ рддрдкрд╛рдИрд▓реЗ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЙрджрд╛рд╣рд░рдг рдЪрд░рдХреЛ рд░реВрдкрдорд╛ рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреБрднрдПрдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

  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

рдЕрд░реНрдХреЛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдкреНрд░рд╢реНрди рд╣реЛ: рдХреНрдпрд╛рдореБрдиреНрдбрд╛рд▓реЗ рдХрд╛рд░ рдмреБрдХрд┐рдЩ рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдХрд╕рд░реА рдХрд▓ рдЧрд░реНрдЫ? рдХреНрдпрд╛рдореБрдиреНрдбрд╛рд▓реЗ рдХреЗрд╣реА рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрддреНрдХрд╛рд▓ рд╕реЗрд╡рд╛рд╣рд░реВ (рдкреБрд╢-рд╕рд┐рджреНрдзрд╛рдиреНрдд) рдХрд▓ рдЧрд░реНрди рд╕рдХреНрджреИрди рдЬрдбрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ, рддрд░ рдПрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдмрд┐рд▓реНрдЯ-рдЗрди рдХреНрд░рдордорд╛ рдХрд╛рд░реНрдп рд╡рд╕реНрддреБрд╣рд░реВ рдкрдирд┐ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред рддреНрдпрд╕рдкрдЫрд┐ рдХрд╛рдорджрд╛рд░рд▓реЗ REST рдорд╛рд░реНрдлрдд рдХрд╛рдордХрд╛ рд╡рд╕реНрддреБрд╣рд░реВ рд▓реНрдпрд╛рдЙрди рд╕рдХреНрдЫ, рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ Camunda рд▓рд╛рдИ рдкреВрд░рд╛ рдЧрд░реНрди (рдкреБрд▓-рд╕рд┐рджреНрдзрд╛рдиреНрдд) рднрдиреНрди рд╕рдХреНрдЫред

REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рддреНрдпрд╕реИрд▓реЗ рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ fetchAndLock (рдХрд┐рдирдХрд┐ рдЕрдиреНрдп рдХрд╛рдорджрд╛рд░рд╣рд░реВрд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдорд╛рдкрди рдЧрд░реНрди рдПрдХреИ рд╕рдордпрдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫрдиреН):

  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();

рдердк рдЬрд╛рдирдХрд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ github.com

рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рд▓рдиреНрдЪ рдЧрд░реНрдиреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░рд┐рдХрд╛рд╣рд░реВ

"Camunda рд╕реНрдЯреНрдпрд╛рдиреНрдбрдЕрд▓реЛрди WAR" рд╕рдВрдЧ рдХрд╕реНрдЯрдо рдбрдХрд░ рдЫрд╡рд┐

рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдмрд╛рдЯ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдЯрдордХреНрдпрд╛рдЯ рдЖрдлреИрдВ рддрдпрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбрдХрд░ рдЯрдордХреНрдпрд╛рдЯ рдЫрд╡рд┐рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд) рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХрдореБрдиреНрдбрд╛рд▓рд╛рдИ рдПрдХ рддрдерд╛рдХрдерд┐рдд WAR рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдзреЗрд░реИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдЫрдиреН рд░ рдЬрд╛рднрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рд╕реНрдЯреНрдпрд╛рдиреНрдбрдЕрд▓реЛрди рдпреБрджреНрдз рдкрдирд┐ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдорд╛ рдЬрд╕реНрддреИ Maven рдирд┐рд░реНрдорд╛рдг рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдирд┐рд░реНрдорд╛рдг рдпреБрджреНрдз рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдВрдЧ Maven рд╡рд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдУрднрд░рд▓реЗ рд╕рдВрдЧ Maven.

Camunda Tomcat рд╡рд┐рддрд░рдг рд╕реБрд░реБ рдЧрд░реНрджреИ

рдЕрд░реНрдХреЛ рд╡рд┐рдХрд▓реНрдк рднрдиреЗрдХреЛ Camunda Tomcat рд╡рд┐рддрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ рдЕрдирдЬрд┐рдк рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ Java Runtime Environment (JRE) рд╕реНрдерд╛рдкрдирд╛ рднрдПрдХреЛ рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рд╕рдЬрд┐рд▓реИ рд╣реБрди рд╕рдХреНрдЫ рдпрд╣рд╛рдБрдмрд╛рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН.

REST рд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрдиреНрдЬрд┐рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдЬрд┐рд▓реЛ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ Camunda рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ (рдЬрд╛рднрд╛ рдЫреИрди)

рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╡рд╛ рдЕрд░реВ рдХреЗрд╣рд┐ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рддрдкрд╛рдИрд▓реЗ Tomcat рд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ Tomcat рдЬрдЯрд┐рд▓ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫ, рддрд░ рдпреЛ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫред рд░ Google рд▓рд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛рдХреЛ рдЬрд╡рд╛рдл рдерд╛рд╣рд╛ рдЫред

Tomcat рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Camunda рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ

рдЕрдиреНрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рднрдиреЗрдХреЛ рдЯрдордХреНрдпрд╛рдЯ рдЖрдлреИрдВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреБ рд░ рдпрд╕рдорд╛ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рд╣реЛ, рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рд╡рд░рдг рдкрдЫреНрдпрд╛рдЙрдБрджреИред рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ Tomcat рдХреЛ рдЬреБрдирд╕реБрдХреИ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рдХрд▓реНрдк рджрд┐рдиреЗрдЫ, рд╡рд╛ рдпрд╕рд▓рд╛рдИ Windows рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ред

рдХреНрдпрд╛рдореБрдиреНрдбрд╛рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рд▓рдиреНрдЪ рдЧрд░реНрджреИ

рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ Camunda рдЪрд▓рд╛рдЙрди рдХреЗрд╣рд┐ рдЕрдиреНрддрд┐рдо рд╕реЗрдЯрдЕрдк рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред рддреНрдпрд╣рд╛рдБ рдХреНрдпрд╛рдореБрдиреНрдбрд╛рдорд╛ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢рд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ, рддрд░ рдо рдпрд╕ рд▓реЗрдЦрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЬрд╛рдиреЗрдЫреИрди - рдо рдХреЗрд╡рд▓ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рдирд╛рдо рджрд┐рдиреЗрдЫреБ: рд╡рд┐рддрд░рдгрдХреЛ REST API рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рд╣реЛрд▓рд╛ред

рд╕рдВрдХреНрд╖реЗрдк рд╣реБрдБрджреИ

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рддрдкрд╛рдИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣рдиреБ рднрдПрдХреЛ рднрд╛рд╖рд╛рдХреЛ рдкрд░реНрд╡рд╛рд╣ рдирдЧрд░реА Camunda рд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред рдореБрдЦреНрдп рдмрд┐рдиреНрджреБ рдпреЛ рд╣реЛ рдХрд┐ рд╕рдмреИ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ REST API рдорд╛рд░реНрдлрдд рдЧрд░рд┐рдиреНрдЫред рд╕реНрдерд╛рдкрдирд╛ рдкрдирд┐ рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди