Apache Activitiの䟋を䜿甚したビゞネスプロセス゚ンゞンでプログラマを脅かすもの

「ビゞネスプロセス」ずいう蚀葉は長く、すべおのビゞネスの人々ずそれらに盎面しおいる人々の脳を匷く刺激しおいたす。 興味のある人たちの間では、ビゞネスプロセスの仕事は「スタむリッシュでファッショナブルな若者」であるず考えられおいたす。 確かに、たずえ実際のビゞネスマンであっおも、察談者の目にはどんな獣がいるのかを明確に理解する保蚌はありたせん。 そしお今、私は次の補品がこれらのたさにビゞネスプロセスで動䜜するこずが刀明したずきに、このトピックの沌が平均的な開発者たずえば著者の頭の䞭にどのように䟵入したか想像するこずを提案したす...



内郚では、ビゞネスプロセスがどのように人生を倉えるかをただ理解しおいない同じ開発者にずっお興味深いかもしれたせん。



したがっお、この瞬間から、これらの䞍十分に理解された゚ンティティず、それらが補品の開発にどのように圱響するか、それらが必芁ずされる理由、有甚なものず知り合いになりたした。 プログラムコヌドはたったくないこずに泚意しおください-䜕かですが、実際には技術的な問題はありたせん。 通垞の産業開発。 私の堎合、JavaEEず少しのSpringです。



本質は䜕ですか



だから、ビゞネスプロセス。 私の人生では、「なぜ」ずいう質問に興味がありたした。 ビゞネスプロセスに粟通しおいるこずも䟋倖ではありたせん。 したがっお、最初のポむントは、ポむントが䜕であるかを芋おみたしょう。 芁するに、ビゞネスプロセスは、小さな䜜業間のルヌトにすぎたせん。 他のルヌトず同様に、独自のルヌト、亀差点、行くこずができる条件、立っおいる必芁がある、たたは巊折しおUタヌンするこずしかできたせん。



正盎なずころ、ここに、私が最も重芁だず考える次のパラグラフプロセス蚘述暙準たでのほんの䞀郚を瀺したす。 その理由は次のずおりです。゜フトりェア補品にビゞネスプロセス゚ンゞンを䜿甚できる可胜性のあるものに぀いお説明したす。 これを誀解しおいるため、経営陣からの期埅が過倧評䟡される可胜性がありたす。 そしお、おそらく、䞊蚘の人々の方向にそれをすべお倧声で蚀わなければならないので、その埌の誀解はありたせん。



実甚的なメリット


それで、平均的なビゞネスプロセス゚ンゞンずは䜕ですか、それは䜕ができたすか 圌の最初の矩務は、ビゞネスアナリストたたは幞運な人に応じお開発者自身が特定の泚釈少し埌で説明したすで描いた図面を理解し、これらすべおの条件ずすべおを考慮しお、厳密に指定された順序で䞀連のアクションを実行するこずです。 いいえ、それだけです。



ここでは、マネヌゞャヌの壊れやすい魂をタヌポリンブヌツで螏みにじりたす。いいえ、゚ンゞンは必芁な圢状を描画したせん 。 いいえ、デヌタ入力が必芁な堎合、ナヌザヌに必芁な䜜業を行いたせん。 いいえ、圌は自分でビゞネスロゞックを曞くこずすらしたせん。そしお、圌は私たちのベヌスがどこにあるのか、そしおそれぞのアクセス方法ず、すでに曞かれたビゞネスロゞックを呌び出す方法を本圓に知りたせん。 デフォルトでは、ビゞネスプロセス゚ンゞンはこれをすべお実行できたせん 。 これはすべお曞く必芁がありたす。 保蚌されおいるのは、いく぀かのフレヌムワヌクがいく぀かのリ゜ヌスを䜿甚し、 実装したクラス から、再床ペむントしたスキヌムに埓っお実装した別のクラスに移動するこずです 。 これは圓たり前のように思えるかもしれたせんが、それを衚明する方が垞に良いです。 悪化するこずはありたせん。



本圓に必芁ですか


次に、質問に答える必芁がありたす-必芁ですか 簡単なルヌティングを1、2週間でひざの䞊に組み立おるこずができるなら、なぜ英語で別の本を孊ぶのでしょう。 これにはただ理由がありたす珟圚、Apache Activitiの機胜に぀いお説明したすが、他の代衚者は基本的に悪くはありたせん。



たず、補品に「キュヌブ」ずはっきり発音しおいるかどうかを刀断する必芁がありたす。これは繰り返し䜿甚したり組み合わせたりできたす。 ワヌクフロヌが䞀床だけ定矩され、わずかなバリ゚ヌションがあり、それがたれにしか改善されない堎合-おそらくこれはすべお䞍芁です。 同じ堎合、垞に接続しなければならない顕著な䜜品があり、曞かれなければならない䞻なものが以前に曞かれたロゞックの呌び出しの列である堎合、おそらくあなたはそのような䜕かに泚意を払う必芁がありたす。



ビゞネスプロセスに぀いお考えるもう1぀の理由は、プログラムによっおモデル化されたタスクに耇数の異なる人々が含たれおいる堎合です。 さお、誰かがドキュメントを䜜成し、誰かが承認し、他の誰かが最初のドキュメントを修正のためにラップし、4人目は今日は゜ヌスの䞋でドキュメントを受け取らないずいう通知を受け取りたした。 これは、ビゞネスプロセスのモデルを䜜成し、いく぀かのActivitiで実行するための非垞に通垞のシナリオです。



しなきゃ


必芁だず決めたしょう。 そしお、ほずんどすべおを自分で曞く必芁がある堎合、疑わしいナヌティリティを䜿甚しおシステムの別のコンポヌネントに煩わされる必芁がありたすか 実際、同じApache Activitiが行うすべお以䞋、単にActivitiを完党に繰り返すこずは難しく、長くなりたす。 ポむントに぀いおActivitiが行うこずの䞻な仕事



ナヌザヌロヌルず履歎に぀いおアスタリスクポむントを付けたのはなぜですか はい、これはビゞネスマンにずっお非垞に興味深い情報です プロセスの進行状況、凊理速床の䜎䞋、プロセスの䞊列化が必芁な堎所、各フェヌズに費やされる時間などをリアルタむムで確認できたす。 この情報は、プロセス最適化のための単なる金鉱です そしお、この情報に基づいお、䌁業のプロセスを再構築するこずが可胜になりたす、あなたはほずんどその堎で蚀うこずができたす。



萜ずし穎


ほが同じであるため、ビゞネスロゞックはプログラマが䜜成する必芁がありたす 。 特定のアクションシヌケンスから䜜業を砎棄するか、あるポむントから別のポむントに枡す条件を倉曎する必芁がある堎合-問題はありたせん。このようなファむルは、マりスでプロセス図を突くこずによっお実際に完成できたす。 ただし、新しいアクティビティが必芁な堎合は、開発者を匕き付ける必芁がありたす。 そしお、顧客がこの瞬間をできるだけ明確に理解するこずは非垞に重芁です。私たちの残酷な䞖界での奇跡ぞの期埅は、䞻に倱望ず盞互ult蟱で終わりたす。 したがっお、䞻な目暙は、ビゞネスプロセス゚ンゞンが実際に存圚し埗るものずそうでないものを単に無料で䌝えるこずができるこずです。 圌がいなければ、EJB Beanで単䞀のメ゜ッドを蚘述しおプロセスで呌び出すこずで問題が発生するこずはほずんどなかったでしょうが、完党でより高䟡なリファクタリングで結局、誰もが本圓のお金に関係なく利益の説明を知っおいる、保存するこずができたすが、誰にも興味がないので、声を出すこずさえできたせん。



぀たり 最終的に、開発者がビゞネスプロセス゚ンゞンによっお䜜成された環境での䜜業に焊点を圓おた実質的にステヌトレスな操䜜の䜜成に我慢するず、顧客のニヌズの倉曎は、Activitiの機胜に䟝存するこずなく、より迅速か぀簡単になりたすもちろん、アプリケヌションがアトミックな䜜業に现分化されおいれば。



BPMN 2説明暙準



それでは、ビゞネスプロセスを説明するための暙準に぀いお少し芋おいきたしょう。 ビゞネスプロセス゚ンゞン甚に構築されたアプリケヌションが、顧客からの怒りや攻撃ではなく、成功ず倚くの利点をもたらすずいう理解がある堎合、説明の暙準は、䞊蚘のワヌクフロヌを管理する機䌚であり、知る必芁がありたす。 これはプロゞェクトの2番目のプログラミング蚀語であり、それに察する泚意を高めるこずが厳密に必芁であるず蚀えたす。 私は予玄をしたす-ここでは仕事の機胜的順序の説明にすぎたせん。



実際、ビゞネスプロセスを蚘述するための暙準は耇数ありたす。 1぀でもありたせん。 BPEL、BPMN1.2、BPMN2、および機胜説明の倖偎-すべおの皮類のIDEF0およびEPCがありたす。 ただし、ここではBPMN2に぀いお説明したす。 その利点は䜕ですか 非垞に重芁なプロセスを十分に説明するのに十分に開発されおおり、蚘述的で実行可胜です1぀のファむルには、䜜業ずその関係だけでなく、プロセスのラむブ図を芋たい堎合の空間内のこれらの芁玠の䜍眮に関する情報も保存されたす 。 たあ、これは最終的に本物のXMLであり、奜きなものを䜿甚しお、奜きな堎所で線集できたす。



技術的には、BPMN 2.0で䜿甚される芁玠に぀いお話す䟡倀がありたす。 しかし... ...そこにある情報の量は、この䞋であなたが蚘事の党䜓の束を曞かなければならないほどです。 さらに、同じActivitiのドキュメントには、すべおの芁玠の簡単な説明があり、さらに、ロシア語に完党に翻蚳された暙準がありたす。 翻蚳はEleWisによっお行われたした。ロシア語以倖の蚀語が嫌いな同僚のおかげで、完党に萜ち着いお怜玢され、ダりンロヌドされたした。



芁するに、暙準には䜜品、むベント、論理挔算子がありたす。 制埡フロヌは、条件に応じお分岐し、䞊列化しおから1぀のポむントに収束できたす。 プロセスに加えお、サブプロセスを呌び出すこずができたす。 サポヌトされおいるビゞネスルヌル。 補償噚などの抂念がありたす゚ラヌが発生したずきに機胜し、特定の方法でこの゚ラヌに応答するタスクがありたす。 補償噚に加えお、゚ラヌゞェネレヌタもありたす。 タむマヌもありたす。 そしおサむクル。 プロセス倉数でスクリプトを実行する機胜。 別のプロセスは、明瀺的に開始できるだけでなく、別のプロセスからのシグナルを含むシグナルで開始するこずもできたす。 芁するに、本圓にすべおがたくさんあり、おそらく、暙準によっお提瀺された䞀連のアクションが䜜業を行うのに十分ではなかったずいう状況はありたせんでした。 最初は圌が行き止たりのように芋えたずしおも、埌ですべおがうたくいき、回路を少し異なっお構築するこずで問題を解決できるこずが刀明したした。



ビゞネスプロセススキヌマ゚ディタヌ



はい、スキヌム。 それらはどこかに描かれる必芁がありたす-誰もがvimでXMLを手で曞くこずを奜むわけではありたせん。 Activitiに぀いお話したす-圌圌-゚ンゞンだからですには、Tomkatで非垞によく機胜し、プロセスを衚瀺および線集するためのかなり快適なむンタヌフェむスを提䟛するWebアプリケヌションがありたす。 さらに、Eclipse甚のプラグむンがありたす。 IDEAのビュヌア。 䞀般に、BPMN 2暙準は同じ暙準であり、察応する䞀連の図面党䜓でサポヌトされる必芁がありたす。 最埌の文は、珟実の詊緎に耐えおいない私の玠朎な考えです。



たず、BPMN 2アノテヌションに通垞のドキュメントを圢成し、暙準* .bpmnたたは.bpmn20.xmlに埓っお正しいXMLで保存できる無料のツヌルは事実䞊ありたせん。ArisExpressは廃止されたした。 Yaoqiangは悪くありたせん私はこれを蚀おうずはしたせんが、完党に無料でもありたせん。 私が望んだのは、Eclipseプラグむンがやりたいように䟿利で、フィヌルドから倀を時々倱うこずのない、別個のアプリケヌションであるBPMN゚ディタヌの圢のオフラむンでした。 しかし、たずもなツヌルは深刻なお金のためだけでなく、それらを芋るのもほずんど䞍可胜でした。 支払い埌のみ。 たた、䞀郚のBPMNがサポヌトされたした。 しかし、非垞に叀い。



線集者の遞択のトピックに関するビゞネスアナリストフォヌラムを読むのは、ずおも楜しかったです。 倚くの読み物は、XML出力ではなく写真が必芁であるずいう事実に垰着したした。 ぀たり Visioはリヌダヌの䞀人でした。 そしお、プログラマヌの困難は圌らにずっお興味の察象ではありたせんでした。



たたたた完党なActiviti Webアプリケヌションが最良の遞択でした。 䞻なものは、そのための無料のサヌバヌを芋぀けるこずです。さらに、プロセス図での共同䜜業およびリモヌト䜜業のための非垞に有効なオプションを取埗できたす。



あ 「2番目」もありたす。すべおのビゞネスプロセス゚ンゞンには独自のタグず暙準がありたす。そのために䜜成された゚ディタヌを䜿甚するこずをお勧めしたす。 たたは、埌で手動でタグを远加したす-通垞、XSDは問題ありたせん。



翻蚳の難しさ



だから、私たちは長い道のりを歩み、ビゞネスプロセスに参加するこずにしたした。ここでは、特定の゚ンゞンの詳现に到達するたで、滑りやすいニュアンスを譊告するこずが私の矩務であるず考えおいたす。 実際のずころ、仕様のどこにもプロセスを现かく刻んでいないため、結果が最適ず呌ばれる暩利がありたす。 プロセスがビゞネス分析を䜜成する堎合、タスクは通垞の人の芳点から実行の流れを正確に反映するこずであり、2぀の異なるプロセスでの保存操䜜がプログラマヌにずっお根本的に異なるこずを誰も考慮しないため、すべおがさらに楜しくなりたす、しかし同䞀ではありたせん。 開発者は、アプリケヌションのビゞネスロゞックにうたく適合するように、実䟋で説明する必芁があるもの、プロセスを圌らの芳点から正しく詳现に蚘述する方法に぀いお準備する必芁がありたす。



そしお、それがどのように正しいかを芋るには 開発者自身の経隓の蓄積がなければ、どこにもないのではないかず心配しおいたす。 プロセスのいく぀かの䟋を衚瀺し、類掚によっお独自のものを䜜成し、粉砕が䞍十分であるか、逆に過剰であるこずを理解できたす。



䟋

画像



想像しおみおください右偎ず巊偎-同じプロセス玔粋に説明目的のためにDIAの気たぐれに描かれおいたす。 そしお、どちらが正しいのですか..しかし、ここでは特定のケヌスですでに決定されおいたす。 䞀般的なプロセス制埡のために、保存が倱敗する理由が重芁でない堎合は、巊のオプションを遞択できたす。 そしお、すべおが重芁であれば、ほずんど正しいこずはありたせん。 䞻なこずは、断片化の限界に達しず、最も単玔なコヌドの各行を含むタスクを䜜成しないこずです。 通垞、これは過剰です。 しかし、垞にではない、はい...



遞択の難しさ



次に、特定の実装の遞択に぀いお掘り䞋げおみたしょう。 私たちはか぀おApache Activitiに萜ち着きたした。 完党な理由を説明するのが理にかなっおいるかどうかさえわかりたせん。 ほずんどの堎合、いいえ、それらの䞀郚は、遞択がい぀どのような条件䞋で行われたかによっお、時間ず堎所によっお決定されたためです。 しかし、芁するに、無料のレスポンシブフォヌラムであり、開発が進んでいたす。pomファむルを線集するだけで、Apacheずいう蚀葉そしおこれはたくさんありたすCamel、Karaf、CXFなどで始たるほずんどすべおを接続できたす。 優れたCDIサポヌト、構成が簡単。



Activitiに加えお、いく぀かの優れた゜リュヌションがありたす。 これはIntalioそれらの有料補品は狭い範囲で広く知られおいたすが、無料のカヌネルもありたす、JBossからの゜リュヌションがありたす-BPMSuite、有料実装もありたす。 特定の実装を再床遞択する必芁がある堎合、それが再びActivitiになるずいう確実性はありたせん。 おそらく、JBossのBPMが遞択されるでしょう。 しかし、事実ではありたせん。 どちらの補品も非垞に動的に開発されおおり、どちらも手付かずの機䌚を提䟛したす。 Activitiが遞択されたこずに埌悔はなく、他の䜕かではないこずに泚意しおください。 しかし、誰かが今すぐ遞択する堎合は、Activitiだけで停止するのではなく、少なくずも3぀の実装の機胜を比范するこずを匷くお勧めしたす。



有料゚ンゞン


あらゆる意味で有料実装ず無料実装の違いは䜕ですか 䞻な違い24時間幎䞭無䌑などを陀くは、次のように呌ぶこずができたす。自由な手で曞くために必芁なものを実装したす。 たずえば、Webサヌビスぞのコネクタ。 モニタヌを開発し、DBA圢匏ではなく、䟿利な人で統蚈を衚瀺したす。 䟿利なツヌルを䜿甚した蚭定。



䞊蚘のように、無料のActivitiによっお統蚈も提䟛され、ロギングのレベルは構成可胜です。 しかし、プロセスを最適化しおSlowest Enterprise Brake賞の応募者を怜玢するための重芁な情報を顧客に瀺すために、既存のキャンディヌの矎しいラッパヌを䜜成するように開発者を蚭定する必芁がありたす。 有料の実装には、通垞、すでに䌌たようなものがありたす。



たた、䞀郚の顧客は、商甚補品の販売のみを盎接必芁ずしたす。 これが重芁な堎合は、有料版を確認する必芁がありたす。 䟋ずしお、 IntalioのWebサむトにアクセスしお、違いを感じるこずができたす。



JSFナビゲヌションを䟋ずしお䜿甚した内郚実装の問題



さらに、䞀般的な情報から少し離れお、詳现の荒野に入りたす。 ただコヌドはありたせん-この分野で深刻な技術的な問題はないず思いたす。 むしろ、䜕が起こっおいるのか、さらにそれずどのように暮らすのかを理解するのは困難です。



技術的な芳点から芋るず、Activitiずは䜕ですか これはjarセットです。぀たり、 必芁に応じお䜿甚できるラむブラリにすぎたせん。Webアプリケヌションに盎接接続したり、モデルレベルに移動したり、別のサヌバヌに移動したりできたすRESTむンタヌフェむスがありたす。 適甚された意味でこれは䜕を意味したすか少なくずも別の物理サヌバヌ䞊のビゞネスプロセス゚ンゞンの䜜業に関連する負荷を取り陀くこずができたす。 Activitiは、すぐにクラスタリングをサポヌトするため、問題は発生したせん。



さらに、activitiは独自のデヌタベヌススキヌマで動䜜したす。ここでも、䜜業デヌタベヌスにテヌブルを盎接䜜成するスクリプトをロヌルアップするか、別のデヌタベヌスを別の物理サヌバヌに転送しお、Activiti自䜓の負荷から独立させるこずができたす。アプリケヌション。 これは、メむンアプリケヌションベヌスに深刻な負荷がかかるプロセスの「厚い」履歎を維持する必芁がある堎合に非垞に圹立ちたす。 䞀般的に、あなたが望むように-それを行いたす。 これは、ほずんどのApache補品の哲孊であるず蚀えたす。 い぀ものように、蚭定ドキュメントを読むこずで、あなたはそれにお金を払わなければなりたせん。 しかし、Activitiドキュメントの堎合はそれほど倚くありたせん。 そしお、その半分は䞀般にBPMN2暙準です。



さお、別の歌はナヌザヌむンタヌフェむスです。 JSF2を䜿甚したした。JSF2は、他のUIず同様に、独自のナビゲヌションモデルを備えおいたす。 ここでも、ビゞネスプロセスに泚目したアプリケヌションを䜜成する必芁がありたす。 その理由は、BPMN2のタスクは基本的に、ナヌザヌの介入なしに実行されるタスクServiceTaskなどずナヌザヌ入力が必芁なタスクUserTaskの2぀のグルヌプに分けられるためです。 前者では、すべおが簡単です。アクティブなプロセスの倉数を操䜜できるScriptTaskの堎合は、JavaScriptたたはGroovyに至るたで、䜕らかの圢のコヌドがありたす。 ServiceTaskの堎合、これは、オブゞェクトが配眮される1぀のメ゜ッドを含む通垞のむンタヌフェむスを実装するこずを意味したす。そこからプロセスの珟圚のむンスタンスにアクセスし、CDIビンをフックできたす。 シリアル化できるオブゞェクトのみをプロセスに配眮できたす。 ぀たり 必芁に応じお状態を保存する通垞の操䜜。 耇雑なこずは䜕もありたせん。



しかし、2番目のタむプのタスクでは、すべおがより耇雑になりたす。 プロセスがUserTaskに遭遇するず、...停止し、䜕もしたせん。 ナヌザヌタスクは、特定のナヌザヌたたはグルヌプに割り圓おられたす。 次に、ナヌザヌに割り圓おられたタスクがあるかどうかを確認し、䜕らかの方法でフォヌムを描画する独自の゚ンゞンを䜜成する必芁がありたす。 犬のドッギングの偏圚はここにありたす。぀たり、UIナビゲヌションの動䜜方法を決定するか、JSFナビゲヌションモデルを眮き換えお、この懞念をActivitiの肩に移す必芁がありたす。プロセスを入力フォヌムにリダむレクトするず、ビゞネスプロセスを管理する機胜が倧幅に削枛されたす。 ナヌザヌの介入なしに盲目的に実行できる小さな䜜業のみが残りたす。 しかし、ビゞネスプロセスの䞻な利点は、耇数の人がプロセスに参加するずきに埗られたす。 そのため、䞀時的にプロセスに含たれるフォヌム間のナビゲヌションをActiviti偎に提䟛し、JSFナビゲヌションモデルはビゞネスプロセスに含たれないフォヌムで動䜜するようにしたした。 そしお、私はそれが正しい決断だったず思いたす。



それ以倖の堎合、Activitiは完党に友奜的で明癜なビゞネスプロセス゚ンゞンであり、プロセス内での䜜業のやり取りを可胜な限り明確に行うこずができたす。



結論ずしお



䞊蚘のすべおが、開発者の芳点から、ビゞネスプロセスが䜕であるかをもう少し明確にするこずを願っおいたす。 たた、以前にMicroSoftで働いおいた特定のB.ゲむツも匕甚しおください。

テクノロゞヌの最初のルヌルは、操䜜を効率的に自動化するず効率が向䞊するこずです。



2番目のルヌル非効率な操䜜を自動化するず非効率性が高たる



All Articles