REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เดนเต‡ เดนเดฌเตผ! เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดžเดพเตป เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเตเดฐเดฆเตเดงเดฏเดฟเตฝเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต "เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดŽเดณเตเดชเตเดชเดฎเตเดณเตเดณ REST-เด…เดงเดฟเดทเตโ€Œเด เดฟเดค เด“เตผเด•เตเด•เดธเตโ€ŒเดŸเตเดฐเต‡เดทเดจเตเด‚ เดตเตผเด•เตเด•เตโ€Œเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเดจเตเด‚ (เดœเดพเดตเดฏเดฟเตฝ เดคเตŠเดŸเดพเดคเต†) เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•" เดฌเต†เตผเตปเดกเต เดฑเต‚เด•เตเด•เตผ เดŽเดดเตเดคเดฟเดฏเดคเต.

07.07.2020/XNUMX/XNUMX, เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดฒเต‡เด–เดจเด™เตเด™เตพ เดฌเต†เตผเตปเดกเต เดฑเด•เตเด•เตผ

REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เดœเดพเดต เด…เดฒเตเดฒเดพเดคเตเดค เด†เดณเตเด•เดณเตเดฎเดพเดฏเดฟ เดžเดพเตป เดฎเตˆเด•เตเดฐเต‹ เดธเตผเดตเต€เดธเต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเต เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเดฑเตเดฃเตเดŸเต: C# เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ, Node.JS/JavaScript เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Golang เด†เดฐเดพเดงเด•เตผ. เด’เดฐเต เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเตฝ เด’เดฐเต เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเตป เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเดจเตเด‚ เด“เตผเดกเตผ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดŸเตˆเด‚เด”เดŸเตเดŸเตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดธเดพเด— เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดจเดทเตเดŸเดชเดฐเดฟเดนเดพเดฐ เด‡เดŸเดชเดพเดŸเตเด•เตพ เดจเดŸเดคเตเดคเดพเดจเตเดฎเตเดณเตเดณ เด•เดดเดฟเดตเต เดจเต‡เดŸเดพเดจเตเดฎเตเดณเตเดณ เด’เดฐเต เด‰เดชเด•เดฐเดฃเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต‹ เด…เดตเตผเด•เตเด•เต†เดฒเตเดฒเดพเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต.

เด•เต‚เดŸเต† BPM เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚ เด•เดพเดฎเตเดฃเตเดŸเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เด…เดคเตเดคเดฐเด‚ เดœเต‹เดฒเดฟเด•เตพเด•เตเด•เต เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต. เดกเดตเดฒเดชเตเดชเตผ เดธเต—เดนเตƒเดฆเดฎเดพเดฃเต เด‰เตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเดฟเดฒเตŠเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเดจเตเดฑเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดจเต‹เด•เตเด•เดฟเดฏเดพเตฝ, เด•เดพเดฎเตเดฃเตเดŸเดฏเตเดŸเต† "เดธเต—เดนเตƒเดฆเด‚" เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเตเด‚ เดœเดพเดต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต† เดฒเด•เตเดทเตเดฏเด‚ เดตเดšเตเดšเตเดณเตเดณเดคเดพเดฃเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเต‹เดจเตเดจเดพเด‚. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเด‚ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚ เดงเดพเดฐเดพเดณเด‚ เด“เดชเตเดทเดจเตเด•เตพ เดจเตฝเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดœเดพเดตเดฏเดฟเดฒเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต. เด…เดคเต เดถเดฐเดฟเด•เตเด•เตเด‚ เด†เดฃเต‹?

เด‡เดฒเตเดฒ! เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดœเดพเดต เดชเดฐเดฟเดœเตเดžเดพเดจเดฎเดฟเดฒเตเดฒเดพเดคเต† เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ Camunda เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดทเตเดŸเดฎเตเดณเตเดณ เดเดคเต เดญเดพเดทเดฏเดฟเดฒเตเด‚ เด•เต‹เดกเดฟเดจเดพเดฏเดฟ เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดจเต‹เด•เตเด•เตเด‚:

  • เด…เดŸเดฟเดธเตเดฅเดพเดจ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ;
  • REST API
  • เดœเดพเดต เด’เดดเดฟเด•เต†เดฏเตเดณเตเดณ เดญเดพเดทเด•เตพเด•เตเด•เดพเดฏเดฟ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด•เตเดฒเดฏเดจเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด‰เดชเดฆเต‡เดถเด‚;
  • C#, Node.JS เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเด‚;
  • เด•เดพเดฎเตเดฃเตเดŸ เดธเต†เตผเดตเตผ (เดกเต‹เด•เตเด•เตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต) เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดดเดฟเด•เตพ.

เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ

เดœเดพเดตเดฏเดฟเดฒเดพเดฃเต เด•เดพเดฎเตเดฃเตเดŸ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด’เดฐเต เดœเดพเดต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป (เดœเต†เดตเดฟเดŽเด‚) เด†เดตเดถเตเดฏเดฎเดพเดฃเต. Camunda เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดทเตเดŸเดฎเตเดณเตเดณ เดเดคเต เดญเดพเดทเดฏเดฟเดฒเตเด‚ เดŽเดดเตเดคเดพเดจเตเด‚ Camunda เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต REST เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต REST API เดจเตฝเด•เตเดจเตเดจเต:

REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เด•เดพเดฎเตเดฃเตเดŸเดฏเดฟเดฒเต† เดตเตผเด•เตเด•เตเดซเตเดฒเต‹เด•เตพ เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เด’เดฐเต XML เดซเดฏเดฒเดพเดฏ BPMN-เตฝ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดคเตƒเด•เดฏเดพเด•เตเด•เดพเด‚ เด•เดพเดฎเตเดฃเตเดŸ เดฎเต‹เดกเดฒเตผ.

เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเต‚เดŸเต† เด•เดพเดฎเตเดฃเตเดŸ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เด•เดพเดฎเตเดฃเตเดŸ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดŽเดณเตเดชเตเดช เดฎเดพเตผเด—เด‚ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. Camunda เดตเดฟเด•เตเดทเต‡เดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‡เดคเดฐ เดฎเดพเตผเด—เด™เตเด™เตพ เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

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

เดจเดฟเด™เตเด™เตพ Linux, JVMs เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Tomcats เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเตเด•เดณเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเตเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด†เดตเดถเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ) เดฒเดญเตเดฏเดฎเดพเดฃเต เดธเดพเดฎเต‚เดนเดฟเด•เด‚.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฎเตเดฃเตเดŸ เดŽเดจเตเดฑเตผเดชเตเดฐเตˆเดธเต เดชเดคเดฟเดชเตเดชเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดพเดจเดพเด•เตเด‚ Dockerfile.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดกเต‹เด•เตเด•เดฑเดฟเดจเตŠเดชเตเดชเด‚ เด•เดพเดฎเตเดฃเตเดŸ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เดชเต‹เดฐเดพเดฏเตเดฎเดฏเตเดฃเตเดŸเต: เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดคเตเดค เดŸเต‹เด‚เด•เดพเดฑเตเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดชเดคเดฟเดชเตเดชเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚. เด‡เดคเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดˆ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต เดตเดฟเดคเดฐเดฃเดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดšเตเดตเดŸเต† เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เดณเดฟเดฒเตŠเดจเตเดจเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•.

เดชเตเดฐเต‹เดธเดธเต เดฎเต‹เดกเตฝ เดตเดฟเดจเตเดฏเดพเดธเด‚

เด’เดฐเต เด•เตเดฒเดพเดธเดฟเด•เต เดŸเตเดฐเดฟเดชเตเดชเต เดฌเตเด•เตเด•เดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดธเดพเด— เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚, เด…เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เดฎเต‚เดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดŸเตเดฐเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดชเดฟเดจเตเดจเต€เดŸเต เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเดพเตฝ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพเด•เตเด•เต เดฎเดจเต‹เดนเดฐเดฎเดพเดฏเดฟ เดจเดทเตเดŸเดชเดฐเดฟเดนเดพเดฐเด‚ เดจเตฝเด•เดพเดจเตเด‚ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. BPMN เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต:

REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดฎเต‹เดกเตฝ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดณเตเดณ REST API. เดจเดฟเด™เตเด™เตพ เด‡เดคเต trip.bpmn เด†เดฏเดฟ เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเต เดกเต‹เด•เตเด•เตผ เดตเดดเดฟ Camunda เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•, เด…เดคเดฟเดจเดพเตฝ เด‡เดคเต เดฒเต‹เด•เตเด•เตฝ เดนเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต: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 เดตเดดเดฟ เดตเตผเด•เตเด•เต เด‡เดจเด™เตเด™เตพ เดŽเดŸเตเด•เตเด•เดพเดจเตเด‚ เดœเต‹เดฒเดฟ เดจเดฟเตผเดตเดนเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดพเดฎเตเดฃเตเดŸเดฏเต† เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเตป เดชเดฑเดฏเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ (เดชเตเตพ-เดชเตเดฐเดฟเตปเดธเดฟเดชเตเดชเตฝ).

REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เด…เดคเดฟเดจเดพเตฝ เด†เดฆเตเดฏเด‚ เดจเดฟเด™เตเด™เตพ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต 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 เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเด‚ เด‡เดคเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต. เดŽเดจเตเดจเดพเตฝ เด‡เดคเดฟเดจเต เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเด‚. เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เตเดฑเดšเตเดšเต เด•เตเดฒเดฏเดจเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เด‡เดชเตเดชเต‹เตพ, เดจเดฟเดฐเดตเดงเดฟ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เด•เตเดฒเดฏเดจเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต:

  • เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต: เดฒเดฟเด™เตเด•เต. เด•เดพเดฎเตเดฃเตเดŸ เดชเดฟเดจเตเดคเตเดฃเดšเตเดšเต;
  • เดœเดพเดต: เดฒเดฟเด™เตเด•เต. เด•เดพเดฎเตเดฃเตเดŸ เดชเดฟเดจเตเดคเตเดฃเดšเตเดšเต;
  • เดธเดฟ #:เดฒเดฟเด™เตเด•เต ะธ เดฒเดฟเด™เตเด•เต. เดˆ เดฐเดฃเตเดŸเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเตเด‚ เด’เดฐเต เด‡เดจเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เด…เดตเดธเตเดฅเดฏเดฟเดฒเดพเดฃเต, เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เด’เดฐเต เดจเดฒเตเดฒ เด†เดฐเด‚เดญ เดชเต‹เดฏเดฟเดจเตเดฑเดพเดฏเดฟ เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚;
  • PHP: เดฒเดฟเด™เตเด•เต - เดตเดณเดฐเต† เดชเต‚เตผเดฃเตเดฃเดฎเดฒเตเดฒ, เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ API เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพ เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดพเด‚.

JavaScript, Java เดŽเดจเตเดจเดฟเดต เด’เดดเดฟเด•เต†, เด•เตเดฒเดฏเดจเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ Camunda เด‰เตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดคเดจเตเดจเต† เดญเดพเด—เดฎเดฒเตเดฒ. เด•เดพเดฎเตเดฃเตเดŸเดฏเตเดŸเต† เดŽเดฒเตเดฒเดพ REST API เดซเต€เดšเตเดšเดฑเตเด•เดณเต‡เดฏเตเด‚ เด…เดตเตผ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เดฐเตเดคเต. เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดซเด‚เด—เตโ€Œเดทเตป เดจเตฝเด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ เด…เดคเต เด…เดตเดฟเดŸเต† เด‡เดฒเตเดฒเต†เดจเตเดจเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดชเตเดชเต‹เดดเตเด‚ เด•เดพเดฎเตเดฃเตเดŸเดฏเตเดŸเต† REST API เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•. เดฑเดซเดฑเตปเดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพ เด’เดฐเต เด†เดฐเด‚เดญ เดชเต‹เดฏเดฟเดจเตเดฑเดพเดฏเตเด‚ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเดพเดฏเตเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดธเดฟ # เด‰เดฆเดพเดนเดฐเดฃเด‚

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด•เตเดฒเดฏเดจเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฎเตเด•เตเด•เต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดŽเดดเตเดคเดพเด‚:

  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" เด‰เดณเตเดณ เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเด‚

เด•เดพเดฎเตเดฃเตเดŸเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเต เดชเด•เดฐเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเดฏเด‚ เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดพเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเด•เตผ เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต เดšเดฟเดคเตเดฐเด™เตเด™เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ) เดคเตเดŸเตผเดจเตเดจเต WAR เดซเดฏเดฒเตเด•เดณเดฟเตฝ เด’เดจเตเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเตเด•.

REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เด…เดงเดฟเด• เด†เดตเดถเตเดฏเด•เดคเด•เดณเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เด’เดฐเต Java เดฌเดฟเตฝเดกเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต Camunda Standalone War เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เดˆ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเดฟเตฝ เดชเต‹เดฒเต† เด’เดฐเต Maven เดฌเดฟเตฝเดกเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•: เดฌเดฟเตฝเดกเต เดฏเตเดฆเตเดง เด•เต‹เตบเดซเดฟเด—เดฑเตเดฎเดพเดฏเดฟ เดฎเดพเดตเตป เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดธเด‚เดฌเตเดฒเดฟ เด“เดตเตผเดฒเต‡ เด‰เดณเตเดณ เดฎเดพเดตเตป.

Camunda Tomcat เดตเดฟเดคเดฐเดฃเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

Camunda Tomcat เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดทเตป เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเต เด…เตบเดธเดฟเดชเตเดชเต เดšเต†เดฏเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดฎเดฑเตเดฑเตŠเดฐเต เด“เดชเตเดทเตป. เด‡เดคเดฟเดจเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ Java Runtime Environment (JRE) เดฎเดพเดคเตเดฐเดฎเต‡ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเต‚. เด…เดคเต เดŽเดณเตเดชเตเดชเด‚ เด†เด•เดพเด‚ เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•.

REST, เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดŽเดžเตเดšเดฟเตป เดŽเดจเตเดจเดฟเดตเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ เด•เดพเดฎเตเดฃเตเดŸ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดœเดพเดต เด‡เดฒเตเดฒ)

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเต‹ เดฎเดฑเตเดฑเต†เดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต‹ เดจเดฟเด™เตเด™เตพ เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฃเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดพเด‚, เดชเด•เตเดทเต‡ เด‡เดคเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต. เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดจเตเดจเต‡เด•เตเด•เดพเดตเตเดจเตเดจ เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเด‚ เด‰เดคเตเดคเดฐเด™เตเด™เตพ Google-เดจเต เด…เดฑเดฟเดฏเดพเด‚.

เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดพเดฎเตเดฃเตเดŸ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดŸเต‹เด‚เด•เดพเดฑเตเดฑเต เดธเตเดตเดฏเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเต เด…เดคเดฟเตฝ เด•เดพเดฎเตเดฃเตเดŸ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด…เดตเดธเดพเดจ เดฌเดฆเตฝ, เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดตเดฟเดตเดฐเดฃเด‚ เดชเดฟเดจเตเดคเตเดŸเดฐเตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดจเตเดจ เดŸเต‹เด‚เด•เดพเดฑเตเดฑเดฟเดจเตเดฑเต† เดเดคเต เดชเดคเดฟเดชเตเดชเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด“เดชเตโ€Œเดทเตป เดจเตฝเด•เตเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดตเดฟเตปเดกเต‹เดธเต เดธเต‡เดตเดจเดฎเดพเดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•.

เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เดพเดฎเตเดฃเตเดŸ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดคเดฟเดจเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ Camunda เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดšเดฟเดฒ เด…เดจเตเดคเดฟเดฎ เดธเดœเตเดœเต€เด•เดฐเดฃเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด‡เดคเต เดตเดณเดฐเต† เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฎเดพเตผเด—เตเด—เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด•เดพเดฎเตเดฃเตเดŸเดฏเดฟเตฝ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เด…เดตเดฏเดฟเดฒเต‡เด•เตเด•เต เด•เดŸเด•เตเด•เดฟเดฒเตเดฒ - เดžเดพเตป เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดจเตฝเด•เต‚: เดกเดฟเดซเต‹เตพเดŸเตเดŸเดพเดฏเดฟ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดตเดฟเดคเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† REST API เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดฎเดพเดฑเตเดฑเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚.

เดธเด‚เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดญเดพเดท เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† Camunda เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต. เดŽเดฒเตเดฒเดพ เด‡เดŸเดชเต†เดŸเดฒเตเด•เดณเตเด‚ REST API เดตเดดเดฟเดฏเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเตเดฏเด‚. เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเตเด‚ เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•