แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒฐแƒ”แƒ˜ แƒฐแƒแƒ‘แƒ ! แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก แƒฌแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ’แƒ”แƒœแƒ— แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒก โ€žแƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ” แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ REST-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒซแƒ แƒแƒ•แƒ (แƒฏแƒแƒ•แƒแƒก แƒจแƒ”แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”)โ€œ แƒ‘แƒ”แƒ แƒœแƒ“ แƒ แƒ˜แƒ™แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ .

07.07.2020/XNUMX/XNUMX, แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ แƒ›แƒฃแƒฎแƒšแƒ˜ แƒ‘แƒ”แƒ แƒœแƒ“ แƒ แƒ˜แƒ™แƒ”แƒ แƒ˜

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒ›แƒ” แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ• แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒแƒก แƒแƒ แƒ Java แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ—แƒแƒœ: C#, Node.JS/JavaScript แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒแƒœ Golang-แƒ˜แƒก แƒ›แƒแƒงแƒ•แƒแƒ แƒฃแƒšแƒ”แƒ‘แƒ—แƒแƒœ. แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ—แƒ’แƒแƒœแƒก แƒ”แƒ›แƒฃแƒฅแƒ แƒ”แƒ‘แƒ แƒ˜แƒก แƒคแƒแƒฅแƒขแƒ˜, แƒ แƒแƒ› แƒ›แƒแƒ— แƒ”แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒแƒ— แƒกแƒแƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ แƒซแƒ แƒแƒ•แƒ แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒแƒจแƒ˜ แƒแƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒจแƒ”แƒ™แƒ•แƒ”แƒ—แƒ˜แƒก, แƒ“แƒ แƒแƒ˜แƒก แƒ’แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก, แƒกแƒแƒ’แƒแƒกแƒ แƒ“แƒ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒ”แƒœแƒกแƒแƒชแƒ˜แƒ˜แƒก แƒฃแƒœแƒแƒ แƒ˜แƒก แƒ›แƒแƒกแƒแƒžแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“.

BPM แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ แƒฆแƒ˜แƒ แƒฌแƒงแƒแƒ แƒ แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒกแƒ’แƒแƒœ แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ™แƒ”แƒ—แƒ˜แƒšแƒ’แƒแƒœแƒฌแƒงแƒแƒ‘แƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒ›แƒ˜แƒก แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒก, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ’แƒ”แƒฅแƒ›แƒœแƒแƒ— แƒจแƒ—แƒแƒ‘แƒ”แƒญแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ™แƒ”แƒ—แƒ˜แƒšแƒ’แƒแƒœแƒฌแƒงแƒแƒ‘แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒแƒ“ Java-แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ–แƒ”แƒ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜. แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ แƒฃแƒแƒ›แƒ แƒแƒ• แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ Java-แƒจแƒ˜. แƒ›แƒแƒ แƒ—แƒšแƒ?

แƒแƒ แƒ! แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— Camunda Java-แƒก แƒชแƒแƒ“แƒœแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒ”แƒœแƒแƒ–แƒ” แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ—:

  • แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ;
  • REST API;
  • แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ Java-แƒก แƒ’แƒแƒ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก;
  • C# แƒ“แƒ Node.JS แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜;
  • Camunda แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก (Docker แƒแƒœ Tomcat) แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ–แƒ”แƒ‘แƒ˜.

แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ

Camunda แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒฏแƒแƒ•แƒแƒจแƒ˜ แƒ“แƒ แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก Java แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒก (JVM). Camunda แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— REST API-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒ”แƒœแƒแƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— REST แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“:

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒจแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ BPMN-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒแƒ“ XML แƒคแƒแƒ˜แƒšแƒ˜แƒ. แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒ”แƒ แƒ˜.

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ Docker แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒ’แƒ–แƒแƒ Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ’แƒ–แƒ”แƒ‘แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ—:

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

แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ˜แƒœแƒ”แƒ แƒ•แƒ˜แƒฃแƒšแƒแƒ— Linux-แƒ–แƒ”, Java-แƒ˜แƒก แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ–แƒ” แƒแƒœ Tomcats-แƒ–แƒ”. Dockerfiles แƒ“แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜) แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒแƒฅ Github.

แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— Camunda Enterprise Edition, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— dockerfile.

แƒ—แƒฃแƒ›แƒชแƒ, แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ” แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒจแƒ˜: แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— Tomcat-แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฃแƒแƒฎแƒšแƒ”แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ”แƒ‘แƒก. แƒแƒ›แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒกแƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ—แƒแƒ•แƒแƒ“ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— Docker แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ Tomcat แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜, แƒแƒœ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ.

แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก แƒกแƒแƒ’แƒแƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒกแƒแƒ›แƒแƒ’แƒ–แƒแƒฃแƒ แƒ แƒ“แƒแƒฏแƒแƒ•แƒจแƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒกแƒแƒ“แƒแƒช แƒ’แƒกแƒฃแƒ แƒ— แƒ–แƒ”แƒ“แƒ˜แƒ–แƒ”แƒ“ แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒ แƒ“แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒœแƒ˜แƒšแƒ˜ แƒแƒœแƒแƒ–แƒฆแƒแƒฃแƒ แƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜. BPMN แƒกแƒแƒฎแƒ˜แƒ— แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜, แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒแƒฎแƒšแƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— REST API แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ— แƒ˜แƒก trip.bpmn-แƒแƒ“ แƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— Camunda Docker-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—, แƒแƒกแƒ” แƒ แƒแƒ› แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ˜แƒงแƒ localhost: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

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒแƒ แƒ˜แƒก แƒ แƒแƒ’แƒแƒ  แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒก แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒ แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒก แƒ“แƒแƒฏแƒแƒ•แƒจแƒœแƒ? แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ“แƒแƒ แƒ”แƒ™แƒแƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜ (Push-Principle), แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ”แƒ‘แƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒกแƒ›แƒ แƒ”แƒ แƒ—แƒ’แƒ•แƒแƒ  แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ แƒ˜แƒ’แƒจแƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒฃแƒจแƒแƒ™แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒ˜ REST-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒ แƒจแƒ”แƒแƒขแƒงแƒแƒ‘แƒ˜แƒœแƒแƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ Camunda-แƒก (Pull-Principle).

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒแƒกแƒ” แƒ แƒแƒ›, แƒฏแƒ”แƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— 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

แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒฃแƒ—แƒฎแƒแƒ แƒ˜ แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ›แƒฃแƒจแƒแƒ› แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ (แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ แƒ” แƒแƒ›แƒแƒชแƒแƒœแƒ˜แƒก ID แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒแƒ—):

  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. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒก แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒแƒกแƒ” แƒ แƒแƒ›, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ.

แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒ–แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ:

  • Javascript: แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜. แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—;
  • แƒฏแƒแƒ•แƒ: แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜. แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—;
  • 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 standalone WAR"-แƒ˜แƒ—

แƒ แƒแƒ’แƒแƒ แƒช Camunda-แƒ“แƒแƒœ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ Docker แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒ•แƒ, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒแƒ›แƒ–แƒแƒ“แƒแƒ— Tomcat (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ Docker Tomcat แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”) แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒแƒ— Camunda แƒ›แƒแƒกแƒจแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ”.แƒฌ. WAR แƒคแƒแƒ˜แƒšแƒ˜.

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ“แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— Java-แƒก แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒ, แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— Camunda Standalone War-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— Maven build, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒจแƒ˜: build Maven แƒแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ— แƒแƒœ แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ Maven แƒ”แƒ แƒ—แƒแƒ“ Overlay.

Camunda Tomcat-แƒ˜แƒก แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— Camunda Tomcat แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒ, แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ˜แƒ’แƒ˜ แƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ—. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ Java Runtime Environment (JRE) แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒแƒฅแƒ”แƒ“แƒแƒœ.

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก REST แƒ“แƒ Workflow Engine-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ (แƒแƒ แƒ แƒฏแƒแƒ•แƒ)

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ”แƒกแƒแƒชแƒ•แƒšแƒ”แƒšแƒแƒ“ แƒแƒœ แƒกแƒฎแƒ•แƒ แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒšแƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ Tomcat like-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜. แƒ›แƒ” แƒ•แƒ˜แƒชแƒ˜, แƒ แƒแƒ› Tomcat แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒ“แƒ”แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜ แƒ”แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ. แƒ“แƒ Google-แƒก แƒแƒฅแƒ•แƒก แƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ— แƒแƒ› แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜.

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ Tomcat-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒ‘แƒแƒšแƒ แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒ•แƒ แƒแƒ แƒ˜แƒก Tomcat-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ›แƒแƒกแƒจแƒ˜ Camunda-แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒ”แƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— Tomcat-แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒแƒœ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— Windows แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒแƒ“.

แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“. แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒก แƒแƒฅแƒ•แƒก แƒ’แƒแƒ˜แƒ“แƒšแƒแƒ˜แƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒแƒ›แƒแƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ” แƒ›แƒแƒ— แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒแƒ  แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ‘แƒ˜ - แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ— แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก แƒ›แƒแƒ•แƒ˜แƒงแƒ•แƒแƒœ: แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒ˜แƒก REST API แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒกแƒฃแƒ แƒ— แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— แƒ”แƒก.

แƒจแƒ”แƒ›แƒแƒฏแƒแƒ›แƒ”แƒ‘แƒ”แƒšแƒ˜-up

แƒ แƒแƒ’แƒแƒ แƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒœแƒ˜แƒจแƒœแƒ”แƒ—, แƒ™แƒแƒ›แƒฃแƒœแƒ“แƒแƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ, แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ—แƒฃ แƒ แƒ แƒ”แƒœแƒแƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ—. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒฎแƒ“แƒ”แƒ‘แƒ REST API-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒแƒกแƒ”แƒ•แƒ” แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ