แแแแแ แฏแแแ, แฐแแแ !
แฉแแแแ แแแแแแแแ แกแแแชแแแแแแแ แแแฃแแแ ERP แแแแกแแก แแ แแแ แแแฃแแ แแแแแฌแงแแแขแแแแแแแแก แจแแแฃแจแแแแแแจแ, แ แแแแแแจแแช แแแแแก แฌแแแ แฃแญแแ แแแก แขแ แแแแแฅแชแแฃแ แกแแกแขแแแแแก แฃแแแ แแแแแ แ แแแแแแก แแแแแแแ แแ แกแแแฃแจแแ แแ แแชแแกแแแแ a la EDMS. แฉแแแแ แแ แแแฃแฅแชแแแก แแแแแแแแ แแแ แแแ แกแแแแ แแแคแฃแซแแแแฃแแแ JavaEE แขแแฅแแแแแแแแแแ, แแแแ แแ แฉแแแ แแกแแแ แแฅแขแแฃแ แแ แแแขแแ แแแ แแแแ แแกแแ แแแกแแแแก แแฅแกแแแ แแแแแขแแแก. แแกแแแ แแแแแฌแงแแแขแแแแแแแแก แแ แ-แแ แแ แงแแแแแแ แแ แแแแแแฃแ แ แกแคแแ แแ แแแแแแแแ แ แแแแแแแแแแ แแแแแแจแแ แแแฃแแ แกแฎแแแแแกแฎแแ แฅแแแกแแกแขแแแแแแก แแแขแแแ แแชแแ. แแแขแแแ แแชแแแก แแแแชแแแแแ แงแแแแแแแแก แแแแซแแแแแ แฃแแแ แแแแแ แแแแแก แขแแแแแแก, แแแแฃแ แฉแแแแแ แแ แฅแแขแแฅแขแฃแ แฃแแ แกแขแแแแก, แขแแฅแแแแแแแฃแ แ แฌแงแแแแกแ แแ แฉแแ แฉแแแแแกแ, แ แแแแแกแแช แแแงแแแแแ, แแแแ แแ แแแแ แแ แแก แแ แแแ แแกแ แจแแแแแจแแแแ แแแแแแ แ แแ แแแแแแแแแก แแแแแญแ แแจแ.
แแฅแแแแก แงแฃแ แแแฆแแแแก แชแแแขแ แจแ แแแงแแแแแ แกแขแแขแแแจแ แแแกแแฃแแ แแ NPO Krista-แก แแแแแชแแแแแแแกแ แแ แแ แฅแแขแแฅแขแฃแ แฃแ แแแแแแแแ แแแแแจแแฃแ แขแแ แแขแแ แแแแ. แฉแแแ แแกแแแ แแแแแแฎแแแแแ แแแขแแแ แแชแแแก แแ แแแแแแแก แแแ แขแแแ แแแแแฌแงแแแขแแก แแแแแแแแก แแแแแแแชแแแก แจแแแฅแแแแแแก แแแแแกแแแ แแกแแ แแ แแแแแ แแแแแ, แ แ แแแแแแแ แแ แกแแแแ แขแแแแก แแแฆแแ.
แแแกแฃแฎแแกแแแแแแแแแก แฃแแ แงแแคแ
แกแขแแขแแแจแ แแฆแฌแแ แแแ แแ แฅแแขแแฅแขแฃแ แฃแแ แแ แขแแฅแแแแฃแ แ แแแแแฌแงแแแขแแแแแแแ แจแแแแแแแแแแแแ แฉแแแก แแแแ แแแ แแแ แแแแแชแแแแแแแแแ แแแแแแแแแแ แ แแแแแ แแขแฃแแ แแแแชแแแแแแก แแแแขแแฅแกแขแจแ. แแก แแแแแฌแงแแแขแแแแแแแ แแ แแ แแก แฃแแแแแ แกแแแฃแ แ แแ แจแแแซแแแแ แแ แแงแแก แแแขแแแแแฃแ แ แกแฎแแ แแแแแงแแแแแแก แแแ แแแแแจแ.
แ แ แจแฃแแจแแ BPM?
แแ แแแแฎแแแแ แแแกแฃแฎแแก แแแกแแชแแแแ, แชแแขแ แฃแแแ แฉแแแฃแฆแ แแแแแแ แฉแแแแ แแแแแฌแงแแแขแแแแแแแแก แแแแแงแแแแแแแ แแ แแแแแแแแแก แกแแแชแแคแแแแก. แแแแแแก แแแแแแแก แซแแ แแแแแ แแแฌแแแ แฉแแแแก แขแแแฃแ แขแ แแแแแฅแชแแฃแ แกแแกแขแแแแจแ แแ แแก แแแแแชแแแแ แแแแแจแ แแแแฎแแแ แแแแแก แแแขแแ แคแแแกแแก แแแจแแแแแแ แแแแแชแแแแ แจแแงแแแแ, แแ แแแแแชแแแแแแก แฎแแแแ แแ แแแขแแแแขแฃแ แแ แจแแแแฌแแแแ, แแแ แแแแฃแแ แกแแแฃแจแแ แแ แแชแแกแแก แแแแแ, แกแฎแแ แกแแกแขแแแแจแ/แแแแแแขแแแฃแ แแแแแชแแแแ แแแแแจแ/แแ แฅแแแจแ แแแแแฅแแแงแแแแ, แแแแแ แแจแแแแก แแแแแ แแ แแแ. แแแ แแแแ, แแแแฎแแแ แแแแแกแแแแก แกแแกแขแแแแก แแแแแแ แ แคแฃแแฅแชแแแ แแแแ แจแแแ แแแแแแก แแ แแชแแกแแแแก แแแขแแแแขแแแแชแแ.
แแแฎแแ แฎแแแฃแแแแแกแแแแก, แฉแแแ แแแงแแแแแ แขแแ แแแแก "แแแแฃแแแแขแ" แแแแฃแแแแแชแแแจแ, แ แแแแ แช แแแแแชแแแแ แแแแ แแแแก แแแแแแ แแ แแแกแขแ แแฅแชแแ, แ แแแแแแช แแแแ แแแแแแแฃแแแ แกแแแ แแ แแแกแแฆแแแแ, แ แแแแแกแแช แจแแแซแแแแ "แแแแแแ แแแก" แแแแแ แแขแฃแแ แกแแแฃแจแแ แแ แแชแแกแ.
แแแแ แแ แ แแช แจแแแฎแแแ แแแขแแแ แแชแแแก แแแแแแแก? แงแแแแแแแ แแแแก แจแแแแแ, แแแขแแแ แแชแแแก แแแแชแแแแก แฌแแ แแแฅแแแแก แกแแกแขแแแแก แแ แฅแแขแแฅแขแฃแ แ, แ แแแแแแช "แแญแ แแแ" แแแฌแแแแแแ แแ แ แแแแฎแแแ แแแแแก แแแแฎแแแแแ, แแ แแแแ แกแ แฃแแแแ แแแแกแฎแแแแแแฃแแ แคแแฅแขแแ แแแแก แแแแแแแแ:
- แแแแแแแก แแแแแแแก แแแแแแแแ;
- แกแฎแแ แแ แแแฃแฅแขแแแแกแแแแก แแแ แ แจแแแฃแจแแแแแฃแแ แฅแแแกแแกแขแแแแแแก แฎแแแแฎแแแ แแแแแงแแแแแแก แจแแแแแแ;
- แ แแแแ แช แแ แฅแแขแแฅแขแแ แแ แแแแแฌแงแแแขแ, แแ แแคแฃแแฅแชแแฃแ แ แแแแฎแแแแแแแแแ แแแแแแแแแแ แ.
แแแแแ แชแแฃแแแแ, แแแแแแงแแ แแแขแแแ แแชแแแก แแแแแแ แซแแ แแแแแ แกแแแฃแจแแ แแ แแชแแกแแก แแแแแแก แแแแแแแกแแแแ, แ แแแ แแ แแแแแแซแฃแ แแแก แแแแแแก แแแแแแ แแแขแแแ แแชแแแก แแ แขแแคแแฅแขแแแแ แแ แแแแแแ แฉแแแแก แแแแแแแชแแแก แจแแแฅแแแแแ แกแแกแขแแแแก แแ แฅแแขแแฅแขแฃแ แฃแแ แแแแแจแแคแขแแก แแแแแกแแแฃแ แแแแแจแ แฉแแฆแ แแแแแแแกแแแ. แแ แแแแแแแแก แแฅแแก แแ แแแแแ แฃแแแ แแขแแกแแแ, แแแแ แแ แแ แแฅแขแแแ แแฉแแแแแแก แแแก แแ แแแคแแฅแขแฃแ แแแแก:
- แแแขแแแ แแชแแแก แแ แแแแแแแแแก แแแแแญแ แ, แฉแแแฃแแแแ แแ, แฃแแแ แขแแแแก แแแ แแแแขแแแแแแ แแแแแก แกแแแฅแ แแแฃแแ แแแ แแแแก แกแแฎแแ, แซแแ แแแแแ แกแแแฃแจแแ แแแแแแแก แแแแฎแแ แชแแแแแแแก แจแแแฆแฃแแฃแแ แแแคแแ แแแแแแก แฌแแ แขแแแแแแก แแแแ (แกแแแฅแ แแแฃแแ แแแขแแแ แแชแแแก แแแแแแแแแแแแแแก แจแแกแแฎแแ แฅแแแแแ);
- แแแขแแแ แแชแแแก แแ แขแแคแแฅแขแแแ แแแแแ แแฆแฌแแแก แแแแแแ แแแแแแก แแแแแแแจแ, แ แแแแกแแช แกแแญแแ แแ แกแฎแแ แฅแแแกแแกแขแแแแแแ แแแแแฎแแแฃแ แแแ;
- แแแแแแแชแแแก แจแแแฅแแแแแ แฃแแฃแแแแแแงแแคแก แแแขแแแ แแชแแแก แแ แแแแแแแ แแ แฆแแแแก แแแก แกแแแฃแจแแ แแแแแแแก แจแแชแแแแ;
- แกแแกแขแแแ แฌแงแแแขแก แแ แแ แแแแแแแแแแก แแแแฎแแแ แแแแแก แแแแแกแแแ แแกแแ, แจแแกแแแฉแแแแ แฎแแแแ แฅแแแกแแกแขแแแแแก แจแแ แแก โแแแแแ แแแโ, แฉแแแแแ แแแแฎแแแ แแแแแก แแแแแแขแ แแแแ แแชแแแแ, แ แแแแแแแช แแฌแงแแแแ แแแแแชแแแแ แแแแแชแแแแก แแ แแ แฅแแแกแแกแขแแแแแแ แแแแ แแจแ.
แแแแแ แแ แแ แแแแแแแแ แแแขแแแ แแชแแแก แฃแ แแแแ แแฅแแแแแแแก แแแแฎแแแแ, แ แแแแ แช แซแแ แแแแแ แแแแแแกแแก แแแแแแแกแ แแ แกแแแฃแจแแ แแ แแชแแกแแก แแแแฃแงแแคแแแ แแแฌแแแ. แแแแกแแแแแก, แ แแ แแแแแแแชแแแก แจแแแฅแแแแแแแแก แฃแแแ -แฉแแแแแแแก แแแแฎแแแแแแ แแ แแแแแแ แแแก, แแฎแแแ แแแขแแแ แแชแแแก แฃแ แแแแ แแฅแแแแแแแก แจแแฅแแแ แฃแแแ แแแฎแแแก แแแ แขแแแแ แแ แแฃแแแแ แแแแ, แแแแแฌแงแแแขแแก แแ แฉแแแแก แแแแแแแแฃแ แ แแแ แแแแขแแแแ. แแก แฃแคแ แ แ แแฃแแแ, แแแแ แ แแ แแ แจแแฎแแแแแ แฉแแแก: แฎแแแกแแฌแงแ แฃแแแ แแงแแก แกแแแแแ แแกแแ แซแแแแ แ, แ แแแ แแแแฎแแแ แแแแแก แแแแฌแแแแก แแแกแ แแแแแงแแแแแแก แกแแญแแ แ แแแ แแแแขแแแแก แแ แแแแแคแแ แแแแแแ แแ แแแแแแ แแฃแแแ แแ แแแกแชแแก แกแแแฃแแแ แแแแก แคแแฎแจแ แกแ แแแแก แฃแคแแแแ. แแ แแก แแแแ แ แแแแฎแแ, แ แแแแแกแแช แแแแแแแ แแ แฃแแแ แฃแแแกแฃแฎแแก แแแขแแแ แแชแแแก แแแแชแแแแแแก แแแแขแแฅแกแขแจแ, แแแแ แแ แ แแแแแแแแช แแแแแแแชแแแก แจแแแฅแแแแแแ แแ แฃแแแ แแคแแฅแ แแก แงแแแแแแฆแแฃแ แแฃแจแแแแแจแ: แขแ แแแแแฅแชแแแก แกแแแฆแแ แแแ, แแแแแแแแแแ แฃแแแแ, แแขแแแฃแ แแแ, แฃแกแแคแ แแฎแแแแ, แแแกแจแขแแแแ แแแ, แแแขแแแ แแแ แแ แ แแกแฃแ แกแแแแก แแแแแฌแแแแแ, แแแ แจแ แฃแขแแแแชแแ, แแแ แจแแแแแแชแแ, แแแแขแแฅแกแขแแแแก แแแแ แชแแแแแ แแ แแแแแ แแแ แแ แ.แจ. แแฃแชแแแแแแแแ แแแแแแแชแแแก แแแแแแแแแ แแแก แจแแแแแแแแแ แแแแแฌแงแแแขแแแแแแก แกแแแแแแ แแแ แขแแแ แจแแแแแแแแ, แ แแแแแแจแแช แงแแแแ แแกแแ แแแแฎแแแแ แแแกแฃแฎแ แฃแแแ แแแแแแแ. แแก แจแแแแแแแแ แกแแแแแ แแกแแ แฃแกแแคแ แแฎแ แฃแแแ แแงแแก: แแแแแแก แแแแแแ แซแแแแแ แฎแจแแ แแ แแชแแแแแ, แ แแช แแ แแแก แจแแชแแแแแแแก แแแแแ แแแแก แ แแกแแก, แจแแชแแแแแแแก แฆแแ แแแฃแแแแ แฃแแแ แแแ แฉแแก แกแแแแแแ แแแแแ แแแแแแ.
แแแแ แแ แแแแแช, แ แ แจแฃแแจแแ BPM? แกแแแฃแจแแ แแ แแชแแกแแก แแแแฎแแ แชแแแแแแแก แแ แแแแแ แแแ แแแแขแ แแ แกแแแแแก ...
แแแ แแแแช, แแแแแแก แแ แแชแแกแแแแก แแแแแ แแ แแ แแแแแ แแแ แซแแแแแ แแแแฃแแแ แฃแแแ แฉแแแแก แแแแแฌแงแแแขแแแแแแแจแ - แกแแฎแแแแฌแแคแแก แแแ แแแแแแแแ แแแแแ แแแแก แแแแแแ แแชแแฃแแ แแแ แแแแขแ แแ แแ แแแแแแก แแแแแแแก แแฅแแแ แแแแแฃแจแแแแแแแแแก แแแแ แแแแแกแแแแแแ. แแแแแแ แแฃแแแ, แกแแฎแแแแฌแแคแ, แ แแแแแแช แแแแกแแแฆแแ แแแก โแแแแฃแแแแขแแกโ แแแแแแแแแแ แแแแแชแแแก แแแแแแก แแ แแชแแกแจแ, แแแแแ โแแแแฃแแแแขแแกโ แแขแ แแแฃแขแแ.
แแกแ แแแแแแงแฃแ แแแ แแ แแชแแกแ แแ แแแฅแขแแก แแแกแแฌแงแแกแจแ
แแกแแแ แแแแฎแแ แชแแแแแแแก แแแแฃแแแ แแแ แแแแแแ แแแแแฃแแแ แฎแแแแแแแ แแแแแแก แแ แแชแแกแแแแก แจแแฅแแแแก แจแแแแ แแแแแ แกแแแแ แขแแแแ แแ แกแแกแฌแ แแคแแ. แแฃแแชแ, แ แแช แฃแคแ แ แ แแฃแแ แฎแแแแ แแ แแแ แแแฃแแ แกแแกแขแแแแแ, แแแแแแก แแ แแชแแกแแก แแแขแแแแขแแแแ แแแฃแแ แแแฌแแแ แแแ แแแแ แแ แฃแคแ แ แ แแฃแแ แฎแแแแ. แกแแญแแ แแ แแแจแแ, แแ แแชแแกแแแแก แแแฌแแแแแแก แฎแแแแฎแแแ แแแแแงแแแแแ, แแกแแแ แฉแแแแแแ แแ แแชแแกแแแ แแกแ, แ แแ แแแแแแฃแแ แแแแจแขแแแแ แจแแกแ แฃแแแแก แแแ แแแแแฃแ แแ. แแกแแ แแแ แแแแแจแ แแแกแขแ แฃแแแแขแ แฎแแแแ แแแฃแฎแแ แฎแแแแแ แแ แแแแแแแ แแแแแก แแแ แแแแแแแแ แแแแแ แแแ แแแ แแแแก แแแคแแ แแแชแแฃแ แจแแแแแ แกแก (แแแขแแแ แแชแแแก แฃแ แแแแ แแฅแแแแแแ แแแแแ แแแแแ แกแแแ แแแ แแ แแ แแก แแกแแฎแฃแแ).
แแกแ แแแแแแงแฃแ แแแ แแ แแชแแกแ แแแแฎแแแแแแแก แแแแฃแกแขแแแแก แ แแแแแแแแ แแแแแแแ แแแแก แจแแแแแ
แแ แกแแขแฃแแชแแแแแ แแแแแกแแแแแ แแงแ แซแ แแแแก แแแขแแแ แแชแแ
แ แแฃแแ แแแแแแก แแ แแชแแกแแก แแชแแ แ แแแฌแแแ
แแ แซแแแแแแแแ แแแ แกแแแฅแขแแแแจแ, แแแแแกแแแแแแ แแ แแแแแแ แแแ แแแแแแแแ: แแแแฃแแแฃแ แ แฎแแแกแแฌแงแแแแแก แกแแจแฃแแแแแแ แแแแแแก แแ แแชแแกแแแแก แจแแฅแแแแก แแแฆแแแ แจแ แแแแก แแแขแแแกแแแแแ แแ แแซแแแแแ แแ แแแฃแฅแขแแฃแแแแแก แแแกแแฆแแแ แแแแแแแขแแ แแแแก แแแฆแฌแแแแก แกแแจแฃแแแแแแก แแ แแแแแ แแแกแขแ แฃแแแแขแ แแแฎแแ แแ แ-แแ แแ แงแแแแแแ แแ แแกแแกแฃแ แแแแ แแแแแแแแแ แแแก แจแแ แแก. แแกแแแ แแงแ แแ แแขแแแแแแแ แซแ แแแแก แจแแแ แกแขแ แฃแฅแขแฃแ แแแ, แ แแแแช แแแแแแฌแแแ แแ แแแแแ "แแแขแฉแ" แแ "แงแแแแ แฏแแแแ".
jBPM-แแก แแแแแงแแแแแแก แแแแแแ แ แแแแแแแแ แแกแแแฅแขแ แแงแ แแแแแแก แแ แแชแแกแแก แแแแแแแแแกแแแแก แกแแแฃแแแ แ แแแแ แแแ แแแแแแแ แแแแแก แกแแ แแแแแแแแกแ แแ แแแแแแก แแแชแแแแแแ แแแ. แฉแแแ แแกแแแ แแแแแแแฎแแ แแ แแชแแกแแก แแแแแแแแก แแแแแงแแแแแแก แจแแกแแซแแแแแแแ แแแแแแแฅแกแฃแ แ แแแขแแแ แแชแแแก แแ แแขแแแแแแแแก แแแแกแแฎแแ แชแแแแแแแแ แกแฎแแแแแกแฎแแ แแแแแแแชแแแแก แจแแ แแก แแกแแแฅแ แแแฃแแ แฃแ แแแแ แแฅแแแแแแแก แแแแแงแแแแแแ แกแแแแแแแแแกแ แแ แจแแขแงแแแแแแแแแแก แกแแจแฃแแแแแแ. แแแแจแ แแแแแแฌแงแแแข แ แแแก แแแแแจแแแก แแแแ แแแ แกแแฎแแแแฌแแคแแก แแ แกแแแแแ.
แแแแแแฆแแแจแแฃแแแแแ แแแแแแแแแแ แ, แจแแแแแซแแแ แแแแแกแแแแแ: แแ แแชแแกแแก แแแแแแแ BPM แกแขแแแจแ แกแแจแฃแแแแแแก แแแแซแแแแก แแแแแแญแ แแ แแแแชแแแแแแก แคแแ แแ แกแแแฅแขแ แ แฃแคแ แ แ แแฃแแ แแแแแแก แแ แแชแแกแแแแก แแแขแแแแขแแแแชแแแกแแแแก, แแ แแ แแชแแกแแแจแ แแแขแแแ แแชแแแก แแฅแขแแแแแแแแก แฐแแ แแแแแฃแแแ แแแ แแแแ แแ แแแแฎแแ แชแแแแแแฃแแ แแ แแชแแกแแก แจแแกแแคแแ แแก แแแขแแชแแแจแ แแแแฃแแแฃแ แแ แฉแแแแแแแก แฃแแแ แ.
แกแแแฅแ แแแฃแแ แแแ แแแแก, แ แแแแ แช แแแขแแแ แแชแแแก แแแแฃแจแแก แแแแแแแแแแแแแ
แกแแแฅแ แแแฃแแ แแแขแแแ แแชแแ แแฎแแแ แฃแแแ แขแแแแก แแแแแแแแแก แแแ แก. แแ แแ แฅแแแกแแกแขแแแ แแแฅแแแแแแก แ แแแแ แช แกแแ แแแ แแก แแฎแแ แ แแ แแแแแแก API-แก แกแแกแฃแ แแแแ แแแแแแแ. แกแฎแแ แฅแแแกแแกแขแแแ แแแฅแแแแแแก แ แแแแ แช แแแแแแขแแก แแฎแแ แ แแ แกแฌแแ แแ แแก แแแแแแแก แแแ แก แจแแแแแแก แแแแแแแแแ. แกแแกแขแแแแก แแ แฅแแขแแฅแขแฃแ แแแแ แแแแแแแแแแ แ, แแแแแแขแแกแ แแ แกแแ แแแ แแก แแฎแแ แแแแ แจแแแซแแแแ แแแแแแแกแแแก แ แแแแ แช แแ แแกแ แแ แแแแแ แแแแแแแชแแแจแ แแ แแ แแชแแกแจแ, แแ แกแฎแแแแแกแฎแแแจแ. แแแแ แ แจแแแแฎแแแแแจแ, แแฅแแแ แฃแแแ แแแแแแงแแแแ RPC-แแก แแแ แแแแฃแแ แแแแฎแแ แชแแแแแแ แแ แฃแแ แฃแแแแแงแแ แแแ แแแแขแ แแแแก แแ แแแ แแก แจแแแแแแก แแแ แจแแแแแแชแแ.
แแแขแแแ แแชแแแก แแกแแ แจแแแแแแก แแฅแแก แกแแแแแแ แแแแ แแแแแแแแแแแแแ, แแแแ แแ แแก แซแแแแแ แคแแ แแแ แแแแแแงแแแแแ แแ แแฅแขแแแแจแ แแแกแ แกแแแแ แขแแแแก แแแแ. แแแแฎแแ แชแแแแแแแก แกแแฉแฅแแ แ แแแงแ แแแก แแ แแแแซแฃแแแแก แแแแแแงแแแ แแก แแกแแ แแ แแกแแ โแแแฌแแแกโ แแแแแแแก แแแ แแแแแจแ, แแแแแฌแงแแแขแแก แฉแแฌแแ แ แขแแฅแแแแฃแ แแแแจแ. แแแแ แแ แแกแแแ แฎแแแแ, แ แแ แแแแแฃแชแแแแ แแแแแแแแแ แแแ แแแก แฅแแแชแแแแแแ แแ แแงแแแแแแ, แฃแแ แแแแ แแแ แแชแแแแแแ แแแแ แฃแแ แงแแคแแ แจแแแแแแแก.
แฅแแแกแแกแขแแแแแแก แแแแแแจแแ แแแแก แงแแแแแแ แแจแแแ แ แแ แแแก แแแ แแ, แแแแแแแแ แแจแแแ แแ แขแ แแแแแฅแชแแแแแก โแแแแ แชแแแแแแกโ แแ โแแแญแแแแแกโ แแ แแแแแแแแ. แแแ แแแแช, แแฃ แแแแแแก แแแแแแ แ แแแแ แชแแแแแแแแก แจแแแขแแแก, แแแจแแ แขแ แแแแแฅแชแแแแ แจแแฃแชแแแแแแ แแ แขแ แแแแแฅแชแแแแ, แแแแแก แแฎแ แแ, แแแแแแแแ แแแ แแแแฃแแ แแแแแแแชแแแก แ แแกแฃแ แกแแแ, แ แแแแแแแช แแแแแแแแก แแฎแแแแก แแ แชแแแแแแแแแแ. แแแฃ, แกแแแแ แแ แแ แฅแแแกแแกแขแแแ แแ แแแแแแแแแ แแแกแฃแฎแก แแแแ แแกแแแ, แแก แแแ แจแแซแแแแก แขแ แแแแแฅแชแแแก แแแกแ แฃแแแแแก แแ แแแแแแ แแแแก แแแแแแแกแฃแคแแแแแก. แแก แแแแจแแแแแแแแแ แแ แแแก แกแฎแแแแแกแฎแแ แแคแแฅแขแแแแก แ แแกแแก:
- แกแแกแขแแแแก แแแกแฃแฎแแกแแแแแแแแ แแแแแ แแฃแแแ, แแแแฎแแแ แแแแแแ แแแแฎแแแก แแแแแ แแฎแแแแแแแ แแแกแฃแฎแแแก;
- แกแแ แแแ แ, แ แแแแ แช แฌแแกแ, แฌแงแแแขแก แแแกแฃแฎแก แแแแฎแแแ แแแแแก แแแแฎแแแแแแแ แแแแแขแแแ แแฃแแ แแแแแแแก แแฃแแแก แแแแ: แซแแคแแแแก แฃแแแขแแกแแแ โแแแแกโ แขแ แแแแแฅแชแแแก แแแแ แแแแแแแแฃแแ แ แแกแฃแ แกแแก แกแแแแขแแ;
- แฉแแฎแแแ แฉแแแแแ: แแแแ แฌแแ แแแจแแแแก แแแแแแแแ แซแแแแ แแ แแก แแแแแแแแแแฃแแ แขแ แแแแแฅแชแแแก แฎแแแแ แซแแแแแแแแ, แแแแแแก แแแแแแแก แแแแแแแแแ แแ แขแ แแแแแฅแชแแแจแ แฉแแ แแฃแ แกแแแแขแแแแ;
- แฉแแแแแ แขแ แแแแแฅแชแแแก แแแแแก แแแแฌแฃแ แแแก แจแแชแแแแแแ;
- แกแแ แแแ แ "แแแ แแแแ" OutOfMemory-แแ, แแฃ แแแแชแแแ แแแแแฎแแแก แแแแ แ แแแแแแแแแ แแแแแชแแแแแแก แแแแฃแจแแแแแแก แแ แจแแชแแแแก, แฎแแแ แกแแแฅแ แแแฃแแ แแแขแแแ แแชแแแแแก แแ แกแแแแแ แซแแแแแ แแ แแฃแแแแก แแแแฃแจแแแแแแก "แแกแฃแแฃแฅ" แขแ แแแแแฅแชแแแแแ แแแงแแคแแก.
แแ แฅแแขแแฅแขแฃแ แฃแแ แแแแแกแแแ แแกแแ, แแแแแแแแแก แแแ แแแแก แแแแแงแแแแแ แแแขแแแ แแชแแแก แแ แแก แแฌแแแแก แชแแแแแฃแแ แฅแแแกแแกแขแแแแแแก แฎแแ แแกแฎแแก แแแแขแ แแแแก แแแแแ แแแแก: แจแแฃแซแแแแแแแ แแ แแ แฅแแแกแแกแขแแแแก แฎแแ แแกแฎแแก แกแแแแแแแแแแก แฃแแ แฃแแแแแงแแคแ แกแฎแแ แฅแแแกแแกแขแแแแก แฎแแ แแกแฎแแก แกแแแแแแแแแแกแแแ แแแแแแ แแแฃแแแ. แแฃ แฅแแแกแแกแขแแแแแ แจแแแฃแจแแแแแฃแแแ แกแฎแแแแแกแฎแแ แแฃแแแแก แแแแ , แแก แแแแ แแ แแแแแแแ.
แงแแแแแคแแ แ แแแแแ แฃแคแ แ แกแแแแขแแ แแกแ แฎแแแแ, แแฃ แแแขแแแ แแ แแแฃแแ แฅแแแกแแกแขแแแแแ แกแฎแแแแแกแฎแแ แแแแแแแชแแแแจแแ แแ แกแแแฅแ แแแฃแแ แชแแแแแแแแแ แฃแแแ แแแแฎแแ แชแแแแแแก แแ แแแ แแฎแ แแแแ. แ แแแแ แแแแฎแแแแ แแก แชแแแแแแแแแ แขแ แแแแแฅแชแแฃแแ?
แแฃ แชแแแแแแแแแ แแแแฎแแ แชแแแแแแแ แชแแแแแฃแ แขแ แแแแแฅแชแแแแจแ, แแแจแแ แกแแญแแ แ แแฅแแแแ แแแแแแแแแแกแแแแก แแแแฃแจแแแแแ แแ แแแแแแแกแแชแแ, แ แแช แแแแแแแแ แแแแแ แแชแฎแแแก แกแแแฅแ แแแฃแแ แแแขแแแ แแชแแแก แแแแแแ แฃแแแ แแขแแกแแแแก - แกแแแแ แขแแแแก.
แแแแแฌแแแแแฃแแ แขแ แแแแแฅแชแแแแแช แแแฎแกแแแแแแ, แแแแ แแ แฉแแแ แแแ แแ แแแงแแแแแ แฉแแแแก แแแแแฌแงแแแขแแแแแแแจแ: แซแแแแแ แกแแแแแแแแแแก แฃแแ แฃแแแแแงแแคแ.
โแกแแแโ, แ แแแแ แช แขแ แแแแแฅแชแแแแแก แแ แแแแแแแก แแแแแฌแงแแแขแ
แแแแ แแกแแ แแแกแแแแก แแแแ แแ แแแแฃแแแ แแแแ, แแแ แแแแ แแแแฎแแแแ
แแก แแแแฃแจแ แจแแกแแแแจแแแแแ แฌแงแแแขแก แแ แซแแแแแแแแแ แขแ แแแแแฅแชแแแแแก แแแแแฎแกแแแแแฃแ แแ แแแแแแแแก แแ แแกแแแ แแคแแ แแแแแก แกแแกแขแแแแก แแแแแแแ แแแแแก แแแ แแแแก แจแแกแแซแแแแแแแแแก แแแแแแก แแแแแแแก แแฎแ แแแแ: แฌแแ แฃแแแขแแแแแ แขแ แแแแแฅแชแแแก แจแแแแแ แแแแแแแกแแชแแแ แจแแแซแแแแ แแ แแแแแ แฃแแแก แกแแกแขแแแ แแแแแแแแ แแแ แแแแแแแ แแแแแจแ, แแแแ แแ แฃแแ แฃแแแแแงแแก แแแขแแ แแแขแแแ. แแแแแชแแแแ แแแแฃแจแแแแแแก แแแ แจแ แฃแขแ. แแก แแกแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแ แแแแแแแ แแ แแแแแชแแแแ แแแแฃแจแแแแแแก แฌแแ แแแขแแแแ แแแกแ แฃแแแแฃแแ แแแแแฏแแแ, แ แแแแกแแช แชแแแแแแ แแ แแชแแกแแก โแแแ แโ แแแกแแกแ แฃแแแแแ แแแงแแแแแก.
แกแแแแขแแ แแกแแ, แ แแ แแแแแแแแฃแ แกแแกแขแแแแแจแ แแก แแแแฃแจแ แแกแแแ แแฅแขแฃแแแฃแ แแ, แ แแแแกแแช แกแแฅแแ แแฎแแแ แแแแแกแฃแคแแแ แแแฌแงแแแแแแฃแแ แฅแแแกแแกแขแแแแแแก แแแขแแแ แแชแแแก แแ แแ แกแแแแแก แฃแแ แงแแคแแแ แแคแแฅแขแแแ, แ แแแแแแแช แแแแแฌแแแฃแแแ แฎแแแแ แซแแแแ แขแ แแแแแฅแชแแแแแ แแ แจแแกแแแแแแกแ แ แแกแฃแ แกแแแแก แฉแแแแขแแแ.
แ แแช แจแแแฎแแแ แฉแแแแก แแแแแแก แแ แแชแแกแแแก BPM แกแขแแแจแ, แแฆแแแฉแแแแแ, แ แแ แกแแแแก แแแแฎแแ แชแแแแแแ แซแแแแแ แแแ แขแแแแ: แกแแแแก แชแแแแแฃแแ แกแแคแแฎแฃแ แแแ แจแแแซแแแแ แแแแแกแแแฆแแ แแก, แ แแแแ แช แกแแฅแแแแแแแ แแแแแแก แแ แแชแแกแจแ, แแ แแแแแแก แแ แแชแแกแแก แแแแ แแแ แแแแแแแ แแแแ แแแแกแแแฆแแ แแแก, แแแ แจแแ แแก. แกแฎแแ แ แแ, แกแแแแแแก แจแแแแแแแ แแแแแแแ แแแแ. แแแฃ แแแแแขแแแแแ แแแแ แแแแแชแแแก แแแฅแแแแแแ แแ แแแญแแ แแแแ. แงแแแแแคแแ แ แ แแช แแฅแแแ แแญแแ แแแแแ แแ แแก แจแแขแงแแแแแแแแแแก แแ แแแแ แ "แแ แแฎแแ แแแแแช" แแแ แแแขแแแ, แ แแแแ แช แขแ แแแกแแแ แขแ.
แแแแ แแ แแกแแ แแแแแกแแแแแก แแกแแแ แแฅแแก แแแแแกแ "แคแแกแ":
- แแแแแแก แแแแแแ แฃแคแ แ แ แแฃแแ แฎแแแแ: แกแแญแแ แแ แแแแแแแกแแชแแแก แจแแแฃแจแแแแแ;
- แกแแญแแ แ แแฅแแแแ แกแ แฃแแ แแแแแแแแแแ แฃแแแแแก แแแขแแแแแ, แ แแช แจแแแซแแแแ แแแแกแแแฃแแ แแแแ แแแ แซแแแแแแ แ แแงแแก แแแแแแแแฃแ แ แกแแกแขแแแแแแกแแแแก;
- แแ แฅแแขแแฅแขแฃแ แ แชแแขแ แฃแคแ แ แ แแฃแแ แฎแแแแ, แแแแแขแแแแแ แกแแญแแ แแแแแ แแแกแแฏแแแแก แแ แแแแ แ;
- แกแแญแแ แ แแฅแแแแ แแแแแขแแแแแ แแแแแขแแ แแแแแกแ แแ แแแแแแแกแขแ แแ แแแแก แแแกแขแ แฃแแแแขแแแ (แแฃแแชแ แแแแแแแ แแก แแแ แแแ: แแแแแ แแแแ แกแแกแขแแแแก แแแแกแแฎแฃแ แแแแก แฎแแ แแกแฎแ).
แแแแแแแแฃแ แ แกแแกแขแแแแแแกแแแแก โแกแแแกแแกโ แแแแแงแแแแแแก แแแแแ แแแแแ แแ แช แแกแ แแจแแแ แแ. แแแแ แแกแแ แแแกแแแแกแแแแก แแ แกแฎแแ SOA-แแแแกแแแแก, แกแแแแช, แกแแแแ แแฃแแแ, แฃแแแ แแ แแก แแ แแแแ แ แแ แกแ แฃแแ แแแแแแแแแแ แฃแแแแ แจแแแฌแแ แ แแ แแแฅแขแแก แแแกแแฌแงแแกแจแ, แแ แแแแฃแจแแก แแแแแงแแแแแแก แกแแ แแแแแแ แจแแแซแแแแ แแแแจแแแแแแแแแ แแญแแ แแแแแแก แแแแฃแกแแแก, แแแแกแแแฃแแ แแแแ แแแจแแ, แแฃ แแ แกแแแแแก แแแกแแฎแแ แฎแแแแแ API. แแแแแแก แแแแแแแก แแแแ.
แแแแแแก แแแแแแแก แแแแแแกแฃแแแชแแ แแแแ แแกแแ แแแกแแแจแ
แ แแแแกแแช แแแแแฌแงแแ แแแแ แแกแแ แแแกแแแแก แแฅแกแแแ แแแแแขแแแ, แแแฉแแแ แแแแแแ แฃแแ แแแแฎแแ: แกแแ แฃแแแ แแแแแแแแแกแแ แแแแแแแก แแแแแแก แแแแแแ แกแแ แแแกแแแ แแแแแ แแแแแจแ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แแแแแแแก แแแแแชแแแแ แแแแ แแแแแแก?
แ แแแแกแแช แแฃแงแฃแ แแแ แกแฎแแแแแกแฎแแ BPMS-แแก แแ แฅแแขแแฅแขแฃแ แแก, แจแแแซแแแแ แแแแแแ แฃแแ แฉแแแแแก แแแแแแก แแแแแแแก แแแแแฏแแแ แแแแ แแแแแแกแแแ: แจแแฅแแแแแ แแแแขแคแแ แแแก แคแแแ แแ แแแแแแแกแแแ แแแแแฃแแแแแแแแ แแแแ แแกแแ แแแกแแแ, แ แแแแแแแช แฅแแแแแ แแแ แแแแก แแ แแแแขแแแแแ แก แแแแแแแก แแแแแแก แแแแแแแก แแแแกแแฎแแ แชแแแแแแแแ แแ แแแแแแแแ แแแแแแแก แแแแแชแแแแ แแแแ แแแแแ, แ แแแแ แช แชแแแแ. แซแแแแแ แแแ แขแแแ แแ แแกแฃแแฃแฅแ แแแแ แแกแแ แแแกแแแแก แคแแแ. แแแแแแก แแ แแชแแกแแแ แแ แจแแแแฎแแแแแจแ แแ แแแกแขแ แแ แแแก แแแแ แแแแแแก แคแแแแก แกแแ แแแกแแแก.
แแ แแแแแแแแก แแฅแแก แซแแแแแ แแแแ แแแแฃแกแ: แแฅแแแ แจแแแแซแแแแ แแแแแ แแแ แแแแขแคแแ แแแก แคแฃแแฅแชแแแแแแแแ แ แแแแแแแช แแแแแแ แแ แแแแ แแฎแแแแ แแแแขแคแแ แแแก แแแแ แแกแแ แแแกแแแแก แจแแกแแแแแแกแ แคแแแ โแแแกแฃแฅแแแแโ. แแแแแกแแแแ แ แแแแแแแก แแแแแแก แแ แแชแแกแแแ แแแฃแงแแแแแแแแ แแฆแแแแ แจแแกแแซแแแแแแแแก แแแแแแงแแแแ แแแแขแคแแ แแแก แแฎแแแ แคแฃแแฅแชแแแแแ แแแ, แ แแแแ แช แแ แแก แแแแแฎแแแแแ.
แฃแคแ แ แแแขแแแฃแ แแ แแแแแแแ แแแแแแแแแแ แแ แแแแแแแแก แแแแจแแแแแแแแแ แแแแแแแแแแแแแ:
- แแแแขแคแแ แแแก แกแแ แแแกแ, แ แแแแแแช แแ แแแ แแฃแแแ แแฎแแ แชแแแแแแก แแ แแแแแ แแแแแแแก แแแแแแก แแแแแแแก, แแแ แ แแกแแแแก แจแแแชแแแก, แ แแแแ แช แแ แแ แแแ แชแฎแแก แฌแแ แขแแแ. แแแแแแก แแแแแแแก แฎแจแแ แ แชแแแแแแแแแ แแ แแแก แจแแชแแแแแแแก แ แแกแแก, แ แแช แแแแแแฌแแแแก แกแแกแขแแแแก แแแ แชแฎแก;
- แจแแกแ แฃแแแแแก แกแแแแแฎแแแ: แแแแแแก แแแแแแ แแฃแจแแแแก แแแก แแแแแชแแแแแแแ แแแฌแ แ แแ แแแแ แแแขแแ แคแแแกแแ:
- แแแแแชแแแแแ แแแแแ แแฅแแแแ แแแ แจแแแแ แแแฃแแ แแ แแแแแแขแแแแแ แฅแกแแแแก แแแกแขแแจแ;
- แแแแแแแก แกแแ แแแกแ แฎแจแแ แแ แแแแแ แฃแแแแก แแแข แแแแแชแแแก, แแแแ แ แแแแแแก แแแแแแแก แแแแแฎแแแก แแแแฃแจแแแแแแกแแแแก, แกแแ แแแกแแก แแแ แ API-แแก แแแแแแ แจแแแแแฎแแแก แแ แแกแแแแแ แแกแ แแแ แแแแขแ แแแแชแแแก แจแแกแแซแแแแแแแแแแก แแแแ;
- แแแแแแก แแแแแแแก แ แแแแแแแแ แแแแแฃแแแแแแแ แแแฌแแแก แจแแฃแซแแแ แแแแแแแ แแแแ แแแแแฎแแแแก แแ แแ แแ แแแแแ แแแแแชแแแแแ แแแแฃแจแแแแแแกแแแแก (แจแแแแซแแแแ แจแแแแกแฃแแฃแฅแแ แแก แแ แแแแแแ แกแแแแกแแก แแแแแแก แแแแแขแแแแ, แ แแแแแแช แฅแแจแแ แแแก แแแแแชแแแแแก, แแแแ แแ แแก แแแแแ แฃแคแ แ แแ แแฃแแแแก แแ แฅแแขแแฅแขแฃแ แแก แแ แฅแแแแก แแแแแชแแแแ แแแแแฎแแแแแกแ แแ แฅแแจแแก แแแฃแฅแแแแแก แแ แแแแแแแแก);
- แแแ แแแแแแก แกแแแแแฎแแแ:
- แแแแขแคแแ แแแก แกแแ แแแกแแก แแแแ แจแแแแฎแฃแแ แแฃแแแแแ แแแแแแแ แแแแแก แแฅแแแ แแแแแแก แแ แแชแแกแแแ แแ แจแแแกแแแแแแแ แแแแแแแก แแแแแชแแแแแก แแ แแ แแ แแแแแแแก แแแแแญแ แแก แแแ แขแแแ แแแแแ แแ แแ แกแแแแแก;
- แแแแแแแก แแแแแชแแแแแแก แกแแแแขแแก แแแแแขแแแ แขแ แแแแแฅแชแแแกแแแ: แแฃ แแแแแแแก แแแแแแก แแแแแแแก แชแแแแแแแแแ แกแญแแ แแแแ, แคแแฅแขแแแ แแแ แแแแแชแแแแแแก แกแแกแฌแแ แแก แแแ แแแแแ แจแแแแฌแแแแแก แจแแแแแ, แแฃแชแแแแแแแแ แแแแแแ แแชแฎแแก แแแแฃแจแแแแแฃแแ แแแแแชแแแแแแก แแแแแฃแ แแแขแฃแแ แชแแแแแแแแก แจแแกแแซแแแแแแแ. แแแแแชแแแแ แแแ แ แแแแแแแแแ แจแแแซแแแแ แฎแแแ แจแแฃแฌแงแแก แแ แแแแแแแก แแแแแแ แแแแก, แแแแ แแ แแกแแแ แแแแแฌแงแแแขแ แจแแแชแแแก แแแแแขแแแแ แ แแกแแแแก แแ แแแชแแ แแแก แกแแกแขแแแแก แแแแแแ แกแแแแแแแแแแก;
- แแแแแขแแแแแ แแแ แแฃแแแแแแ แแแแแฎแแแแแกแแก: แแแแแแ แ แจแแแแฎแแแแแจแ, แแฅแแแ แฃแแแ แแแแแแฎแแแ แแแแ แแแแแแก แกแแ แแแกแ แแ แแแแแแก แแแแแแ แกแแแฅแ แแแฃแแแ แแ แแแแชแ แ แแแแแแแแแแ แแแแ.
แกแแแแแแ แฏแแแจแ, แแ แแแแแฌแแ แกแแคแฃแซแแแแแแ แแแแ แฃแแแแ: แแแแแแแก แแแแแชแแแแแแก แแ แแแแแแแก แแแแแแก แแแแแแแก แแ แ แแแแ แแกแแ แแแกแจแ แฉแแกแแ. แแก แแแแแแแ แแแแ แขแแแแแก แแแแ แแกแแ แแแกแแก, แ แแแแ แช แกแแกแขแแแแก แแแแฃแงแแคแแ แแแแแแแแแขแแ แแฆแฅแแแก แแ แแ แฌแแ แแแจแแแก แแแแแ แฉแแแแแแแแ แแ แแแแแแแแก. แแก แแกแแแ แแ แแ แแก แฃแคแแกแ:
- API แกแขแแแแแ แขแแแแชแแ แกแแญแแ แแ แแแแแแก แแแแแแแกแแแ แฃแ แแแแ แแฅแแแแแแแกแแแแก (แแแ แซแแ, แแแแฎแแแ แแแแแก แแฅแขแแแแแแแแก, แ แแแแ แช แแแแแแก แแ แแชแแกแแแแก แแแฌแแแแก แฃแแ แฃแแแแแกแแงแแคแแ) แแ API แแแแขแคแแ แแแก แกแแ แแแกแแแแแ; แกแแญแแ แแ แฃแคแ แ แแแขแ แงแฃแ แแแฆแแแ API แชแแแแแแแแแแ, แฌแแ แแ แฃแแแ แแแแกแแแแแแแ;
- แกแแญแแ แแ แแแแแขแแแแแ แแแจแแแแแก แแแแแแแแแแแแแก แแแแแขแแแ, แ แแแ แฃแแ แฃแแแแแงแแก แแแแแแก แแแแแแแก แคแฃแแฅแชแแแแแ แแแ, แ แแแแ แช แแแแแแฃแแ แแกแแแ แแแแ แแกแแ แแแกแแก แแแฌแแแ, แแ แแก แฌแแ แแแจแแแก แแฎแแ แแแแฎแแแแแแก แแกแแแ แแแแแแแแแแแแแกแแแแก: แกแแแกแฃแแฃแฅแ แแ แแแแแแแแฃแ แ แแแ แแแแแแแแ แแแแแแแแแแฃแแแแแแ;
- แแแแแแก แแแแแแแก แแแแแแแแแ แแแก แกแญแแ แแแแแ แแแแแงแฃแ แ แแแแแแแ แแแแแแแแแแแก แแแ แกแแแแก: แแฃ แแแแ แแกแแ แแแกแ แแแแ แฎแแแก แแแแแแแแแแแจแ แแ แแ แแก แแแกแ แฃแแแแฃแแ, แแแจแแ แแก แกแแแแ แแฃแแแ แจแแแชแแแก แแแแแแแแแแแแแก แแแซแแแแแแฃแ แแแ แกแแแก. แแก แจแแแซแแแแ แแงแแก แแแฃแแแแแแแ แแแแ แแแแแแ แแฎแแแ แคแฃแแฅแชแแแก แแแกแแแแขแแแแแ แแ แจแแแซแแแแ แแแแแฎแแแแก แแกแแแ แกแแ แแแกแแก แซแแแแ แแแแแแก แแแแแแแก แแแแ แแชแแ แแแแแแแแแแแแแก แแฎแแ แแแ แกแแแแแ, แแฃ แแแฎแแ แจแแฃแแแแกแแแแแ แชแแแแแแแแแ แแแ แกแแแแก แจแแ แแก.
แแแแขแคแแ แแแก แกแแ แแแกแแแแก แคแแแ แแกแแแ แฌแแ แแแแแแแแแแ แแกแแ แแ แฅแแขแแฅแขแฃแ แแจแ, แแแแ แแ แแก แคแแแ แแฆแแ แฅแแแแก แแแแขแแแแแ แก แแแแแแแก แแแแแแก แแแแแแแก แจแแกแแกแ แฃแแแแแแ, แแ แแแแ แแฎแแแแ แแแก แแแ แแแแก, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แแแแฎแแแ แ "แแแแขแคแแ แแแก" แคแฃแแฅแชแแแแก. แแกแแแ แคแแแ แกแแญแแ แแ แแ แ แแฎแแแแ แแแแแแแก แแแแ แแกแแ แแแกแแแแก แกแแแกแฃแแฃแฅแแก แจแแกแแแแ แฉแฃแแแแแแ, แแ แแแแ แแแแแฏแแแแขแแก แชแแแขแ แแแแแแแแกแแแแก.
แแแแแแแแแ, แแแแฎแแแ แแแแแก แกแแฅแแแแแแแ แแแแแแก แแ แแชแแกแแแจแ แฌแแ แแแฅแแแแก แแแแชแแแแแก. แแฃแแชแ, แแแแชแแแแแแแ แแฃแจแแแแแกแแก แแแแฎแแแ แแแแแแ แฃแแแ แแแฎแแก แแแแแแแแ แงแแแแ แแแแแแแแแ แแแแแ แกแแแจแ, แ แแช แแแจแแแแก, แ แแ แฃแแแ แแ แกแแแแแแแก แจแแกแแแแแแกแ แแแแแแแแแก แ แแแแกแขแ แแชแแแก แแแแขแคแแ แแแก แกแแ แแแกแ, แแแกแฃแคแแแแแแฃแแ แแแแแแแก แแแแแแก แแแแแแแกแแแแ. แแ แแแแขแแฅแกแขแจแ แแแแแแก แแแแแแแก แแแแแคแกแฃแแแชแแแก แจแแแแ แฉแฃแแแแ แกแแแแแแ แแ แแแแแแฃแ แแ แแ แแก แแ แแก แแ แแ แฅแแขแแฅแขแฃแ แแก แแแแแ แแ แแ แแแแแ แแแแกแ.
แแแแแแก แแ แแชแแกแแแแก แแแขแแแ แแชแแ แแแแแแแชแแแก แจแแแฅแแแแแแก แแแแแแ
แ แแแแ แช แฃแแแ แแฆแแแแจแแแ, แแแแแแแชแแแก แจแแแฅแแแแแ แฃแแแ แแงแแก แแแแฆแแแฃแแ แ แแแแแแแแ แแแแแแแชแแแก แฃแ แแแแ แแฅแแแแแแแก แแแแฎแแ แชแแแแแแแก แขแแฅแแแแฃแ แ แแ แกแแแแแแแ แ แแแฎแแกแแแแแแแแแแกแแแ, แ แแแ แจแแซแแแก แแแแแแแแ แแแแก แแแ แแ แแ แแแฃแฅแขแแฃแแแแแก แแแแแ.
แจแแแแชแแแแ แแแแแแญแ แแ แกแแแแแแ แ แแฃแแ แแแขแแแ แแชแแแก แแ แแแแแแ, แ แแแแแแช แกแแแชแแแแฃแ แแ แกแขแแขแแแกแแแแก แแ แแก แแแแแแแแแแ. แแก แแฅแแแแ "แแแแแจแแก" แแแแแแแแ, แ แแแแแแช แแแแชแแแก แกแแ แแแแแแแชแแแก, แกแแแแช แแแแแแฃแแ แแแแแแแ แแแแกแแแฆแแ แแแก แแแแแแแก แแแ แแแแฃแ แกแแฎแแแก: "app1", "app2", "app3".
แแแแแแฃแแ แแแแแแแชแแแก แจแแแแแ แแฌแงแแแ แแแแแแก แแ แแชแแกแแแ, แ แแแแแแแช แแฌแงแแแแ โแแฃแ แแแก แแแแแจแกโ แแแขแแแ แแชแแแก แแแขแแแฃแกแแก แแแจแแแแแแ. แจแแขแงแแแแแแแแแ แกแแฎแแแฌแแแแแแ "Ball" แแฅแแแแ แแฃแ แแแก แ แแแ.
แแแแแจแแก แฌแแกแแแ:
- แแแ แแแแ แแแแแแแจแ แแ แแก แแแแชแแแขแแ แ. แแก แแฌแแแแก แแแแแจแจแ แกแฎแแ แแแแแแแจแแแแก, แแฌแงแแแก แแแแแจแก แแ แจแแฃแซแแแ แแแแแกแแแแ แแ แแก แแแแกแ แฃแแแก แแแ;
- แกแฎแแ แแแแแแแจแแแแ แแชแฎแแแแแแ แแแแแฌแแแแแแแก แแแแแจแจแ, โแแแแชแแแโ แแ แแแแแแแก แแ แแแ แแแ แแแแแแแจแแก;
- แแฃแ แแแก แแแฆแแแแก แจแแแแแ แแแแแแแจแ แแ แฉแแแก แกแฎแแ แแแแแฌแแแ แแแแแแแจแแก แแ แแแแแกแชแแแก แแแก แแฃแ แแก. แแแกแแแแก แกแแแ แแ แ แแแแแแแแ แแแแแแแแแ;
- แแแแแแฃแ แแแแแแแจแแก แแฅแแก "แแแแ แแแ", แ แแแแแแช แแชแแ แแแแ แแ แแแแแแแจแแก แแแแ แแฃแ แแแก แงแแแแแ แแแแแชแแแแกแแก. แ แแแแกแแช แแแแ แแแ แแแแแฌแฃแ แแแ, แแแแแแแจแ แแแแแ แแชแฎแฃแแแ แแแแแจแแแแ แแ แแชแฎแแแแแก แแแแกแแแแ แแแกแแแแก แจแแกแแฎแแ;
- แแฃ แแแแแแแจแ แแแ แขแ แ แฉแแแ, แแแจแแแแ แแชแฎแแแแแก แฌแแกแแแแก;
- แ แแแแกแแช แงแแแแ แแแแแแแจแ แแแแแแแก, แแแ แแแแ แแแแแแแจแ แแชแฎแแแแแก แแแแแจแแก แแแกแ แฃแแแแแก. แแฃ แแแ แแแแแจแ แแแ แ แแแขแแแ, แแแจแแ แ แฉแแแ แแแแแจแแก แแแกแ แฃแแแแ.
แแ แแ แแแแแแแก แแแแแกแแญแ แแแแ แแ แแแแแแแงแแแแ แฉแแแแก DSL-แก แแแแแแก แแ แแชแแกแแแแกแแแแก, แ แแช แกแแจแฃแแแแแแก แแแซแแแแ แแฆแฌแแ แแ แแแขแแแแจแ แแ แกแแแฃแแ แแแแแแ แแแแแแฅแขแฃแ แแ, แแแแแแฃแ แฅแแแแแก แคแแ แคแแขแแ.
app1 แแแแแแแชแแแจแ แแแฃแจแแแแแก แแแ แแแแ แแแแแแแจแแก แแแแแแก แแ แแชแแกแ (แแก แแ แแก แแกแแแ แแแแแจแแก แแแแชแแแขแแ แ):
แแแแกแ 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}")
}
แแแแแแก แแแแแแแก แจแแกแ แฃแแแแแก แแแ แแ, แแแแแฎแกแแแแแฃแ แแแแก แจแแฃแซแแแ แจแแฅแแแแก แแแแแแก แแ แแชแแกแแก แแแแแฅแขแแก แแแแแแ, แ แแแแแแช แจแแแซแแแแ แแแแฃแแแแแแชแแ แแงแแก แแแแแ แแแแก แกแแฎแแ. แฉแแแ แฏแแ แแ แแแแแแงแแแแแแ แแแแฃแแแแแแขแแ แ, แแแแขแแ แแแ แแแแฃแแ แแ แ แแแแแแฌแแ แฎแแขแแแแ (แแฅ แแ แแแแแ แแแแแแแ แขแแแ BPMN แแฆแแแจแแแ แแแ แแแญแแก แแแแแงแแแแแแกแแแ แแแแแแจแแ แแแแ, แ แแแ แแแฃแแฏแแแแกแแแฃแแแงแ แแแแแ แแแแก แแแแแแแแแแ แฃแแแแ แแแแแแฆแแแจแแฃแแ แแแแแ):
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}")
}
แแแแแ แแแ:
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}")
}
แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ, แแแแแแแจแแก แฅแชแแแ แแ แแแแกแฎแแแแแแแ แฌแแแแกแแแ, แแแแขแแ แแแแแ แแแ แแ แแชแแแแแ.
แแฎแแ แฉแแแ แแแญแแ แแแแ แขแแกแขแ แแ แงแแแแแคแ แแก แแแกแแจแแแแแ. แแ แแแแชแแ แแฎแแแแ แแแแแ แขแแกแขแแก แแแแก, แแกแ, แ แแ แกแขแแขแแ แแ แแแแแคแฃแญแแ แฅแแแแแก แคแแ แคแแขแแ (แคแแฅแขแแแ แแแแ, แแ แแแแแแแงแแแ แแแ แ แจแแฅแแแแแ แกแแขแแกแขแ แแแ แแแ แกแฎแแ แแแแแแก แแ แแชแแกแแแแก แแแขแแแ แแชแแแก แจแแกแแแแฌแแแแแแ):
testGame ()
@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;
}
แฉแแแขแแ แแ แขแแกแขแ, แจแแฎแแแแ แแฃแ แแแแก:
แแแแกแแแแก แแแแแแแแแแ
ะะทััะฐ ะฑะปะพะบะธัะพะฒะบะฐ ะบะปััะฐ 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!
แแ แงแแแแแคแ แแกแแแ แ แแแแแแแแ แแแแจแแแแแแแแแ แแแกแแแแแก แแแแแขแแแ แจแแแซแแแแ:
- แกแแญแแ แ แแแกแขแ แฃแแแแขแแแแก แแ แกแแแแแแก แจแแแแฎแแแแแจแ, แแแแแแแชแแแก แแแแแแแแแ แแแก แจแแฃแซแแแแ แจแแฅแแแแ แแแขแแแ แแชแแฃแแ แฃแ แแแแ แแฅแแแแแแ แแแแแแแชแแแแก แจแแ แแก แแแแแแก แแแแแแแกแแแ แแแแแก แแแฆแฌแแแแก แแแ แแจแ;
- แแแขแแแ แแชแแแก แแแแชแแแแก แกแแ แแฃแแ (แกแแ แแฃแแ), แ แแแแแแช แแแแแฎแแแก แกแแแแแแแ แ แแแแแแขแแแชแแแแก, แจแแแซแแแแ แแแแแแฃแแ แแงแแก แฉแแ แฉแแก แจแแแแแ, แแฃ แแแ แแแแแแแแ แแแแแ แฉแแแแงแแแแแแแฃแแแ แฉแแ แฉแแก แแ แฅแแขแแฅแขแฃแ แแจแ. แแแแชแแแแก แกแแ แแฃแแแก (แกแแ แแฃแแแก) แแแแแแแ แจแแฃแซแแแแแแแ, แแแแขแแ แแแแจแ แ แแฃแแ แแแแชแแแแก แแแแแฌแงแแแขแ แจแแกแแแแแแกแแ แแแแแแงแฃแ แแแ;
- แแแขแแแ แแชแแฃแแ แแแแแแแก แจแแแฃแจแแแแแแกแแก แแฃแชแแแแแแแแ แแแแแแแแแแกแฌแแแแ แกแแแแแแ แฏแแแจแ แแแขแแแ แแชแแแก แงแแแแ แแแแแฌแแแแก แแแแแแแ แแแแแก แชแแแแแแแแก แแแแแแแแแแ แฃแแแแ แแ แฎแแแแแแแแแแก แแแแแแแแแ. แแก แแแแแซแฃแแแแก แแแแแ แแฃแแแ แแแแแแ, แ แแแ แแก แฃแแ แซแแแแ แแแแฎแแแแ แแแ แ แแแแแแแแแแก แแแแแแแแ แแแแแก แแแแแ แ. แฉแแแแก แแแแแแแแจแ แแแแแแแจแ แแซแฃแแแแฃแแแ แแแแแฌแแแแแแ แแแแฆแแก แแแแแจแจแ แแแก แจแแแแแ, แ แแช แแแแแแชแฎแแแแแก แแแแแจแแแแ แแแกแแแแก: แกแฎแแ แแแแแแแจแแแแ แแแแแ แซแแแแแแ แแฃแ แแแก แแแแแชแแแแก แแแก แแแแแ, แกแแแแ แแแกแ แแแกแแแแก แจแแกแแฎแแ แแแคแแ แแแชแแ แแ แแแแฆแฌแแแก แแ แแ แแแแแฃแจแแแแแก แงแแแแ แแแแแฌแแแแก. แแก แแแแแแ แแ แแแแแแแแแแ แแแแก แแแแแจแแก แฌแแกแแแแแแ แแ แแ แแก แแแแแ แแแแกแฃแแ แแแแแฌแงแแแขแ แแ แฉแแฃแแ แแ แฅแแขแแฅแขแฃแ แแก แคแแ แแแแแจแ.
แจแแแแแแ, แแแแแ แแแกแแฃแแ แแ แฉแแแแ แแแแแฌแงแแแขแแก แกแฎแแแแแกแฎแแ แแแฎแแแฌแแแแแแแ, แแแแแ แแแแกแแแแ แแ แกแฎแแ แกแแแแแฎแแแแ.
แงแแแแ แจแแขแงแแแแแแแ แแ แ แ แแแจแ
แงแแแแ แแแขแแแ แแ แแแฃแแ แแแแแแแชแแ แแฃแจแแแแก แแ แแ แแแขแแแ แแชแแแก แแแขแแแฃแกแแ, แ แแแแแแช แฌแแ แแแแแแแแแแ แ แแแแ แช แแแ แ แแ แแแแ แ, แแ แแ BPMQueue แจแแขแงแแแแแแแแแแกแแแแก แแ แแ แแ BPMTopic แแแแ แกแแแแแแแแแกแแแแก (แแแแแแแแแ). แงแแแแ แจแแขแงแแแแแแแแก แแ แแ แ แแแแก แแแจแแแแแแ แแแแแชแแแ แแแแแกแแแแแ แแแแแ แแแแกแแ. แแแแแแก แแแแแแแก แแแแแแ, แแฎแแ แจแแแแซแแแแ แจแแแแแขแแแแ แแแแแแ แแฎแแแ แขแแแแก แจแแขแงแแแแแแแ, แ แแแแแแแช แแกแฃแ แ, แกแแกแขแแแแก แกแขแ แฃแฅแขแฃแ แแจแ แชแแแแแแแแแแก แจแแขแแแแก แแแ แแจแ. แแก แแ แแก แแแแจแแแแแแแแแ แแแแแ แขแแแแแ, แแแแ แแ แจแแแชแแแก แแแ แแแแฃแ แ แแกแแแแก, แ แแแแแแแช, แฉแแแแ แขแแแแฃแ แ แแแแชแแแแแแก แแแแขแแฅแกแขแจแ, แฉแแแแแแแก แแ แช แแกแ แแแแจแแแแแแแแแ แฉแแแแ.
แแฃแแชแ, แแฅ แแ แแก แแ แแ แแแฎแแแฌแแแแแ: แแแแแแฃแแ แแแแแแแชแแ แคแแแขแ แแแก "แแแแแก" แจแแขแงแแแแแแแแแก แจแแกแแกแแแแแจแ แแ แกแแแฃแแ แ แแแแแแ, แแแแแกแ แแแแแแแก แกแแฎแแแแ. แแกแแแ, แแแแแแแก แแแแฃแกแขแแแ แจแแกแแซแแแแแแแ แกแแแแแแแแจแ, แแฃ แกแแญแแ แแ แกแแแแแแแก โแคแแ แแแแแแกโ แจแแแฆแฃแแแ แแ แแ แแแแแแแชแแแ. แแแแ แฃแแแ แแแแแ แแแก แแแขแแแฃแกแแก แแแแขแแ แฃแแแ แแแแแแ, แแแแ แแ แแแแแแก แแแแแแ แแฎแแ แฃแแแ แแแฅแแแแแแแแก แแแแแแฃแ แ แกแแฎแแแแแแ: แกแแแแแแแแฃแแ แจแแขแงแแแแแแแแแแก แแแแแ แแแแกแแแแก, แกแแกแฃแ แแแแแ แกแแแแแแแแแกแแแแก.
แแแขแแแ แแชแแแก แแแขแแแฃแกแแก แกแแแแแแแแแแก แฃแแ แฃแแแแแงแแคแ
แกแแแแแแแแแ แจแแแแแแ แ แแแแแแแแ แ แแแแกแแแ:
- แจแแขแงแแแแแแแแแแก แแ แฉแแฃแแ แแ แแแแ แ แแ แแก แแ แฅแแขแแฅแขแฃแ แแก แแ แแขแแแฃแแ แแแแแแแแแขแ แแ แฌแแ แฃแแแขแแแแแแแก แแ แแ แฌแแ แขแแแ: แแก แกแแแแแ แแกแแ แขแแแแ แแแขแฃแแ แฃแแแ แแงแแก แจแแชแแแแแแแก แแแแแ แ. แแฅแแแ แฃแแแ แแแแแแงแแแแ แแฎแแแแ แแ แแจแ แแแแแชแแแแ แแแแฎแแ แชแแแแแแแแ แแแ แแ แแฎแแ แแแญแแ แแแ แแ แแแแ แแแแแ;
- แแฃแชแแแแแแแแ แจแแขแงแแแแแแแแแแก แแ แแแแ แแก แแแฆแแแ แฎแแแแแกแแฌแแแแแแแแก แฃแแ แฃแแแแแงแแคแ, แ แแกแแแแกแแช แแแ แคแแแแแฃแ แแ แฃแแแ แแงแแก แแแแแฏแแฃแแ แแแขแแแ แแ แแแฃแแ แแแแแแแชแแแแแกแแแ (แแแแแงแแแแแแแ แแแแแแก แแแแแแแก แแฅแแแ แแแแแแแชแแแแแก แแแฆแแแ แฎแแแแแกแแฌแแแแแแแ แแแชแแแแแแ แ แแฃแแ แแ แซแแแ แแ);
- แแ แแแแ แ แแแแแแแฃแแแ แฃแแ แฃแแแแแงแแก แแแฌแแแแแแก แแแ แแแขแแ โแแ แแฎแแ แแแแแชโ. แแก แแ แแก แกแแแแแแแแฃแแ แแแแฎแแแแ แแแขแแแ แแชแแแก แแแขแแแฃแกแแก แกแแแแแแ แแฃแจแแแแแกแแแแก. แแ แแ แแก แกแแญแแ แ "แแฃแกแขแแ แแ แแฎแแ" แแแแแก แแแ แแแขแแแแ: แแแแแแก แแ แแชแแกแแแ, แ แแแแ แช แฌแแกแ, แแ แแ แแก แแแ แซแแแแแแ แ แจแแขแงแแแแแแแแแแก แแ แแแแแแแแแแก แแแแแแแ แแแแ แแแกแแแแก แแแแแ แ, แฎแแแ แกแแแชแแแแฃแ แแแแแแแแแแก, แกแแแแช แแก แแแแจแแแแแแแแแแ, แฃแคแ แ แแแแแแแ แแแแแขแแแแแ แจแแแแฌแแแแแแแก แแแแแขแแแ แแแแแแก แแแแแแแจแ, แแแแ แ แแฃแแแแแแ แแแแแงแแแแแ. แกแแแแแแ "แซแแแ แ"" แแแ แแแขแแแแ;
- แจแแขแงแแแแแแแแแแก แแ แกแแแแแแแแแก แแแแแแแแ แฃแแแ แแงแแก แฉแแ แแฃแแ แกแแแ แแ แขแ แแแแแฅแชแแแจแ แแแแแแก แแ แแชแแกแแแแก แแแแแแแ แแแแแกแ แแ แแแแแแแก แแแแแชแแแแแแก แชแแแแแแแแ. แกแแกแฃแ แแแแ แแแ แแแแขแ แแฅแแแแ แแแแฃแจแแก แแแแแงแแแแแ
แขแ แแแแแฅแชแแแก แแแกแแกแแแแแ , แแแแ แแ แกแแญแแ แแแแก แแแแแขแแแแ แชแฎแ แแแก แแแแแชแแแแ แแแแแจแ แแ แ แแแแก. JEE แแแแแแแชแแแแจแ, แแก แจแแแซแแแแ แแแแแ แขแแแแแก แแแแแแแแ แแแ JTA แแแแแฏแแ แแก แแแแแงแแแแแแ, แแแแ แแ แแ แฉแแฃแ แแ แแแแ แแแ แแแแจแแ แ แฃแแแ แจแแแซแแแก แ แแแแแจแ แแแฃแจแแแก.XA ; - แจแแแแแแแแแ แจแแขแงแแแแแแแแแแก แแ แแแแแแแแแแก แแแแแฃแจแแแแแแแแแ แแกแแแ แฃแแแ แแแฃแจแแแ แแแแแแก แแ แแชแแกแแก แแแแแแแ แแแแแก แจแแชแแแแก แขแ แแแแแฅแชแแแกแแแ: แแฃ แแกแแแ แขแ แแแแแฅแชแแ แฃแแแ แแแแ แฃแแแ, แแแจแแ แจแแขแงแแแแแแแแก แแแฆแแแแช แฃแแแ แแแฃแฅแแแแก;
- แจแแขแงแแแแแแแแแ, แ แแแแแแแช แแแ แแแฎแแ แฎแแ แจแแชแแแแแแแก แแแแ, แฃแแแ แแแแฎแแแแแแก แชแแแแ แแแฆแแแแแจแ
DLQ (แแแแแแ แ แแกแแแแแก แ แแแ). แแแแกแแแแแก แฉแแแ แจแแแฅแแแแแ แชแแแแ แแแแขแคแแ แแแก แแแแ แแกแแ แแแกแ, แ แแแแแแช แแแแฎแแแก แแกแแ แจแแขแงแแแแแแแแแก แแแแแก แกแแชแแแจแ, แแฎแแแแก แแแ แแแแแฅแกแแ แแแแก แแขแ แแแฃแขแแแแก แแแฎแแแแแ (แกแฌแ แแคแ แแแฏแแฃแคแแแแกแ แแ แซแแแแแกแแแแก) แแ แแแแแแก API-แก แกแแแแฎแแแแ, แแแแแจแแฃแแแแแก แแแกแแแแ แแแ แฎแแแแฎแแ แแแแแแแแแกแแแแก แแ แจแแขแงแแแแแแแแแแก แฌแแกแแจแแแแแ. แกแแกแขแแแแก แแแแแแแกแขแ แแขแแ แแแก แจแแฃแซแแแแ แแ แกแแ แแแกแแแ แแฃแจแแแแ แแแแแแแแ แแแ แแแขแแ แคแแแกแแก แกแแจแฃแแแแแแ; - แแ แแแแ แแก แแแ แแแแขแ แแแจแ, แแฅแแแ แฃแแแ แแแแ แแแฃแแแ แแ แแแฌแแแแแแก แแแแแแแ แแแแแ แชแแแแ แแ แจแแคแแ แฎแแแแแ แแแฌแแแแแแแก แจแแ แแก, แ แแแ แจแแแแชแแ แแ แจแแขแงแแแแแแแแแแก DLQ-แจแ แแแฎแแแแ แแก แแแแแแแแ (แแแขแแแแแฃแ แ แแแ แแแแขแ แแแแก แแแแแแแแ แแแแฅแแแก แจแแฃแซแแแแแแแ, แแแแ แแ แจแแแแซแแแแ แแแแแ แแฃแแแ แแแแฅแแแแแ แแ แแแแ แแแฃแแแ แแ แแกแแแ แแ แแก แแแแ แแชแแ);
- DLQ แแแฆแแแแแก แแฃแแแแแ แแแแแขแแ แแแแ แฃแแแ แแแฎแแแก แแ แแแแแขแแ แแแแแก แกแแกแขแแแแ แฃแแแ แแชแแแแแก แกแแกแขแแแแก แแแแแแแกแขแ แแขแแ แแแก, แ แแแ แแแ แจแแซแแแ แฃแแแแแแก แแ แแจแ แ แแแแแ แแแ, แ แแแแกแแช แแแฎแแแแ แแแฃแฌแแแแแแแ แจแแขแงแแแแแแแแแ. แแก แจแแแแชแแ แแแก แฌแแ แฃแแแขแแแแแแแก แแ แแแแแแก แแแแแแแก แจแแชแแแแแก โแแแแแแแแแแก แแแแแกโ;
- แแแขแแแ แแชแแแก แแแขแแแฃแกแ แแ แฃแแแ แแงแแก แแแ แซแแแแแแ แ แแแแแแแชแแแแแก แแ แแแแแแ แแ แแ แกแแแแแแก แแแแแ แ: แแแแแก แแแแแฌแแ แ แฃแแแ แแงแแก แแแแซแแ, แฎแแแ แแแแแแแชแแแก แแแแแแแก แกแแฎแแแ แฃแแแ แแงแแก แฃแแแแแแฃแ แ, แ แแแ แกแฎแแแ แแ แจแแแชแแแแก แแแกแ แแแกแแฏแแก แแแแฃแจแแแแแ แ แแแแแแ แแแแแชแฎแแแแก แแ แงแแคแแแก แแ แแก.
แแแแแแก แแแแแแแก แซแแคแแแแก แฃแกแแคแ แแฎแแแแแก แฃแแ แฃแแแแแงแแคแ
แแแแแแก แแ แแชแแกแแก แแ แแกแ แแ แแแแแ แจแแแแฎแแแแแก แจแแฃแซแแแ แแ แแแ แแฃแแแ แแแแฆแแก แ แแแแแแแแ แจแแขแงแแแแแแแ แแ แแแแแแแ, แ แแแแแแ แแแแฃแจแแแแแ แแแ แแแแแฃแ แแ แแแแฌแงแแแ. แแแแแแ แแฃแแแ, แแแแแแแชแแแก แจแแแฅแแแแแแกแแแแก แงแแแแแคแแ แ แแแ แขแแแ แแ แฃแกแแคแ แแฎแ แฃแแแ แแงแแก.
แแ แแชแแกแแก แแแแแแก แแแแแแ แแแฃแจแแแแแก แแแแแแฃแ แแแ แ แแแแแแแแก, แ แแแแแแช แแแแแแแแก แแฎแแแแก แแ แแแแแแก แแ แแชแแกแแ แแแแแแแแฃแแแฃแ แแ. แแก แแแแแแแแแ แจแแแซแแแแ แแงแแก:
- แแแแแแก แแ แแชแแกแแก แแแกแขแแแชแแแก แแแจแแแแ;
- แแแแฎแแแ แแแแแก แฅแแแแแแ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแแแแแก แแ แแชแแกแจแ แแฅแขแแแแแแกแแแ;
- แจแแขแงแแแแแแแแก แแ แกแแแแแแแก แแแฆแแแ, แ แแแแแแแช แแแแแฌแแ แแแแ แแแแแแก แแ แแชแแกแแก แแแกแขแแแชแแ;
- แแแแแแก แแ แแชแแกแแก แแแกแขแแแชแแแก แแแแ แแแแแแแแแ แขแแแแแ แแก แแแแแก แแแกแแแ;
- แกแแแแแขแ แแแ แแแฅแแแแแแ API-แแก แกแแจแฃแแแแแแ (แแแ. แแ แแชแแกแแก แจแแฌแงแแแขแ).
แแแแแแฃแ แแกแแ แแแแแแแแก แจแแฃแซแแแ แจแแชแแแแแก แแแแแแก แแ แแชแแกแแก แแแแแแแแ: แแแแแแ แแ แแฅแขแแแแแ แจแแแซแแแแ แแแกแ แฃแแแแก แแ แกแฎแแแแ แแแแฌแงแแก, แแฃแแแแแ แแแแกแแแแแแก แแแแจแแแแแแแแแ แจแแแซแแแแ แจแแแชแแแแแก. แแแแแกแแแแ แ แแฅแขแแแแแแก แแแฎแฃแ แแแ แจแแแซแแแแ แแแแแแฌแแแแก แจแแแแแแ แแฅแขแแแแแแแแแแ แแ แแ แแ แแแขแแก แแแแฅแขแแฃแ แแแ. แแแ, แแแแแก แแฎแ แแ, แจแแฃแซแแแแ แจแแฌแงแแแขแแ แกแฎแแ แแแแแแแแแแก แแแแแแแแ, แแ, แแฃ แแแ แแ แกแญแแ แแแแแ แ แแแแ แแแแแขแแแแแ แแแแแชแแแแแ, แจแแฃแซแแแแ แแแแกแ แฃแแแ แแแแแ แขแ แแแแแฅแชแแ. แขแ แแแแแฅแชแแแก แแแฎแฃแ แแแแแ แแแแแแก แแ แแชแแกแแก แแฎแแแ แแแแแแแ แแแแ แแแแฎแแแ แแแแแชแแแแ แแแแแจแ, แกแแแแช แแก แแแแแแแแแ แจแแแแแ แแแ แ แแแแแแแแก.
แฃแ แแแแ แแแแแแแก แแแแแชแแแแ แแแแแจแ แจแแแแฎแฃแแ แแฃแแแแแ แแแแแแก แแ แแชแแกแแก แแแแแชแแแแแ แแ แแก แซแแแแแ แแแกแแฎแแ แฎแแแแแ แแแแฃแจแแแแแแก แกแแแฅแ แแแแแแชแแแก แฌแแ แขแแแ SELECT FOR UPDATE-แแก แแแแแงแแแแแแกแแก. แแฃ แแ แแแ แขแ แแแแแฅแชแแแ แแแแฎแแ แฎแ แแแแแชแแแแ แแแแแแแ แแแแแแก แแ แแชแแกแแก แแแแแแแ แแแแแก แแแฆแแแ แแแก แจแแกแแชแแแแแแ, แแแจแแ แแแ แแแแแฃแ แแ แแแ แชแแ แแ แกแฎแแ แขแ แแแแแฅแชแแ แแแ แจแแซแแแแก แแแแแ แแแแแแแ แแแแแก แแแฆแแแแก แกแฎแแ แชแแแแแแแแกแแแแก, แฎแแแ แแแ แแแแ แขแ แแแแแฅแชแแแก แแแกแ แฃแแแแแก แจแแแแแ, แแแแ แ แแ แแก แแแ แแแขแแ แแแฃแแแ แฃแแแ แจแแชแแแแแ แแแแแแแ แแแแแก แแแฆแแแ.
DBMS แแฎแแ แแก แแแกแแแแกแขแฃแ แ แกแแแแขแแแแก แแแแแงแแแแแแ, แฉแแแ แแแกแ แฃแแแแ แงแแแแ แกแแญแแ แ แแแแฎแแแแแก
แแฃแแชแ, แแแกแแแแกแขแฃแ แ แกแแแแขแแแ แแแแแฃแฅแ แแแ แฉแแฎแแแแ, แ แแช แแแแก แแแจแแแแก, แ แแ SELECT FOR UPDATE แแแแแช แฃแแแ แจแแแแแคแแ แแแแก แแแ แแแแฃแแ แแแแแแ แฃแแ แแ แแแ, แแแแแแก แแแแแแแก แแแแแแ แ แแฃแ แแชแฎแแ แจแแแแฎแแแแแแแ แฉแแฎแแแแก แจแแแแฎแแแแแจแ.
แแแแแ แแ แแ แแ แแแแแแ แแ แแก แแแแแแก แแ แแชแแกแแก แแแฌแงแแแแก แกแแแฅแ แแแแแแชแแ. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแ แแ แกแแแแแก แแแแแแก แแ แแชแแกแแก แแแแแแแแ, แแแแแชแแแแ แแแแแจแ แแ แช แแแแแแแ แแแแแ, แแกแ แ แแ แแฆแฌแแ แแแ แแแแแแ แแ แแแฃแจแแแแแก. แแฃ แแกแฃแ แ แฃแแ แฃแแแแแงแแ แแแแแแก แแ แแชแแกแแก แแแกแขแแแชแแแก แฃแแแแแแฃแ แแแ แแแแแ แแขแฃแ แแแกแจแขแแแจแ, แแแจแแ แแญแแ แแแแแ แ แแแแ แกแแฎแแก แกแแแฅแ แแแแแแชแแแก แแแแแฅแขแ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแ แแชแแกแแก แแแแกแแแ แแ แจแแกแแแแแแก แกแคแแ แแกแแแ. แแ แแ แแแแแแแก แแแแแกแแญแ แแแแ, แฉแแแ แแแงแแแแแ แกแฎแแ แแแแแแแแแก แแแฅแแแแแแก, แ แแแแแแช แกแแจแฃแแแแแแก แแแแซแแแแก แแแ แ แกแแ แแแกแแก แแแจแแแแแแ แแแแฆแแ แแแกแแฆแแแแ แแแแแแแแฃแ แแแแแแแแฃแ แ แแกแฃแ แกแแ URI แคแแ แแแขแจแ.
แฉแแแแก แแแแแแแแแแจแ, InitialPlayer แแแแแแก แแ แแชแแกแ แจแแแชแแแก แแแแแแ แแชแแแก
uniqueConstraint = UniqueConstraints.singleton
แแแจแแกแแแแแ, แแฃแ แแแแ แจแแแชแแแก แจแแขแงแแแแแแแแแก แจแแกแแแแแแกแ แแแกแแฆแแแแก แกแแแแขแแก แแฆแแแแกแ แแ แแแจแแแแแก แจแแกแแฎแแ. แกแฎแแ แแแแแแก แแ แแชแแกแแแแกแแแแก แแกแแแ แจแแขแงแแแแแแแแแ แแ แแ แกแแแแแก: uniqueConstraint แแ แแ แแก แแแงแแแแแฃแแ.
แแแแแแก แแ แแชแแกแแก แแ แแแแแแแแ แแฃแแแแแ แแแแแแแ แแแแแ
แฎแแแแแฎแแ แแแแ แแแ แแแแแแแ แแแแ แแ แ แแฎแแแแ แแฎแแแ แแแ, แแ แแแแ แแแแแแแแแ แแคแแ แฎแแแก แแแแแแแแ แแแแก.
แแ แแแแแแแแ แแฌแงแแแ แแแจแแ, แ แแแแกแแช แแฅแแแ แแญแแ แแแแแ แชแแแแแแแแแแก แจแแขแแแ แแแแแแก แแแแแแแจแ แแ/แแ แแแแแแก แแ แแชแแกแแก แแแแแแจแ. แแ แชแแ แแ แแกแแแ แชแแแแแแแ แแ แแ แแก แแแแกแแแแแ แแแแแแก แแ แแชแแกแแแแก แซแแแ แแแแแแแ แแแแแกแแแ. แแฃ แแแแแชแแแแ แแแแแจแ แแแแ แ โแชแแชแฎแแแโ แจแแแแฎแแแแแ, แแแจแแ แจแแฃแแแแกแแแแแ แชแแแแแแแแแแก แจแแขแแแแ แจแแแซแแแแ แแแแแแฌแแแแก แแแแ แ แฃแแแแฃแ แแแ, แ แแกแแช แฎแจแแ แแ แแแฌแงแแแแแ jBPM-แแก แแแแแงแแแแแแกแแก.
แชแแแแแแแแก แกแแฆแ แแแแแ แแแแแแแแแแ แ, แจแแแแซแแแแ แแแแฅแแแแแ แแ แ แแแแ:
- แจแแฅแแแแแ แแฎแแแ แแแแแแก แแ แแชแแกแแก แขแแแ, แ แแแ แแ แจแแแขแแแแ แจแแฃแแแแกแแแแแ แชแแแแแแแแแ แซแแแแจแ แแ แแแแแแงแแแแ แแแ แซแแแแแก แแแชแแแแ แแฎแแแ แแแกแขแแแชแแแแแก แแแฌแงแแแแกแแก. แซแแแแ แแแกแขแแแชแแแแ โแซแแแแ แฌแแกแแโ แแแแแ แซแแแแแแ แแฃแจแแแแแก;
- แแแแแแก แแ แแชแแกแแแแก แแฃแแแแแ แแแแแแแ แแแแแก แแแแ แแชแแ แแแแแแก แแแแแแแก แแแแแฎแแแแแกแแก.
แแแ แแแแ แแแ แฃแคแ แ แแแ แขแแแแ, แแแแ แแ แแฅแแก แแแแแกแ แจแแแฆแฃแแแแแ แแ แแแแแแแแแแแแแ, แแแแแแแแแ:
- แแแแแแก แแแแแแแก แแฃแแแแ แแแ แแแแ แแแแแแก แแ แแชแแกแแก แแแแแแจแ, แแแแแแก แแแแแแแก แแแชแฃแแแแแก แแ แแ;
- แฎแจแแ แแ แกแแญแแ แแ แแงแแกแแแ แ แแแแแกแแแ แแฎแแ แแแแแแก แแแแแแแแ (แแแแฅแแแก แงแแแแแแแแก แแแขแแแ แแชแแแก แแแแชแแแแแแก แแแแแกแแแ แแกแแ);
- แแแแแแแแแ แแ แแ แแชแแก, แ แ แแขแแแแแ แจแแกแแซแแแแแแ แแแซแแแแแแฃแแ แแแแแแแแแก แฌแแจแแ.
แแ แแฅแขแแแแจแ, แฉแแแ แแแงแแแแแ แแ แแแ แแแแแแแแก, แแแแ แแ แแแแแฆแแ แ แแแแแแแแ แแแแแฌแงแแแขแแแแแ แฉแแแแ แชแฎแแแ แแแแก แแแกแแแแ แขแแแแแแแ:
- แแแแแชแแแแ แแแแแจแ, แแแแแแก แแ แแชแแกแแก แแฃแแแแแ แแแแแแแ แแแแ แแแแฎแแแ แแแแแแแ แแแแแฎแแแแแ แแ แแแแแแแ แแแแฃแจแแแแแฃแแ แคแแ แแแ: JSON แคแแ แแแขแแก แกแขแ แแฅแแแจแ. แแก แกแแจแฃแแแแแแก แแแซแแแแ แแแแแฎแแ แชแแแแแ แแแแ แแชแแ แ แแแแ แช แแแแแแแชแแแก แจแแแแแ, แแกแแแ แแแก แแแ แแ. แแฅแกแขแ แแแแแฃแ แจแแแแฎแแแแแแจแ, แแฅแแแ แแกแแแ แจแแแแซแแแแ แจแแชแแแแแ แแแ แกแแฎแแแฃแ แแแแ (แแแแกแแแฃแแ แแแแ แกแแกแแ แแแแแแ แแแแแแแแ แแแแก แแ แแก แแแแแ แแแแกแแก);
- แแแขแแแ แแชแแแก แแแแแแก แแแแแแ แแ แแงแแแแแก แแแแแแก แแ แแชแแกแแแแก แกแแฎแแแแแก, แแกแ แ แแ แแแแแกแแแแ แแ แแก แจแแกแแซแแแแแแแ แแ แ-แแ แแ แแแแแฌแแแ แแ แแชแแกแแก แแแแฎแแ แชแแแแแแแก แจแแชแแแ แแฎแแแ, แแฎแแแ แกแแฎแแแแ (แแแแแแแแแ, "InitialPlayerV2"). แแแแแแจแแ แแแ แฎแแแแ แจแแขแงแแแแแแแแแแก แแ แกแแแแแแแแแก แกแแฎแแแแแแก แแแจแแแแแแ;
- แแ แแชแแกแแก แแแแแแก แแฅแแก แแแ แกแแแก แแแแแ แ, แ แแแแแกแแช แแแแแขแแแ, แแฃ แแ แแแแแแจแ แจแแฃแแแแกแแแแแ แชแแแแแแแแแ แจแแแแฅแแ แแ แแก แ แแชแฎแแ แแแแฎแแแ แแ แแชแแกแแก แแแกแขแแแชแแแก แแแแแแแ แแแแแกแแแ แแ แแแ;
- แแ แแชแแกแแก แแฃแแแแแ แแแแแแแ แแแแ แแแแแฎแแแ แแแแแแแ แฏแแ แแแกแแฎแแ แฎแแแแ แแแแแฅแขแแก แแแแแแจแ, แ แแแแแแแช แแแแ แแชแแแก แแ แแชแแแฃแ แแก แจแแฃแซแแแ แแแฃแจแแแก, แแฃ แแแแแแแก แแแ แกแแแก แแแแแ แ แจแแแชแแแแ;
- แแแแ แแชแแแก แแ แแชแแแฃแ แ แแแแแแกแแแฃแแแ แแแแแแก แแแแแแแก แแแแ แแแ แแ แแฌแแแแแ โแแแ แแแชแโ แแแแแแก แแ แแชแแกแแก แแแแแแฃแแ แแแกแขแแแชแแแกแแแแก แแแแแชแแแแ แแแแแแแ แแแกแ แแฆแแแแแแก แแ แแก;
- แแฃ แกแแญแแ แแ แแ แแชแแกแแก แงแแแแ แแแกแขแแแชแแแก แแแแแแแ แแแแแก แกแฌแ แแคแแ แแ แกแแแฅแ แแแฃแแ แแแแ แแชแแ, แแแแแแงแแแแแ แแแแแชแแแแ แแแแแก แแแแ แแชแแแก แฃแคแ แ แแแแกแแแฃแ แ แแแแแฌแงแแแขแแแแแแแ, แแแแ แแ แแฅ แฃแแแ แแแฃแจแแแ JSON-แแแ.
แแญแแ แแแแ แกแฎแแ แฉแแ แฉแ แแแแแแก แแ แแชแแกแแแแกแแแแก?
แกแขแแขแแแจแ แแฆแฌแแ แแแ แแแแแฌแงแแแขแแแแแแแ แกแแจแฃแแแแแแก แแแแซแแแแก แแแแจแแแแแแแแแ แแแแแแแแ แขแแแแ แฉแแแแ แชแฎแแแ แแแ, แแแแแคแแ แแแแแ แแแแแแแชแแแก แแแแแแแแ แแแแก แแแแแแ แแแแแแ แแแฃแแ แกแแแแแฎแแแแก แกแแแฅแขแ แ แแ แฃแคแ แ แแแแแแแแแแ แแแแฎแแแแ แแแแแแก แแแแแแแก แแแแ แแกแแ แแแกแแแแ แแแงแแคแแก แแแแ. แแแแกแแแแก แแแแแแแ แแแแ แ แกแแแฃแจแแ, แจแแแฅแแแ แซแแแแแ โแแกแฃแแฃแฅแโ แฉแแ แฉแ แแแแแแก แแ แแชแแกแแแแกแแแแก, แแกแแแ แกแแ แแแก แแแแแแแแแขแแแ แแแแแขแแคแแชแแ แแแฃแแ แแ แแแแแแแแแก แแแแแกแแญแ แแแแ, แแแแแงแแแแแฃแแ แแแแชแแแแแแก แคแแ แแ แกแแแฅแขแ แแก แแแแขแแฅแกแขแจแ. แฉแแแ แแแแฅแแก แกแฃแ แแแแ แแแแแแแแ แแ แแก แจแแแแแแแ, แแแแแงแแแแแ แกแแแ แแ แแแแแแแแแขแแแแก แแแแแแแแ แแแ แฆแแ แฎแแแแแกแแฌแแแแแแแแแ แฃแคแแกแ แแแชแแแแแแ. แแแแก แแแ แแแแฃแแ แซแแแแกแฎแแแแ แแ แแ แ แแแกแญแแ แแแแ. แแแแแแ แ แแแแแฌแงแแแขแแแแแแแแก แแแแฎแแแแแก แแแแแ แแแ แจแแแซแแแแ แฉแแแแแแแก แแแแแขแแแแแ แกแขแแแฃแแ แแงแแก. แจแแแแแแแแแแแฃแ แกแขแแขแแแจแ แซแแแแแ แแชแแ แ แงแฃแ แแแฆแแแ แแแแแแ แแแแแ แฉแแ แฉแแก แจแแกแแซแแแแแแแแแก, แแแแ แแ แแแแแแ แแ แแแแแแแ แฉแแแก แฌแแ แแแแแแแแแ แแแแแแแแแแแแแ. แแฃ แแแแแช แแแแแแแฅแแแงแแแแ แฉแแแแก แฉแแ แฉแแก, แแแก แชแแแแ แกแขแแขแแ แแแแแแแแ. แแแแแแ แแฃแแแ, แแแแแแแแแ แแแฅแแแแแ, แแฃ แแชแแ แ แแแแแฎแแแฃแ แแแแก แแแขแแแแแ แแแแฎแแแแ แแแกแฃแฎแแก แแแชแแแแ:
แแแแแแแแฎแแแจแ แแแแแฌแแแแแแ แจแแฃแซแแแแ แแฎแแแแ แแแ แแแแกแขแ แแ แแแฃแ แแแแฎแแแ แแแแแแก.
แแญแแ แแแแ แกแฎแแ แฉแแ แฉแ แแแแแแก แแ แแชแแกแแแแกแแแแก?
-
18,8%แแ, แแแแ แฎแแแแ แแแซแแ แแกแแแแก แ แแแแก.
-
12,5%แกแแแแขแแ แแกแแ แแแขแ แแแแแแ แแฅแแแแ แแแแฎแแ แชแแแแแแแก แจแแกแแฎแแ, แแก แจแแแซแแแแ แแงแแก แกแแกแแ แแแแแ2
-
6,2%แฉแแแ แแแงแแแแแ แแ แ-แแ แ แแ แกแแแฃแ แฉแแ แฉแแก, แแแแ แแ แแคแแฅแ แแแ แแแก แจแแชแแแแแ1
-
18,8%แฉแแแ แแแงแแแแแ แแ แ-แแ แ แแ แกแแแฃแ แฉแแ แฉแแก, แงแแแแแคแแ แ แฏแแแแ3
-
18,8%แแแซแแแแ แฉแแ แฉแแก แแแ แแจแ3
-
25,0%แแแฌแแ แ แจแแแ 4
แแแกแชแ แฎแแ 16 แแแแฎแแแ แแแแแแ. 7-แแ แแแแฎแแแ แแแแแแ แแแแ แจแแแแแแ.
แฌแงแแ แ: www.habr.com