เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

เบชเบฐเบšเบฒเบเบ”เบต เบฎเบฒเบš!

เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ ERP-class software solutions, เบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡เบŠเป‰เบฒเบ‡เปเบกเปˆเบ™ occupied เป‚เบ”เบเบฅเบฐเบšเบปเบšเบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™ huge เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™ flow a la EDMS. เบฎเบธเปˆเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบต JavaEE, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบš microservices เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเป€เบ›เบฑเบ™เบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบเป‰เบ„เบฝเบ‡. เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบชเบฐเป€เบซเบกเบตเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบˆเบฑเบšเบซเบปเบงเบขเปˆเบฒเบ‡เปƒเบซเบเปˆเบซเบผเบงเบ‡, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบฎเบนเบšเปเบšเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ, stacks เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเปเบฅเบฐเบเบญเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰, เปเบ•เปˆเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบ„เบทเบšเบซเบ™เป‰เบฒเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ™เปเบฒเป€เบญเบปเบฒเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆ NPO Krista เบกเบตเบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ‡เปˆเบฒเบเป†เบ•เปเปˆเบเบฑเบšเบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เบขเบนเปˆเบซเบฅเบฑเบ‡เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ™เบตเป‰.

เบ›เบฐเบ•เบดเป€เบชเบ”เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบš

เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบฒเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบฅเบฐเบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เบชเบฐเป€เบซเบ™เบตเป‚เบ”เบเบ‚เป‰เบญเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ›เบฐเบชเบปเบšเบเบฒเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบชเบฐเป€เบžเบฒเบฐ. เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบญเป‰เบฒเบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบ—เบปเปˆเบงเป„เบ›เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰.

BPM เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบเบฑเบšเบกเบฑเบ™?

เป€เบžเบทเปˆเบญเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบˆเบฒเบฐเป€เบฅเบดเบเป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบชเปˆเบงเบ™เบซเบผเบฑเบเบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบšเบšเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบœเบนเป‰เปƒเบŠเป‰, เบ„เบนเปˆเบกเบทเปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡, เป€เบœเบตเบเปเบœเปˆเบกเบฑเบ™เป„เบ›เบซเบฒเบฅเบฐเบšเบปเบšเบญเบทเปˆเบ™ / เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ / เบเบฒเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™, เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™. . เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒเปเบกเปˆเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ.

เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบ, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ„เปเบฒเบงเปˆเบฒ "เป€เบญเบเบฐเบชเบฒเบ™" เปƒเบ™เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบซเบเปเป‰เบ—เปเป‰เบ‚เบญเบ‡เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เบฅเบงเบกเบเบฑเบ™เป‚เบ”เบเบเบฐเปเบˆเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ” "เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ".
เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡? เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เบงเบฝเบเบ‡เบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบกเปˆเบ™เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš, เป€เบŠเบดเปˆเบ‡ "เบ•เบฑเบ”" เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบšเปเปˆเปเบกเปˆเบ™เบ•เบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒ, เปเบ•เปˆเบžเบฒเบเปƒเบ•เป‰เบญเบดเบ”เบ—เบดเบžเบปเบ™เบ‚เบญเบ‡เบ›เบฑเบ”เปƒเบˆเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ”:

  • เบ‚เบถเป‰เบ™เบเบฑเบšเบเบปเบ”เปเบฒเบเบ‚เบญเบ‡ Conway;
  • เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™ reusing เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบญเบทเปˆเบ™เป†;
  • เบ•เบฒเบกเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฐเบ™เบดเบ, เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”.

เบกเบตเบเบฒเบ™เบฅเปเป‰เบฅเบงเบ‡เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ—เบตเปˆเบˆเบฐเปเบเบเป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบˆเบฒเบเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบปเป‰เบ™เบ•เป, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบปเบ™เบฅเบฐเบžเบดเบ”เบ•เปเปˆเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบเบฑเบšเบชเบดเปˆเบ‡เบ›เบฐเบ”เบดเบ”เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบฅเบฐเบšเบฑเบ™เป€เบ—เบปเบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฒเบเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบˆเบฒเบฐเป€เบฅเบดเบเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบžเบนเบกเบชเบฑเบ™เบ–เบฒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบกเบตเบ‚เปเป‰เบ”เบตเบซเบผเบฒเบเบขเปˆเบฒเบ‡, เปเบ•เปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบšเปเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบœเบปเบ™เบ‚เบญเบ‡เบกเบฑเบ™:

  • เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบซเบผเบธเบ”เบฅเบปเบ‡เบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ— synchronous เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบˆเบธเบ”เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเบˆเปเบฒเบเบฑเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ•เบปเป‰เบ™เบ•เป (เบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ synchronous เป„เบ”เป‰เบ–เบทเบเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰);
  • เบงเบฑเบ”เบ–เบธเบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบ‡เป€เบˆเบฒเบฐเบฅเบปเบ‡เปƒเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบซเบผเบฑเบเป€เบกเบทเปˆเบญเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบˆเบฒเบเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบญเบทเปˆเบ™เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™;
  • เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ—เปเบฒเบฅเบฒเบเบกเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ;
  • เบฅเบฐเบšเบปเบšเบขเบธเบ”เป€เบŠเบปเบฒเป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฝเบงเบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, " seams" เบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™, เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบŠเป‰เปเบฒเบเบฑเบ™เบ›เบฒเบเบปเบ”, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบตเบ.

เบงเบดเบ—เบตเบเบฒเบ™เบญเบทเปˆเบ™เปเบกเปˆเบ™เบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบซเบผเบฑเบเปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ. เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเบนเบ‡, เบเบฒเบ™เบชเป‰เบฒเบ‡เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปƒเบซเบกเปˆเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบเปเบฅเบฐเบซเบเบธเป‰เบ‡เบเบฒเบ, เบกเบตเป‚เบญเบเบฒเบ”เบซเบ™เป‰เบญเบเบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบซเบผเบฒเบเบเปˆเบงเบฒเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ: เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบกเบฑเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฒเบง "เบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบชเปˆเบ•เบตเบ™." เบกเบตเบซเบผเบฒเบเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบ™เบฑเบเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ•เป‰เบญเบ‡เบ•เบญเบšเปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡, เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบšเปเปˆเบ„เบงเบ™เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ›เบฐเบˆเปเบฒเบงเบฑเบ™เบ‚เบญเบ‡เบฅเบฒเบง: เบ‚เบญเบšเป€เบ‚เบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡, เบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบน, เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เบ‚เบฐเบซเบ™เบฒเบ”, เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เปเบˆเบเบขเบฒเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, marshaling, เบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบผเบฑเบšเบชเบฐเบžเบฒเบšเบเบฒเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบšเบšเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, เป€เบŠเบดเปˆเบ‡เบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เบ„เปเบฒเบ–เบฒเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เปเบฅเป‰เบง. เปเบกเปˆเปเบšเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ•เป‰เบญเบ‡เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ›เบญเบ”เป„เบž: เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบฅเบทเป‰เบญเบเป†, เป€เบŠเบดเปˆเบ‡เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ•เปเปˆเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒเบžเปเบชเบปเบกเบ„เบงเบ™.

เปเบ•เปˆ BPM เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบเบฑเบšเบกเบฑเบ™? เบกเบตเบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ...
เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ - เป‚เบ”เบเบœเปˆเบฒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบกเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡เปเบœเบ™เบงเบฒเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ‚เบญเบ‡เบฅเบฑเบ”เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบฅเบฑเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ•เปเบฒเปเบซเบ™เปˆเบ‡เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ "เป€เบญเบเบฐเบชเบฒเบ™" เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปเบกเปˆเบ™เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡ "เป€เบญเบเบฐเบชเบฒเบ™" เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡.

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM
เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™

เบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เป€เบชเบฑเป‰เบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเป‰เบญเบ™เบงเปˆเบฒเบฅเบฐเบšเบปเบšเบŠเบญเบšเปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบเบฒเบเป€เบ›เบฑเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบ, เบžเบฒเบเบชเปˆเบงเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบˆเบฐเป€เบฅเบตเบ™เป€เบ•เบตเบšเป‚เบ•เปเบฅเบฐเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ. เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบเปˆเบญเบเบชเบฐเบซเบผเบฒเบ, เบ™เปเบฒเปƒเบŠเป‰เบ„เบทเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเบฒเบ‚เบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบชเบฒเบ‚เบฒเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ™. เบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ”เบงเบ, เปเบฅเบฐเปเบœเบ™เบงเบฒเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ‚เบญเบ‡เบฅเบฑเบ”เบˆเบฐเบชเบนเบ™เป€เบชเบเป€เบ™เบทเป‰เบญเบซเบฒเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบกเบฑเบ™ (เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบšเปเปˆเป„เบ”เป‰เบชเบฐเบ—เป‰เบญเบ™เบขเบนเปˆเปƒเบ™เปเบœเบ™เบงเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”).

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM
เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡เบ‚เบญเบ‡เบเบฒเบ™เบŠเบตเป‰เปเบˆเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบงเบดเบ—เบตเบเบฒเบ™เบญเบญเบเบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ jBPM เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ—เบตเปˆเบชเบธเบ”. เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™, เบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰เป„เบ”เป‰เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡: เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒเปเบœเบ™เบงเบฒเบ”เบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบ™ notation. BPMN2.

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM
เบžเบฒเบเบชเปˆเบงเบ™เบ™เป‰เบญเบเป†เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™

เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง, เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเบ•เบฒเบกเบ„เบงเบฒเบกเบ„เบฒเบ”เบซเบงเบฑเบ‡: เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบปเป‰เบ™เบ‚เบญเบ‡เปเบฎเบ‡เบ‡เบฒเบ™เบชเบนเบ‡เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเบฒเบเบ•เบฒเบšเปเปˆเป„เบ”เป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบšเบฑเบ™เบฅเบธเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบเบญเบกเบฎเบฑเบš, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเบฑเบ™เบ”เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบšเปเปˆเบกเบฑเบเบ—เบตเปˆเบชเบธเบ”. เบเบฑเบ‡เบกเบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ—เบธเบเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡ "patches" เปเบฅเบฐ "crutches".

เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบฒเบ‡เบšเบงเบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ jBPM เปเบกเปˆเบ™เบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เปเบฅเบฐเบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เป€เบซเบฑเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เปˆเบฒเบ‡เป†เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปเบšเบš asynchronous เบœเปˆเบฒเบ™เบชเบฑเบ™เบเบฒเบ™เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบก. เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบฅเบฑเบ”เบ—เบตเปˆเบเบทเบ™เบเบปเบ‡เบกเบตเบšเบปเบ”เบšเบฒเบ”เบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰.

เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฐเบซเบผเบธเบšเป„เบ”เป‰: เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ™เปเบšเบš BPM เบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบซเบผเบฒเบเบซเบผเบฒเบเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบ›เบฐเบชเบปเบกเบเบปเบกเบเบฝเบงเบเบฑเบšเบเบดเบ”เบˆเบฐเบเปเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

เบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ— synchronous เป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบš synchronous เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป‚เบ—เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”. เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบซเบ™เบถเปˆเบ‡เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบเปˆเบฒเบเป€เบŠเบตเบŸเป€เบงเบตเปเบฅเบฐเป€เบ›เบตเบ”เป€เบœเบตเบ API เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบญเบทเปˆเบ™เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบเปˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ—เบซเบฒเปเบฅเบฐเบฅเปเบ–เป‰เบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เบญเบตเบ‡เบ•เบฒเบกเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบฅเบฐเบšเบปเบš, เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™, เบซเบผเบทเปƒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเบชเบญเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเบฒเบ‡ RPC เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡ marshalling เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบฅเบฐเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—.

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ™เบตเป‰เบกเบตเบ‚เปเป‰เป€เบชเบเบ›เบฝเบšเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบซเบผเบฒเบ, เปเบ•เปˆเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡เบกเบฑเบ™. เบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” captivates เปเบฅเบฐเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบ—เปˆเบฒเบ™เปƒเบŠเป‰เบกเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปƒเบ™เปƒเบšเบซเบ™เป‰เบฒเบ‚เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเบปเบ”เบ”เบฑเบ™, เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เปเบเป‰เป„เบ‚เป€เบ›เบฑเบ™เบซเบ™เบตเป‰เบชเบดเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™. เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบงเปˆเบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบŠเป‰เบกเบฑเบ™เป‚เบ”เบเบšเปเปˆเบฎเบนเป‰เบ•เบปเบง, เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบ—เบฒเบ‡เบฅเบปเบš.

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบทเป‰เบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบšเบปเบšเบเปˆเบญเบ, เบเบฑเบ‡เบกเบตเบšเบฑเบ™เบซเบฒเบซเบ™เป‰เบญเบเบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบเบฑเบšเบ—เบธเบฅเบฐเบเปเบฒ "เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบง" เปเบฅเบฐ "เบเบทเบ”เบเบฒเบง". เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบ–เป‰เบฒเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบซเบผเบตเบเบฅเปˆเบฝเบ‡เป„เบ”เป‰, เปเบฅเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบˆเบปเบ™เบเปˆเบงเบฒเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบซเบ™เบถเปˆเบ‡เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบ•เบญเบšเป‚เบ•เป‰เบˆเบฒเบเบญเบตเบ, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบฅเบฐเป€เบญเบปเบฒ locks เป„เบ”เป‰. เบ™เบตเป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบตเปˆเบซเบฅเบฒเบเบซเบฅเบฒเบ:

  • เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เบชเบนเบ™เป€เบชเบ, เบœเบนเป‰เปƒเบŠเป‰เบฅเปเบ–เป‰เบฒเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ•เบญเบšเบ•เปเปˆเบเบฒเบ™เบชเบญเบšเบ–เบฒเบก;
  • เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเป€เบŠเบตเบšเป€เบงเบตเบˆเบฐเบขเบธเบ”เบเบฒเบ™เบ•เบญเบšเบชเบฐเปœเบญเบ‡เบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบกเบตเบเบธเปˆเบกเบเบฐเบ—เบนเป‰เบ—เบตเปˆเปเบญเบญเบฑเบ”: เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ–เบทเบเบฅเบฑเบญเบเบขเบนเปˆเปƒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ„เบญเบšเบ„เบญเบ‡เป‚เบ”เบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ;
  • Deadlocks เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเบ›เบฒเบเบปเบ”: เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบขเปˆเบฒเบ‡เปเบ‚เบ‡เปเบฎเบ‡เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบˆเปเบฒเบ™เบงเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเบเบฒเบ™เบฅเบฑเบญเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ;
  • เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ›เบฒเบเบปเบ”;
  • เป€เบŠเบตเบšเป€เบงเบต "เบฅเบปเป‰เบกเป€เบซเบฅเบง" เบเบฑเบš OutOfMemory เบ–เป‰เบฒเบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ synchronous เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ—เบธเบฅเบฐเบเปเบฒ "เป€เบšเบปเบฒ".

เบˆเบฒเบเบกเบธเบกเป€เบšเบดเปˆเบ‡เบ—เบฒเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป‚เบ—เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ‚เบญเบ‡เบšเบธเบเบ„เบปเบ™: เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบงเบˆเบฒเบเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบญเบทเปˆเบ™. เบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบ—เบตเบกเบ‡เบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเปƒเบซเบเปˆ.

เบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เบเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ synchronous เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบ”เป‰เบฒเบ™. เบงเบดเบ—เบตเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰?

เบ–เป‰เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ—เบตเปˆเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท, เปเบฅเบฐเบ™เบตเป‰เบˆเบฐเบฅเบปเบšเบฅเป‰เบฒเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ synchronous - เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.

เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เปƒเบˆ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ: เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท.

"Saga" เป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ

เบ”เป‰เบงเบเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš เบฎเบนเบšเปเบšเบš Saga.

เบฎเบนเบšเปเบšเบšเบ™เบตเป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปˆเบฒเบงเบกเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เปเบšเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบเบฒเบงเบ™เบฒเบ™, เปเบฅเบฐเบเบฑเบ‡เบ‚เบฐเบซเบเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบˆเบฒเบเบ‚เป‰เบฒเบ‡เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”: เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบงเบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบšเบปเบšเบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเบชเบฐเบžเบฒเบšเป€เบ”เบตเบก, เปเบ•เปˆเบชเบฐเบซเบ™เบญเบ‡. เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ™เบตเป‰เบเบฑเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเปเบฒเป€เบฅเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ "เบ”เบต" เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡.

เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ, เปƒเบ™เบฅเบฐเบšเบปเบš monolithic เบฎเบนเบšเปเบšเบšเบ™เบตเป‰เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบกเบฒเบเบฑเบšเบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ—เบตเปˆเบงเปˆเบฒเบ‡เปเบฅเบฐเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบฒเบ‡เบฅเบปเบšเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบเบฒเบงเบ™เบฒเบ™เปเบฅเบฐเบเบฒเบ™เบฅเบฑเบญเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™.

เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบฎเบนเบšเปเบšเบš BPM, เบกเบฑเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” "Sagas": เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบ‚เบญเบ‡ "Saga" เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™เบเบดเบ”เบˆเบฐเบเปเบฒเบžเบฒเบเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”, เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบเบฑเบ‡. เบเปเบฒเบ™เบปเบ”เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ "Saga". เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบปเบ™เป„เบเบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ™เบฒเบเบซเบ™เป‰เบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ "เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡" เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ‚เบปเบ™เบชเบปเปˆเบ‡.

เปเบ•เปˆเบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰เบเบฑเบ‡เบกเบต "เบฅเบฒเบ„เบฒ" เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡:

  • เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ: เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ;
  • เบกเบฑเบ™เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ–เบดเป‰เบกเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš monolithic;
  • เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ, เปเบฅเบฐเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเปเบฒเบฅเบฑเบšเบ™เบฒเบเบซเบ™เป‰เบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบˆเบฐเบ›เบฒเบเบปเบ”;
  • เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบซเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ™เบตเป‰เปเบกเปˆเบ™เบ”เบต: เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบฅเบฐเบšเบปเบšเบˆเบฐเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™).

เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš monolithic, เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "Sag" เปเบกเปˆเบ™เบšเปเปˆเบˆเบฐเปเบˆเป‰เบ‡. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเปเบฅเบฐ SOA เบญเบทเปˆเบ™เป†, เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบˆเบฐเบกเบตเบ™เบฒเบเบซเบ™เป‰เบฒเบขเบนเปˆเปเบฅเป‰เบง, เปเบฅเบฐเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเป€เบชเบเบชเบฐเบฅเบฐเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบเบตเบ™เบ‚เปเป‰เป€เบชเบเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เป‰เบฒเบกเบต API เบ—เบตเปˆเบชเบฐเบ”เบงเบเปƒเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”. เบฅเบฐเบ”เบฑเบš.

encapsulating เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™ microservices

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบš microservices, เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™: เบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบงเบฒเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบ„เบปเบ‡เบ—เบปเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เป€เบกเบ™?

เป€เบกเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡ BPMSs เบ•เปˆเบฒเบ‡เป†, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเปเบเบเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบˆเบฒเบเบเบฒเบ™เบ„เบปเบ‡เบ•เบปเบง: เบชเป‰เบฒเบ‡เบŠเบฑเป‰เบ™เบ‚เบญเบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเป€เบญเบเบฐเบฅเบฒเบ”เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบฅเบฐเบ–เบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป‚เบ”เป€เบกเบ™, เปเบฅเบฐเบญเบญเบเปเบšเบšเบ„เบงเบฒเบกเบ„เบปเบ‡เบ•เบปเบงเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เป€เบกเบ™เป€เบ›เบฑเบ™. เบŠเบฑเป‰เบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡ microservices เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเปเบฅเบฐ lightweight. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบ›เบฐเบ•เบดเบšเบฑเบ” orchestration เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบ„เบปเบ‡เบ—เบตเปˆ.

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบกเบตเบ›เบฐเป‚เบซเบเบ”เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบซเบผเบฒเบ: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เป€เบงเบ—เบตเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบŠเบฑเป‰เบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบ‚เบญเบ‡ microservices เป€เบงเบ—เบตเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™ "เป„เบ‚เบกเบฑเบ™" เบˆเบฒเบเบ™เบตเป‰. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบˆเบฒเบเป‚เบ”เป€เบกเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบซเบกเปˆเบ‚เบญเบ‡เป€เบงเบ—เบตเบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡.

เบเบฒเบ™เบชเบถเบเบชเบฒเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป„เบ”เป‰เป€เบ›เบตเบ”เป€เบœเบตเบเบ‚เปเป‰เป€เบชเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰:

  • เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบซเบผเบฒเบเป†เป‚เบ”เป€เบกเบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเป€เบ›เบฑเบ™เบˆเบธเบ”เบ”เบฝเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบฅเบทเป‰เบญเบเป†เบเปˆเบฝเบงเบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš;
  • เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”: เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปเบ„เบšเปเบฅเบฐเบŠเป‰เบฒ:
    • เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™ marshaled เบญเบตเบโ€‹เป€เบ—เบทเปˆเบญโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปเบฅเบฐ pumped เป‚เบ”เบโ€‹เบœเปˆเบฒเบ™ stack เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบโ€‹;
    • เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เป€เบกเบ™เบกเบฑเบเบˆเบฐเบชเบฐเบซเบ™เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบ™เบฅเบฐเบ”เบฑเบš API เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™;
    • เบšเบฒเบ‡เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบชเบฒเบกเบฒเบ”เบฎเป‰เบญเบ‡เบ‚เปเบ„เบทเบ™เปƒเบซเบกเปˆเบญเบตเบเบ„เบฑเป‰เบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ (เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™ cache, เปเบ•เปˆเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเปเบฅเบฐเบชเป‰เบฒเบ‡เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปเบฅเบฐ cache invalidation);
  • เบšเบฑเบ™เบซเบฒเบ—เบธเบฅเบฐเบเปเบฒ:
    • เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบ„เบปเบ‡เบ—เบตเปˆ, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เป‚เบ”เบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบงเบ—เบต, เบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป‚เบ”เป€เบกเบ™, เปเบฅเบฐเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ‡เปˆเบฒเบเป†เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰;
    • เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เป€เบกเบ™เบขเบนเปˆเบ™เบญเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ: เบ–เป‰เบฒเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป‚เบ”เป€เบกเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบปเบเป€เบงเบฑเป‰เบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡. เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบเบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเป„เบ”เป‰, เปเบ•เปˆเบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเป‚เบ”เบเบฅเบงเบกเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš;
  • เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡: เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เบปเบ‡เบ—เบตเปˆเปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ synchronously เบซเบผเบทเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”.

เปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™: encapsulate เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เป€เบกเบ™เปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบ—เบธเบฅเบฐเบเบดเบ”เป‚เบ”เป€เบกเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ microservice เบ”เบฝเบง. เบงเบดเบ—เบตเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบฑเบšเบฎเบนเป‰เบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเป€เบ›เบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเปœเบถเปˆเบ‡เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ‡เปˆเบฒเบ เปเบฅเบฐเบšเปเปˆเปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบŸเบฃเบต:

  • เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ API เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ” (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”) เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เป€เบงเบ—เบต API; เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เบ•เปเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ API, เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปƒเบ™เบ”เป‰เบฒเบ™เบ‚เป‰เบฒเบ‡เปเบฅเบฐเบ”เป‰เบฒเบ™เบซเบฅเบฑเบ‡;
  • เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” runtime เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ microservice เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบฅเบฐเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง: เบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡เปเบฅเบฐเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡ transitive dependencies;
  • เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ logic เบ—เบธเบฅเบฐเบเบดเบ”เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”: เบ–เป‰เบฒ microservice เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒเบฅเป‰เบฒเบชเบฐเป„เบซเบกเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบญเบธเบ›เบฐเบชเบฑเบเบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”เปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆ เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ›เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบชเบฐเบšเบฑเบšเปƒเปเปˆ เบ–เป‰เบฒเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบงเบตเบŠเบฑเบ™เบ•เปˆเบฒเบ‡เป†.

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

เบŠเบฑเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบงเบ—เบตเบเบฑเบ‡เบกเบตเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบ•เปˆเบŠเบฑเป‰เบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบ–เบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™, เปเบ•เปˆเบงเปˆเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบกเบฑเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เบชเบฐเบซเบ™เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ "เป€เบงเบ—เบต" เบŠเปˆเบงเบเป€เบซเบผเบทเบญ. เบŠเบฑเป‰เบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒเบ‚เบญเบ‡ microservices เป‚เบ”เป€เบกเบ™, เปเบ•เปˆเบเบฑเบ‡เป€เบ›เบฑเบ™เบชเบนเบ™เบเบฒเบ‡เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบดเบ”เบˆเบฐเบเปเบฒเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบชเป‰เบฒเบ‡เบงเบฝเบเบ‡เบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบกเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™, เบœเบนเป‰เปƒเบŠเป‰เบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เบซเบ™เป‰เบฒเบงเบฝเบเบˆเบฒเบเบ—เบธเบเป‚เบ”เป€เบกเบ™เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบปเปˆเบงเป„เบ›, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เป€เบงเบ—เบตเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™, เบฅเบปเบšเบฅเป‰เบฒเบ‡เป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป‚เบ”เป€เบกเบ™. เบเบฒเบ™เบฎเบฑเบเบชเบฒเบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบกเบตเบšเบฑเบ™เบซเบฒ, เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ™เบตเป‰.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบชเบฒเบเบ•เบฒเบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเปเบเบเบญเบญเบเบˆเบฒเบเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบฒเบ‡เบงเบดเบŠเบฒเบเบฒเบ™เปเบฅเบฐเบงเบดเบชเบฐเบงเบฐเบเปเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเบผเบฒเบเป†เบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เบฑเบšเป„เบ”เป‰เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบ”เบต.

เปƒเบซเป‰เบžเบฐเบเบฒเบเบฒเบกเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปเบกเปˆเบ™ invented เบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบ„เบงเบฒเบก. เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™ "เป€เบเบก" เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบชเบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เบšเปˆเบญเบ™เบ—เบตเปˆเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบเปเบฒเบ™เบปเบ”เบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™: "app1", "app2", "app3".

เบžเบฒเบเปƒเบ™เปเบ•เปˆเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ "เบซเบผเบดเป‰เบ™เบšเบฒเบ™" เบœเปˆเบฒเบ™เบฅเบปเบ”เป€เบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™. เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบตเบŠเบทเปˆ "เบšเบฒเบ™" เบˆเบฐเป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบšเบฒเบ™.

เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡เป€เบเบก:

  • เบœเบนเป‰เบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบœเบนเป‰เบฅเบดเป€เบฅเบตเปˆเบก. เบฅเบฒเบงเป€เบŠเบทเป‰เบญเป€เบŠเบตเบ™เบœเบนเป‰เบซเบผเบดเป‰เบ™เบญเบทเปˆเบ™เป†เปƒเบซเป‰เบซเบฅเบดเป‰เบ™เป€เบเบก, เป€เบฅเบตเปˆเบกเป€เบเบกเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบขเบธเบ”เบกเบฑเบ™เป„เบ”เป‰เบ—เบธเบเป€เบงเบฅเบฒ;
  • เบœเบนเป‰เบ™เบญเบทเปˆเบ™เป†เบ›เบฐเบเบฒเบ”เบเบฒเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เป€เบเบก, "เบฎเบนเป‰เบˆเบฑเบ" เป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เปเบฅเบฐเบœเบนเป‰เบ™เบ—เปเบฒเบญเบดเบ”;
  • เบซเบผเบฑเบ‡เบˆเบฒเบเป„เบ”เป‰เบฎเบฑเบšเบšเบฒเบ™เปเบฅเป‰เบง, เบœเบนเป‰เบ™เบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบœเบนเป‰เบญเบทเปˆเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปเบฅเบฐเบชเบปเปˆเบ‡เบšเบฒเบ™เป„เบ›เบซเบฒเบฅเบฒเบง. เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ™เบฑเบš;
  • เบœเบนเป‰เบ™เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบกเบต "เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™" เบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบšเบฒเบ™เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป‚เบ”เบเบœเบนเป‰เบ™เบ™เบฑเป‰เบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบซเบกเบปเบ”, เบœเบนเป‰เบ™เบญเบญเบเบˆเบฒเบเป€เบเบก, เบ›เบฐเบเบฒเบ”เบฅเบฒเบญเบญเบเบ‚เบญเบ‡เบ•เบปเบ™;
  • เบ–เป‰เบฒเบœเบนเป‰เบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเป„เบงเป‰เบขเบนเปˆเบ„เบปเบ™เบ”เบฝเบง, เบฅเบฒเบงเบ—เบฑเบ™เบ—เบตเบ›เบฐเบเบฒเบ”เบเบฒเบ™เบญเบญเบเป„เบ›;
  • เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบœเบนเป‰เบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡, เบœเบนเป‰เบ™เบ—เปเบฒเบญเบดเบ”เบ›เบฐเบเบฒเบ”เป€เบเบกเบซเบกเบปเบ”. เบ–เป‰เบฒเบฅเบฒเบงเบญเบญเบเบˆเบฒเบเป€เบเบกเป„เบง, เบฅเบฒเบงเบเบฑเบ‡เบ„เบปเบ‡เบ•เบดเบ”เบ•เบฒเบกเป€เบเบกเป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบ‚เป‰เบญเบเบˆเบฐเปƒเบŠเป‰ DSL เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ—เบดเบšเบฒเบเป€เบซเบ”เบœเบปเบ™เปƒเบ™ Kotlin เบขเปˆเบฒเบ‡เบซเบ™เบฒเปเบซเบ™เป‰เบ™, เป‚เบ”เบเบกเบตเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡ boilerplate.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบœเบนเป‰เบ™เบ—เปเบฒเบญเบดเบ” (aka เบœเบนเป‰เบฅเบดเป€เบฅเบตเปˆเบกเบ‚เบญเบ‡เป€เบเบก) เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ app1 app:

class InitialPlayer

import ru.krista.bpm.ProcessInstance
import ru.krista.bpm.runtime.ProcessImpl
import ru.krista.bpm.runtime.constraint.UniqueConstraints
import ru.krista.bpm.runtime.dsl.processModel
import ru.krista.bpm.runtime.dsl.taskOperation
import ru.krista.bpm.runtime.instance.MessageSendInstance

data class PlayerInfo(val name: String, val domain: String, val id: String)

class PlayersList : ArrayList<PlayerInfo>()

// ะญั‚ะพ ะบะปะฐัั ัะบะทะตะผะฟะปัั€ะฐ ะฟั€ะพั†ะตััะฐ: ะธะฝะบะฐะฟััƒะปะธั€ัƒะตั‚ ะตะณะพ ะฒะฝัƒั‚ั€ะตะฝะฝะตะต ัะพัั‚ะพัะฝะธะต
class InitialPlayer : ProcessImpl<InitialPlayer>(initialPlayerModel) {
    var playerName: String by persistent("Player1")
    var energy: Int by persistent(30)
    var players: PlayersList by persistent(PlayersList())
    var shotCounter: Int = 0
}

// ะญั‚ะพ ะดะตะบะปะฐั€ะฐั†ะธั ะผะพะดะตะปะธ ะฟั€ะพั†ะตััะฐ: ัะพะทะดะฐะตั‚ัั ะพะดะธะฝ ั€ะฐะท, ะธัะฟะพะปัŒะทัƒะตั‚ัั ะฒัะตะผะธ
// ัะบะทะตะผะฟะปัั€ะฐะผะธ ะฟั€ะพั†ะตััะฐ ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒัŽั‰ะตะณะพ ะบะปะฐััะฐ
val initialPlayerModel = processModel<InitialPlayer>(name = "InitialPlayer",
                                                     version = 1) {

    // ะŸะพ ะฟั€ะฐะฒะธะปะฐะผ, ะฟะตั€ะฒั‹ะน ะธะณั€ะพะบ ัะฒะปัะตั‚ัั ะธะฝะธั†ะธะฐั‚ะพั€ะพะผ ะธะณั€ั‹ ะธ ะดะพะปะถะตะฝ ะฑั‹ั‚ัŒ ะตะดะธะฝัั‚ะฒะตะฝะฝั‹ะผ
    uniqueConstraint = UniqueConstraints.singleton

    // ะžะฑัŠัะฒะปัะตะผ ะฐะบั‚ะธะฒะฝะพัั‚ะธ, ะธะท ะบะพั‚ะพั€ั‹ั… ัะพัั‚ะพะธั‚ ะฑะธะทะฝะตั-ะฟั€ะพั†ะตัั
    val sendNewGameSignal = signal<String>("NewGame")
    val sendStopGameSignal = signal<String>("StopGame")
    val startTask = humanTask("Start") {
        taskOperation {
            processCondition { players.size > 0 }
            confirmation { "ะŸะพะดะบะปัŽั‡ะธะปะพััŒ ${players.size} ะธะณั€ะพะบะพะฒ. ะะฐั‡ะธะฝะฐะตะผ?" }
        }
    }
    val stopTask = humanTask("Stop") {
        taskOperation {}
    }
    val waitPlayerJoin = signalWait<String>("PlayerJoin") { signal ->
        players.add(PlayerInfo(
                signal.data!!,
                signal.sender.domain,
                signal.sender.processInstanceId))
        println("... join player ${signal.data} ...")
    }
    val waitPlayerOut = signalWait<String>("PlayerOut") { signal ->
        players.remove(PlayerInfo(
                signal.data!!,
                signal.sender.domain,
                signal.sender.processInstanceId))
        println("... player ${signal.data} is out ...")
    }
    val sendPlayerOut = signal<String>("PlayerOut") {
        signalData = { playerName }
    }
    val sendHandshake = messageSend<String>("Handshake") {
        messageData = { playerName }
        activation = {
            receiverDomain = process.players.last().domain
            receiverProcessInstanceId = process.players.last().id
        }
    }
    val throwStartBall = messageSend<Int>("Ball") {
        messageData = { 1 }
        activation = { selectNextPlayer() }
    }
    val throwBall = messageSend<Int>("Ball") {
        messageData = { shotCounter + 1 }
        activation = { selectNextPlayer() }
        onEntry { energy -= 1 }
    }
    val waitBall = messageWaitData<Int>("Ball") {
        shotCounter = it
    }

    // ะขะตะฟะตั€ัŒ ะบะพะฝัั‚ั€ัƒะธั€ัƒะตะผ ะณั€ะฐั„ ะฟั€ะพั†ะตััะฐ ะธะท ะพะฑัŠัะฒะปะตะฝะฝั‹ั… ะฐะบั‚ะธะฒะฝะพัั‚ะตะน
    startFrom(sendNewGameSignal)
            .fork("mainFork") {
                next(startTask)
                next(waitPlayerJoin).next(sendHandshake).next(waitPlayerJoin)
                next(waitPlayerOut)
                        .branch("checkPlayers") {
                            ifTrue { players.isEmpty() }
                                    .next(sendStopGameSignal)
                                    .terminate()
                            ifElse().next(waitPlayerOut)
                        }
            }
    startTask.fork("afterStart") {
        next(throwStartBall)
                .branch("mainLoop") {
                    ifTrue { energy < 5 }.next(sendPlayerOut).next(waitBall)
                    ifElse().next(waitBall).next(throwBall).loop()
                }
        next(stopTask).next(sendStopGameSignal)
    }

    // ะะฐะฒะตัˆะฐะตะผ ะฝะฐ ะฐะบั‚ะธะฒะฝะพัั‚ะธ ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝั‹ะต ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ ะดะปั ะปะพะณะธั€ะพะฒะฐะฝะธั
    sendNewGameSignal.onExit { println("Let's play!") }
    sendStopGameSignal.onExit { println("Stop!") }
    sendPlayerOut.onExit { println("$playerName: I'm out!") }
}

private fun MessageSendInstance<InitialPlayer, Int>.selectNextPlayer() {
    val player = process.players.random()
    receiverDomain = player.domain
    receiverProcessInstanceId = player.id
    println("Step ${process.shotCounter + 1}: " +
            "${process.playerName} >>> ${player.name}")
}

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”, เบฅเบฐเบซเบฑเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบชเบฒเบกเบฒเบ”เบœเบฐเบฅเบดเบ”เบฎเบนเบšเปเบšเบšเบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เป„เบ”เป‰เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เปเบœเบ™เบงเบฒเบ”. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ” Visualizer เป€เบ—เบทเปˆเบญ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบเบฒเบ™เปเบ•เป‰เบกเบฎเบนเบš (เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบญเบเป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบซเบกเบฒเบ BPMN เป€เบฅเบฑเบเบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเบ•เบนเบฎเบปเป‰เบงเป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡เปเบœเบ™เบงเบฒเบ”เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰):

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

app2 เบˆเบฐเบ›เบฐเบเบญเบšเบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบœเบนเป‰เบ™เบญเบทเปˆเบ™เป†:

เบซเป‰เบญเบ‡เบฎเบฝเบ™ RandomPlayer

import ru.krista.bpm.ProcessInstance
import ru.krista.bpm.runtime.ProcessImpl
import ru.krista.bpm.runtime.dsl.processModel
import ru.krista.bpm.runtime.instance.MessageSendInstance

data class PlayerInfo(val name: String, val domain: String, val id: String)

class PlayersList: ArrayList<PlayerInfo>()

class RandomPlayer : ProcessImpl<RandomPlayer>(randomPlayerModel) {

    var playerName: String by input(persistent = true, 
                                    defaultValue = "RandomPlayer")
    var energy: Int by input(persistent = true, defaultValue = 30)
    var players: PlayersList by persistent(PlayersList())
    var allPlayersOut: Boolean by persistent(false)
    var shotCounter: Int = 0

    val selfPlayer: PlayerInfo
        get() = PlayerInfo(playerName, env.eventDispatcher.domainName, id)
}

val randomPlayerModel = processModel<RandomPlayer>(name = "RandomPlayer", 
                                                   version = 1) {

    val waitNewGameSignal = signalWait<String>("NewGame")
    val waitStopGameSignal = signalWait<String>("StopGame")
    val sendPlayerJoin = signal<String>("PlayerJoin") {
        signalData = { playerName }
    }
    val sendPlayerOut = signal<String>("PlayerOut") {
        signalData = { playerName }
    }
    val waitPlayerJoin = signalWaitCustom<String>("PlayerJoin") {
        eventCondition = { signal ->
            signal.sender.processInstanceId != process.id 
                && !process.players.any { signal.sender.processInstanceId == it.id}
        }
        handler = { signal ->
            players.add(PlayerInfo(
                    signal.data!!,
                    signal.sender.domain,
                    signal.sender.processInstanceId))
        }
    }
    val waitPlayerOut = signalWait<String>("PlayerOut") { signal ->
        players.remove(PlayerInfo(
                signal.data!!,
                signal.sender.domain,
                signal.sender.processInstanceId))
        allPlayersOut = players.isEmpty()
    }
    val sendHandshake = messageSend<String>("Handshake") {
        messageData = { playerName }
        activation = {
            receiverDomain = process.players.last().domain
            receiverProcessInstanceId = process.players.last().id
        }
    }
    val receiveHandshake = messageWait<String>("Handshake") { message ->
        if (!players.any { message.sender.processInstanceId == it.id}) {
            players.add(PlayerInfo(
                    message.data!!, 
                    message.sender.domain, 
                    message.sender.processInstanceId))
        }
    }
    val throwBall = messageSend<Int>("Ball") {
        messageData = { shotCounter + 1 }
        activation = { selectNextPlayer() }
        onEntry { energy -= 1 }
    }
    val waitBall = messageWaitData<Int>("Ball") {
        shotCounter = it
    }

    startFrom(waitNewGameSignal)
            .fork("mainFork") {
                next(sendPlayerJoin)
                        .branch("mainLoop") {
                            ifTrue { energy < 5 || allPlayersOut }
                                    .next(sendPlayerOut)
                                    .next(waitBall)
                            ifElse()
                                    .next(waitBall)
                                    .next(throwBall)
                                    .loop()
                        }
                next(waitPlayerJoin).next(sendHandshake).next(waitPlayerJoin)
                next(waitPlayerOut).next(waitPlayerOut)
                next(receiveHandshake).next(receiveHandshake)
                next(waitStopGameSignal).terminate()
            }

    sendPlayerJoin.onExit { println("$playerName: I'm here!") }
    sendPlayerOut.onExit { println("$playerName: I'm out!") }
}

private fun MessageSendInstance<RandomPlayer, Int>.selectNextPlayer() {
    val player = if (process.players.isNotEmpty()) 
        process.players.random() 
    else 
        process.selfPlayer
    receiverDomain = player.domain
    receiverProcessInstanceId = player.id
    println("Step ${process.shotCounter + 1}: " +
            "${process.playerName} >>> ${player.name}")
}

เปเบœเบ™เบงเบฒเบ”:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ app3 เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบนเป‰เบ™เบ—เบตเปˆเบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ: เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเบœเบนเป‰เบ™เบ•เปเปˆเป„เบ›เปเบšเบšเบชเบธเปˆเบก, เบฅเบฒเบงเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบฎเบญเบš:

เบซเป‰เบญเบ‡เบฎเบฝเบ™ RoundRobinPlayer

import ru.krista.bpm.ProcessInstance
import ru.krista.bpm.runtime.ProcessImpl
import ru.krista.bpm.runtime.dsl.processModel
import ru.krista.bpm.runtime.instance.MessageSendInstance

data class PlayerInfo(val name: String, val domain: String, val id: String)

class PlayersList: ArrayList<PlayerInfo>()

class RoundRobinPlayer : ProcessImpl<RoundRobinPlayer>(roundRobinPlayerModel) {

    var playerName: String by input(persistent = true, 
                                    defaultValue = "RoundRobinPlayer")
    var energy: Int by input(persistent = true, defaultValue = 30)
    var players: PlayersList by persistent(PlayersList())
    var nextPlayerIndex: Int by persistent(-1)
    var allPlayersOut: Boolean by persistent(false)
    var shotCounter: Int = 0

    val selfPlayer: PlayerInfo
        get() = PlayerInfo(playerName, env.eventDispatcher.domainName, id)
}

val roundRobinPlayerModel = processModel<RoundRobinPlayer>(
        name = "RoundRobinPlayer", 
        version = 1) {

    val waitNewGameSignal = signalWait<String>("NewGame")
    val waitStopGameSignal = signalWait<String>("StopGame")
    val sendPlayerJoin = signal<String>("PlayerJoin") {
        signalData = { playerName }
    }
    val sendPlayerOut = signal<String>("PlayerOut") {
        signalData = { playerName }
    }
    val waitPlayerJoin = signalWaitCustom<String>("PlayerJoin") {
        eventCondition = { signal ->
            signal.sender.processInstanceId != process.id 
                && !process.players.any { signal.sender.processInstanceId == it.id}
        }
        handler = { signal ->
            players.add(PlayerInfo(
                    signal.data!!, 
                    signal.sender.domain, 
                    signal.sender.processInstanceId))
        }
    }
    val waitPlayerOut = signalWait<String>("PlayerOut") { signal ->
        players.remove(PlayerInfo(
                signal.data!!, 
                signal.sender.domain, 
                signal.sender.processInstanceId))
        allPlayersOut = players.isEmpty()
    }
    val sendHandshake = messageSend<String>("Handshake") {
        messageData = { playerName }
        activation = {
            receiverDomain = process.players.last().domain
            receiverProcessInstanceId = process.players.last().id
        }
    }
    val receiveHandshake = messageWait<String>("Handshake") { message ->
        if (!players.any { message.sender.processInstanceId == it.id}) {
            players.add(PlayerInfo(
                    message.data!!, 
                    message.sender.domain, 
                    message.sender.processInstanceId))
        }
    }
    val throwBall = messageSend<Int>("Ball") {
        messageData = { shotCounter + 1 }
        activation = { selectNextPlayer() }
        onEntry { energy -= 1 }
    }
    val waitBall = messageWaitData<Int>("Ball") {
        shotCounter = it
    }

    startFrom(waitNewGameSignal)
            .fork("mainFork") {
                next(sendPlayerJoin)
                        .branch("mainLoop") {
                            ifTrue { energy < 5 || allPlayersOut }
                                    .next(sendPlayerOut)
                                    .next(waitBall)
                            ifElse()
                                    .next(waitBall)
                                    .next(throwBall)
                                    .loop()
                        }
                next(waitPlayerJoin).next(sendHandshake).next(waitPlayerJoin)
                next(waitPlayerOut).next(waitPlayerOut)
                next(receiveHandshake).next(receiveHandshake)
                next(waitStopGameSignal).terminate()
            }

    sendPlayerJoin.onExit { println("$playerName: I'm here!") }
    sendPlayerOut.onExit { println("$playerName: I'm out!") }
}

private fun MessageSendInstance<RoundRobinPlayer, Int>.selectNextPlayer() {
    var idx = process.nextPlayerIndex + 1
    if (idx >= process.players.size) {
        idx = 0
    }
    process.nextPlayerIndex = idx
    val player = if (process.players.isNotEmpty()) 
        process.players[idx] 
    else 
        process.selfPlayer
    receiverDomain = player.domain
    receiverProcessInstanceId = player.id
    println("Step ${process.shotCounter + 1}: " +
            "${process.playerName} >>> ${player.name}")
}

เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบœเบนเป‰เบ™เบšเปเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบญเบฑเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปเบœเบ™เบงเบฒเบ”เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰ clutter เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบต boilerplate (เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบญเบทเปˆเบ™เป†):

เป€เบเบกเบ—เบปเบ”เบชเบญเบš()

@Test
public void testGame() throws InterruptedException {
    String pl2 = startProcess(app2, "RandomPlayer", playerParams("Player2", 20));
    String pl3 = startProcess(app2, "RandomPlayer", playerParams("Player3", 40));
    String pl4 = startProcess(app3, "RoundRobinPlayer", playerParams("Player4", 25));
    String pl5 = startProcess(app3, "RoundRobinPlayer", playerParams("Player5", 35));
    String pl1 = startProcess(app1, "InitialPlayer");
    // ะขะตะฟะตั€ัŒ ะฝัƒะถะฝะพ ะฝะตะผะฝะพะณะพ ะฟะพะดะพะถะดะฐั‚ัŒ, ะฟะพะบะฐ ะธะณั€ะพะบะธ "ะฟะพะทะฝะฐะบะพะผัั‚ัั" ะดั€ัƒะณ ั ะดั€ัƒะณะพะผ.
    // ะ–ะดะฐั‚ัŒ ั‡ะตั€ะตะท sleep - ะฟะปะพั…ะพะต ั€ะตัˆะตะฝะธะต, ะทะฐั‚ะพ ัะฐะผะพะต ะฟั€ะพัั‚ะพะต. 
    // ะะต ะดะตะปะฐะนั‚ะต ั‚ะฐะบ ะฒ ัะตั€ัŒะตะทะฝั‹ั… ั‚ะตัั‚ะฐั…!
    Thread.sleep(1000);
    // ะ—ะฐะฟัƒัะบะฐะตะผ ะธะณั€ัƒ, ะทะฐะบั€ั‹ะฒะฐั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบัƒัŽ ะฐะบั‚ะธะฒะฝะพัั‚ัŒ
    assertTrue(closeTask(app1, pl1, "Start"));
    app1.getWaiting().waitProcessFinished(pl1);
    app2.getWaiting().waitProcessFinished(pl2);
    app2.getWaiting().waitProcessFinished(pl3);
    app3.getWaiting().waitProcessFinished(pl4);
    app3.getWaiting().waitProcessFinished(pl5);
}

private Map<String, Object> playerParams(String name, int energy) {
    Map<String, Object> params = new HashMap<>();
    params.put("playerName", name);
    params.put("energy", energy);
    return params;
}

เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบ:

console output

ะ’ะทัั‚ะฐ ะฑะปะพะบะธั€ะพะฒะบะฐ ะบะปัŽั‡ะฐ lock://app1/process/InitialPlayer
Let's play!
ะกะฝัั‚ะฐ ะฑะปะพะบะธั€ะพะฒะบะฐ ะบะปัŽั‡ะฐ lock://app1/process/InitialPlayer
Player2: I'm here!
Player3: I'm here!
Player4: I'm here!
Player5: I'm here!
... join player Player2 ...
... join player Player4 ...
... join player Player3 ...
... join player Player5 ...
Step 1: Player1 >>> Player3
Step 2: Player3 >>> Player5
Step 3: Player5 >>> Player3
Step 4: Player3 >>> Player4
Step 5: Player4 >>> Player3
Step 6: Player3 >>> Player4
Step 7: Player4 >>> Player5
Step 8: Player5 >>> Player2
Step 9: Player2 >>> Player5
Step 10: Player5 >>> Player4
Step 11: Player4 >>> Player2
Step 12: Player2 >>> Player4
Step 13: Player4 >>> Player1
Step 14: Player1 >>> Player4
Step 15: Player4 >>> Player3
Step 16: Player3 >>> Player1
Step 17: Player1 >>> Player2
Step 18: Player2 >>> Player3
Step 19: Player3 >>> Player1
Step 20: Player1 >>> Player5
Step 21: Player5 >>> Player1
Step 22: Player1 >>> Player2
Step 23: Player2 >>> Player4
Step 24: Player4 >>> Player5
Step 25: Player5 >>> Player3
Step 26: Player3 >>> Player4
Step 27: Player4 >>> Player2
Step 28: Player2 >>> Player5
Step 29: Player5 >>> Player2
Step 30: Player2 >>> Player1
Step 31: Player1 >>> Player3
Step 32: Player3 >>> Player4
Step 33: Player4 >>> Player1
Step 34: Player1 >>> Player3
Step 35: Player3 >>> Player4
Step 36: Player4 >>> Player3
Step 37: Player3 >>> Player2
Step 38: Player2 >>> Player5
Step 39: Player5 >>> Player4
Step 40: Player4 >>> Player5
Step 41: Player5 >>> Player1
Step 42: Player1 >>> Player5
Step 43: Player5 >>> Player3
Step 44: Player3 >>> Player5
Step 45: Player5 >>> Player2
Step 46: Player2 >>> Player3
Step 47: Player3 >>> Player2
Step 48: Player2 >>> Player5
Step 49: Player5 >>> Player4
Step 50: Player4 >>> Player2
Step 51: Player2 >>> Player5
Step 52: Player5 >>> Player1
Step 53: Player1 >>> Player5
Step 54: Player5 >>> Player3
Step 55: Player3 >>> Player5
Step 56: Player5 >>> Player2
Step 57: Player2 >>> Player1
Step 58: Player1 >>> Player4
Step 59: Player4 >>> Player1
Step 60: Player1 >>> Player4
Step 61: Player4 >>> Player3
Step 62: Player3 >>> Player2
Step 63: Player2 >>> Player5
Step 64: Player5 >>> Player4
Step 65: Player4 >>> Player5
Step 66: Player5 >>> Player1
Step 67: Player1 >>> Player5
Step 68: Player5 >>> Player3
Step 69: Player3 >>> Player4
Step 70: Player4 >>> Player2
Step 71: Player2 >>> Player5
Step 72: Player5 >>> Player2
Step 73: Player2 >>> Player1
Step 74: Player1 >>> Player4
Step 75: Player4 >>> Player1
Step 76: Player1 >>> Player2
Step 77: Player2 >>> Player5
Step 78: Player5 >>> Player4
Step 79: Player4 >>> Player3
Step 80: Player3 >>> Player1
Step 81: Player1 >>> Player5
Step 82: Player5 >>> Player1
Step 83: Player1 >>> Player4
Step 84: Player4 >>> Player5
Step 85: Player5 >>> Player3
Step 86: Player3 >>> Player5
Step 87: Player5 >>> Player2
Step 88: Player2 >>> Player3
Player2: I'm out!
Step 89: Player3 >>> Player4
... player Player2 is out ...
Step 90: Player4 >>> Player1
Step 91: Player1 >>> Player3
Step 92: Player3 >>> Player1
Step 93: Player1 >>> Player4
Step 94: Player4 >>> Player3
Step 95: Player3 >>> Player5
Step 96: Player5 >>> Player1
Step 97: Player1 >>> Player5
Step 98: Player5 >>> Player3
Step 99: Player3 >>> Player5
Step 100: Player5 >>> Player4
Step 101: Player4 >>> Player5
Player4: I'm out!
... player Player4 is out ...
Step 102: Player5 >>> Player1
Step 103: Player1 >>> Player3
Step 104: Player3 >>> Player1
Step 105: Player1 >>> Player3
Step 106: Player3 >>> Player5
Step 107: Player5 >>> Player3
Step 108: Player3 >>> Player1
Step 109: Player1 >>> Player3
Step 110: Player3 >>> Player5
Step 111: Player5 >>> Player1
Step 112: Player1 >>> Player3
Step 113: Player3 >>> Player5
Step 114: Player5 >>> Player3
Step 115: Player3 >>> Player1
Step 116: Player1 >>> Player3
Step 117: Player3 >>> Player5
Step 118: Player5 >>> Player1
Step 119: Player1 >>> Player3
Step 120: Player3 >>> Player5
Step 121: Player5 >>> Player3
Player5: I'm out!
... player Player5 is out ...
Step 122: Player3 >>> Player5
Step 123: Player5 >>> Player1
Player5: I'm out!
Step 124: Player1 >>> Player3
... player Player5 is out ...
Step 125: Player3 >>> Player1
Step 126: Player1 >>> Player3
Player1: I'm out!
... player Player1 is out ...
Step 127: Player3 >>> Player3
Player3: I'm out!
Step 128: Player3 >>> Player3
... player Player3 is out ...
Player3: I'm out!
Stop!
Step 129: Player3 >>> Player3
Player3: I'm out!

เบˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฐเบซเบผเบธเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡:

  • เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”;
  • เบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ”เป‰เบฒเบ™เบงเบดเบชเบฐเบงเบฐเบเปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เบžเบฒเบเปƒเบ™เบเบญเบšเบ–เป‰เบฒเบงเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบเบญเบšเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™. เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเบฒเบเปƒเบ™เบฅเบฐเบซเบฑเบ”เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐ;
  • เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบเบฒเบ™เบ‚เบฒเบ” linearizability เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ™เบตเป‰เบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบšเบชเบปเบ™เป€เบซเบ”เบœเบปเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™ insensitive เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเป€เบซเบ”เบเบฒเบ™เบžเบฒเบเบ™เบญเบเป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบœเบนเป‰เบ™เบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เป€เบเบกเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบฅเบฒเบงเบ›เบฐเบเบฒเบ”เบญเบญเบเบˆเบฒเบเป€เบเบก: เบœเบนเป‰เบ™เบญเบทเปˆเบ™เป†เบˆเบฐเบชเบทเบšเบ•เปเปˆเบชเบปเปˆเบ‡เบšเบฒเบ™เป„เบ›เบซเบฒเบฅเบฒเบงเบˆเบปเบ™เบเปˆเบงเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเบญเบเบ‚เบญเบ‡เบฅเบฒเบงเป„เบ›เบฎเบญเบ”เปเบฅเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡เป€เบเบกเปเบฅเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเบžเบฒเบเปƒเบ™เบเบญเบšเบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบ—เบตเปˆเป€เบฅเบทเบญเบ.

เบ•เปเปˆโ€‹เป„เบ›โ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบงเบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบซเบเบธเป‰เบ‡โ€‹เบเบฒเบโ€‹เบ•เปˆเบฒเบ‡เป†โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹, เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ™เบตโ€‹เบ›เบฐโ€‹เบ™โ€‹เบญเบกโ€‹เปเบฅเบฐโ€‹เบˆเบธเบ”โ€‹เบญเบทเปˆเบ™เป†โ€‹.

เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบฑเบ‡เปเบปเบ”เบขเบนเปˆเปƒเบ™เบ„เบดเบงเบ”เบฝเบง

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบปเบ”เป€เบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบซเบ™เบถเปˆเบ‡, เป€เบŠเบดเปˆเบ‡เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบ™เบฒเบเบซเบ™เป‰เบฒเบžเบฒเบเบ™เบญเบ, เบซเบ™เบถเปˆเบ‡ BPMQueue เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบซเบปเบงเบ‚เปเป‰ BPMTopic เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบชเบฑเบ™เบเบฒเบ™ (เป€เบซเบ”เบเบฒเบ™). เบเบฒเบ™เบงเบฒเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบœเปˆเบฒเบ™เปเบ–เบงเบ”เบฝเบงเปเบกเปˆเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบก. เปƒเบ™เบฅเบฐเบ”เบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบ™เบฐเบ™เปเบฒเบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบซเบกเปˆเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบš. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เปเบ•เปˆเบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เป€เบŠเบดเปˆเบ‡เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปเบšเบš BPM

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰: เปเบ•เปˆเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก "เบ‚เบญเบ‡เบกเบฑเบ™" เบˆเบฒเบเปเบ–เบงเบขเบนเปˆเบ—เบฒเบ‡เป€เบ‚เบปเป‰เบฒ, เป‚เบ”เบเบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบ‚เบญเบ‡เบกเบฑเบ™. เป‚เบ”เป€เบกเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบชเบฑเบ™เบเบฒเบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเปเบฒเบเบฑเบ” "เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™" เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™เปƒเบซเป‰เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เบฝเบง. เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เบฅเบปเบ”เป€เบก, เปเบ•เปˆเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบฑเบšเบŠเบทเปˆเป‚เบ”เป€เบกเบ™: เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก - เบšเบฑเบ‡เบ„เบฑเบš, เบชเปเบฒเบฅเบฑเบšเบชเบฑเบ™เบเบฒเบ™ - เบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒ.

เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡เบฅเบปเบ”เป€เบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™

เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบผเบฒเบเบˆเบธเบ”:

  • เบ™เบฒเบเบซเบ™เป‰เบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบฅเบทเบญเบเปเบกเปˆเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบฅเบฐเบˆเบธเบ”เบ”เบฝเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง: เบกเบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฝเบ‡เบžเป. เบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒ, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเปˆเบ”เบตเปเบฅเบฐเบŠเบธเบกเบŠเบปเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ;
  • เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เบ™เบฒเบเบซเบ™เป‰เบฒเบ‚เปเป‰เบ„เบงเบฒเบก, เป€เบŠเบดเปˆเบ‡เบกเบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเปเบเบเบญเบญเบเบˆเบฒเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ (เบ„เบงเบฒเบกเบžเป‰เบญเบกเบชเบนเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปเบฅเบฐเบกเบตเบฅเบฒเบ„เบฒเปเบžเบ‡เบเบงเปˆเบฒเป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™);
  • เบ™เบฒเบเบซเบ™เป‰เบฒเบกเบตเบžเบฑเบ™เบ—เบฐเปƒเบซเป‰ "เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡" เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ‚เบญเบ‡เบฅเบปเบ”เป€เบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™. เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบฅเบฐเบ”เบฑเบš "เปเบ™เปˆเบ™เบญเบ™เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡": เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”, เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเบ•เปเปˆเบเบฑเบšเบเบฒเบ™เบกเบฒเบฎเบญเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบซเบผเบทเป€เบซเบ”เบเบฒเบ™เบŠเป‰เปเบฒเบŠเป‰เบญเบ™, เปเบฅเบฐเปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบžเบดเป€เบชเบ”เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™, เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบซเป‰เบเบฑเบšเบ—เบธเบฅเบฐเบเบดเบ”. เป€เบซเบ”เบœเบปเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡ "เปเบžเบ‡" "เบฎเบฑเบšเบ›เบฐเบเบฑเบ™;
  • เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบชเบฑเบ™เบเบฒเบ™เบ•เป‰เบญเบ‡เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบ—เบธเบฅเบฐเบเปเบฒเป‚เบ”เบเบฅเบงเบกเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เป‚เบ”เป€เบกเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบกเปˆเบ™เบเบฒเบ™เปƒเบŠเป‰เบฎเบนเบšเปเบšเบš เบเปˆเบญเบ‡เบ‚เบฒเบญเบญเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เปเบ•เปˆเบกเบฑเบ™เบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐ repeater. เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ JEE, เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ‡เปˆเบฒเบเบ”เบฒเบเป‚เบ”เบเปƒเบŠเป‰เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™ JTA เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เปเบ•เปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ™เบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบฅเบทเบญเบเบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰. XA;
  • handlers เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเป€เบซเบ”เบเบฒเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”: เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เบธเบฅเบฐเบเปเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบกเป‰เบงเบ™เบ„เบทเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบเบปเบเป€เบฅเบตเบ;
  • เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เป„เบ”เป‰เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ D.L.Q. (เปเบ–เบงเบˆเบปเบ”เปเบฒเบเบ•เบฒเบ). เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡ microservice เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ‚เบญเบ‡เบกเบฑเบ™, เบ”เบฑเบ”เบชเบฐเบ™เบตเบžเบงเบเบกเบฑเบ™เป‚เบ”เบเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ (เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเป„เบงเปเบฅเบฐเบเบฒเบ™เบŠเบญเบเบซเบฒ), เปเบฅเบฐเป€เบ›เบตเบ”เป€เบœเบตเบ API เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡, เบชเบปเปˆเบ‡เบ„เบทเบ™เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ›เบฒเบเบ—เบฒเบ‡, เปเบฅเบฐเบฅเบถเบšเบ‚เปเป‰เบ„เบงเบฒเบก. เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบšเปเบฅเบดเบเบฒเบ™เบ™เบตเป‰เบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบงเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ;
  • เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบฒเบเบซเบ™เป‰เบฒ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เปเบฅเบฐเบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ DLQ (เบกเบฑเบ™เป€เบเบทเบญเบšเป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เป„เบฅเปˆเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”, เปเบ•เปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡เปเบฅเบฐเบ›เบฑเบšเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™. );
  • เบฎเป‰เบฒเบ™เบ„เป‰เบฒ DLQ เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เปเบฅเบฐเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ•เป‰เบญเบ‡เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเป€เบžเบทเปˆเบญเบงเปˆเบฒเป€เบกเบทเปˆเบญเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เป„เบ”เป‰เป„เบงเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบˆเบฐเป„เบงเป„เบ”เป‰. เบ™เบตเป‰เบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™ "เบžเบทเป‰เบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบš" เบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเบซเบผเบทเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบฒเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”;
  • เบฅเบปเบ”เป€เบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเบ•เปเปˆเบเบฑเบšเบเบฒเบ™เบšเปเปˆเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบŠเบปเปˆเบงเบ„เบฒเบง: เบเบฒเบ™เบชเบฐเบซเบกเบฑเบเบซเบปเบงเบ‚เปเป‰เปƒเบ”เบซเบ™เบถเปˆเบ‡เบ•เป‰เบญเบ‡เบ—เบปเบ™เบ—เบฒเบ™, เปเบฅเบฐเบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบšเปเปˆเบขเบนเปˆ, เบ„เบปเบ™เบญเบทเปˆเบ™เบˆเบฐเบšเปเปˆเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฒเบ. เบ„เบดเบง.

เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเป€เบซเบ”เบเบฒเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ„เบงเบ™เบˆเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ›เบญเบ”เป„เบž.

เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบ•เปˆเบฅเบฐเป€เบซเบ”เบเบฒเบ™เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™. เป€เบซเบ”เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™:

  • เป€เบ›เบตเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”;
  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบดเบ”เบˆเบฐเบเปเบฒเบžเบฒเบเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”;
  • เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบซเบผเบทโ€‹เบชเบฑเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบธโ€‹เบฅเบฐโ€‹เบเบดเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹;
  • triggering เบ‚เบญเบ‡ timer เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เป‚เบ”เบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”;
  • เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบœเปˆเบฒเบ™ API (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™).

เปเบ•เปˆเบฅเบฐเป€เบซเบ”เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡: เบšเบฒเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒเบญเบฒเบ”เบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เปเบฅเบฐเบ„เบปเบ™เบญเบทเปˆเบ™เบญเบฒเบ”เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเบ„เบธเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ„เบปเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡. เบเบฒเบ™เบ›เบดเบ”เบเบดเบ”เบˆเบฐเบเปเบฒเปƒเบ”เป†เบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบเบดเบ”เบˆเบฐเบเปเบฒเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบดเบ”เบˆเบฐเบเปเบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™, เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบชเบฒเบกเบฒเบ”เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบฅเปเบ–เป‰เบฒเป€เบซเบ”เบเบฒเบ™เบญเบทเปˆเบ™เป†เบซเบผเบท, เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เปƒเบ™เบ—เบธเบฅเบฐเบเปเบฒเบ”เบฝเบงเบเบฑเบ™. เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เบดเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบชเบฐเบ–เบฒเบ™เบฐเปƒเบซเบกเปˆเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบˆเบฐเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบฅเปเบ–เป‰เบฒเป€เบซเบ”เบเบฒเบ™เบžเบฒเบเบ™เบญเบเบ•เปเปˆเป„เบ›.

เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบธโ€‹เบฅเบฐโ€‹เบเบดเบ”โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เป„เบงเป‰โ€‹เปƒเบ™โ€‹เบ–เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบˆเบธเบ”โ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™ synchronizing เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ SELECT FOR UPDATE. เบ–เป‰เบฒเบ—เบธเบฅเบฐเบเปเบฒเบซเบ™เบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบˆเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบกเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบทเปˆเบ™เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบทเปˆเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เปเบฒเบญเบดเบ”, เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™. เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ‚เบญเบ‡โ€‹เบฅเบฑเบ”โ€‹.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ locks เบ—เบตเปˆเบšเปเปˆเบ”เบตเปƒเบ™เบ”เป‰เบฒเบ™ DBMS, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” เป€เบญเบŠเบตเบ”เบต, เปเบฅเบฐเบเบฑเบ‡เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เปเบฅเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡.

เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบเบฒเบ™เบฅเบฑเบญเบเปƒเบ™เปเบ‡เปˆเบฎเป‰เบฒเบเบˆเบฐเบ‚เบปเปˆเบกเบ‚เบนเปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบเบฒเบ™เบ›เบดเบ”เบ—เป‰เบฒเบ, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ SELECT FOR UPDATE เบ„เบงเบ™เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ„เบงเบฒเบกเบ•เบฒเบเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เปƒเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”.

เบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เปเบกเปˆเบ™ synchronization เบ‚เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”, เบšเปเปˆเบกเบตเบฅเบฑเบ”เบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™ synchronization เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบฅเบฐเบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบเบปเบ™เป„เบเบเบฒเบ™เบฅเบฑเบญเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบเบฒเบ™เบฅเบฑเบญเบเปƒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ•เบปเบ™เป€เบญเบ‡เบกเบฑเบเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเบเบฐเปเบˆเปƒเบ™เบฎเบนเบšเปเบšเบš URI เบœเปˆเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบฒเบเบ™เบญเบ.

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ” InitialPlayer เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบเบฒเบ”

uniqueConstraint = UniqueConstraints.singleton

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเบฑเบ™เบ—เบถเบเบกเบตเบ‚เปเป‰เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบญเบปเบฒเปเบฅเบฐเบ›เปˆเบญเบเบ•เบปเบงเบฅเบฑเบญเบเบ‚เบญเบ‡เบเบฐเปเบˆเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เบšเปเปˆเบกเบตเบ‚เปเป‰เบ„เบงเบฒเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบญเบทเปˆเบ™เป†: uniqueConstraint เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”.

เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ„เบปเบ‡เบ—เบตเปˆ

เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเบฒเบ™เบกเบตเบฅเบฑเบ”เบ„เบปเบ‡เบ•เบปเบงเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบŠเปˆเบงเบ, เปเบ•เปˆเบเบฑเบ‡เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡.
เบšเบฑเบ™เบซเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ” เปเบฅเบฐ/เบซเบผเบท เบฎเบนเบšเปเบšเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”. เบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเป†เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”. เบ–เป‰เบฒเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบปเบ”เบซเบผเบฒเบเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบ, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบเบˆเบฐเบžเบปเบšเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ jBPM.

เบญเบตเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบฅเบดเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบชเบญเบ‡เบงเบดเบ—เบต:

  1. เบชเป‰เบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบเบฑเบšเบญเบฑเบ™เป€เบเบปเปˆเบฒ, เปเบฅเบฐเปƒเบŠเป‰เบกเบฑเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เปเบšเบšเป€เบเบปเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบซเบกเปˆ. เบชเบณเป€เบ™เบปเบฒเป€เบเบปเปˆเบฒเบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ โ€œเบ„เบทเป€เบเบปเปˆเบฒโ€;
  2. เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ„เบปเบ‡เบ„เป‰เบฒเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เป€เบกเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”.

เบงเบดเบ—เบตเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒ, เปเบ•เปˆเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เปเบฅเบฐเบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เบกเบฑเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡:

  • duplicate เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™เบซเบผเบฒเบเบฎเบนเบšเปเบšเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”, เป€เบžเบตเปˆเบกเบ—เบฐเบงเบตเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบธเบฅเบฐเบเบดเบ”;
  • เป€เบฅเบทเป‰เบญเบเป†เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ—เบฑเบ™เบ—เบตเป„เบ›เบชเบนเปˆเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบซเบกเปˆเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™ (เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ - เป€เบเบทเบญเบšเบชเบฐเป€เบซเบกเบต);
  • เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบฎเบนเบšเปเบšเบšเปƒเบ”เบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบกเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบปเบšเบญเบญเบเป„เบ”เป‰.

เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ—เบฑเบ‡เบชเบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™, เปเบ•เปˆเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™:

  • เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบชเบฐเบ–เบฒเบ™เบฐเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เปเบฅเบฐเบ›เบธเบ‡เปเบ•เปˆเบ‡เป„เบ”เป‰เบ‡เปˆเบฒเบ: เปƒเบ™เบฎเบนเบšเปเบšเบš JSON. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบžเบฒเบเปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบžเบฒเบเบ™เบญเบ. เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡ (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™ debugging);
  • เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบŠเบทเปˆเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เบธเบเป€เบงเบฅเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ—เบปเบ”เปเบ—เบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบ”เป‰เบงเบเบŠเบทเปˆเปƒเบซเบกเปˆ (เบ•เบปเบงเบขเปˆเบฒเบ‡, "InitialPlayerV2"). เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบŠเบทเปˆเบชเบฑเบ™เบเบฒเบ™;
  • เบฎเบนเบšเปเบšเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบกเบตเบˆเปเบฒเบ™เบงเบ™เบฎเบธเปˆเบ™, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเปเบšเบšเบ™เบตเป‰, เปเบฅเบฐเบ•เบปเบงเป€เบฅเบเบ™เบตเป‰เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เบžเป‰เบญเบกเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™;
  • เบชเบฐเบ–เบฒเบ™เบฐเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบกเปˆเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเปˆเบญเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเบฐเบ”เบงเบ, เป€เบŠเบดเปˆเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ–เป‰เบฒเบ•เบปเบงเป€เบฅเบเบฎเบธเปˆเบ™เบ‚เบญเบ‡เบ•เบปเบงเปเบšเบšเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡;
  • เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปเบกเปˆเบ™เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเบขเบนเปˆเบ‚เป‰เบฒเบ‡เบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "lazy" เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเบˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™;
  • เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเป‰เบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปเบฅเบฐ synchronously, เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ„เบฅเบฒเบชเบชเบดเบเบซเบผเบฒเบเปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เปเบ•เปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš JSON.

เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบญเบšเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบšเป?

เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเป„เบ”เป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‡เปˆเบฒเบเบ”เบฒเบเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ, เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบเป‰เป„เบ‚เปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบเบเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ microservices เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบงเบฝเบเบ‡เบฒเบ™เบซเบผเบฒเบเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบเบญเบš "เบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒ" เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบปเปˆเบงเป„เบ›เป€เบ›เบตเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบŸเบฃเบต. เบ™เบตเป‰เบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเปเบฅเบฐเป€เบงเบฅเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบชเบฐเป€เบซเบ™เบต, เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบซเบ™เป‰เบญเบเบซเบผเบฒเบเปเบกเปˆเบ™เบˆเปˆเบฒเบเปƒเบซเป‰เบเบฑเบšเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบเบญเบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เปเบ•เปˆเบšเบฒเบ‡เบญเบฑเบ™เปเบกเปˆเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบœเบตเบเปเบœเปˆเบเบญเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบšเบปเบ”เบ„เบงเบฒเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบˆเบฐเบ–เบทเบเบญเบธเบ—เบดเบ”เปƒเบซเป‰เบเบฑเบšเบกเบฑเบ™. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เปเบ‚เบญเบšเปƒเบˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเป€เบฅเบฑเบเบ™เป‰เบญเบ:

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบญเบšเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบšเป?

  • 18,8%เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ‚เป‰เบญเบเบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เปเบšเบšเบ™เบตเป‰เบกเบฒเบ”เบปเบ™เปเบฅเป‰เบง

  • 12,5%เบ‚เป‰เบญเบเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”2

  • 6,2%เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบเบญเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เปเบ•เปˆเบเปเบฒเบฅเบฑเบ‡เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ—เบ™ 1

  • 18,8%เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบเบญเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบต3

  • 18,8%เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ‚เบญเบšโ€‹เป€เบ‚เบ” 3

  • 25,0%เบ‚เบฝเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™ 4

16 เบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 7 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™