Home > コンセプトペーパ > Magic xpi 4.x のアーキテクチャ > アーキテクチャーの概要 > スレッドとワーカ
Magic xpi4.xは、2種類の個別のタイプのスレッドを持っています。
サーバアーキテクチャがどのように働くかのビジュアルな説明を参照するには、ここをクリックしてください。 トリガアーキテクチャの詳細については、このイメージを参照してください。 |
これらは、「フローワーカ」とも呼ばれます。すなわち、フローを実行することができるスレッドです。フローワーカは、フローステップを実行します。フローワーカが開始され、SpaceのステータスがREADY_FOR_USEであるフロー呼出しリクエスト(メッセージ)を待ちます。フロー呼出しリクエスト(メッセージ)が作成されたら、有効なフローワーカはSpaceのステータスをIN_PROCESSに変更します。2つのワーカが同じメッセージを実行することを防止するため、それはトランザクション内で行われ、メッセージペイロード内で有効なデータを使用して、メッセージ内で定義された要求されたフローを実行します。
詳細なモニタリング、トラブルシューティング、そしてメンテナンスを可能にするために、フローワーカはその処理の間、Spaceに詳細なステータス情報を維持しています。フロー内で各ステップを実行する前に、ワーカは現在のフローステータスによってSpaceを更新し、プロジェクトメタデータに基づいて、やるべきことをチェックします。
ユーザ定義タイムアウトに達したらアボートします。
リカバリまたはエラー処理のためアボートします。
サーバ/プロジェクトのシャットダウンのためアボートします。
(デバッグ状態で)次のステップを続ける前に休止します。
フローが完了したら、ワーカはSpaceのフロー呼出しリクエストメッセージのステータスをDONEに更新し、追加の新しいメッセージが処理されるのを待ち始めます。
新しいプロセスが開始される前に、ビジネスプロセスが完了することを保証してSpaceからのメッセージを読み込む時、Magic.iniファイルのWorkerReadDeeperMessagesfirst= flagはMagic xpiに、より高い階層を持つメッセージに優先度を付けるように指示します。
ルートメッセージのための処理戦略は、先入れ先出し(FIFO)ですが、実行ツリー(並行ステップ)でより深いメッセージはより高い優先事項を持っていて、どのような待ちのルートメッセージの前ででも処理されます。新しいルートメッセージが処理される前に、この戦略は実行ツリーのより迅速な完了を可能にします。 |
これらは、外部のイベントに対してポーリングまたはリスニングに責任があり、Space内でフロー呼出しリクエストを作成することによってフローを開始しているスレッドです。トリガスレッドが開始され、外部のイベントが発行されることを待ちます。そのようなイベントが発生したら、有効なフローワーカによって処理されるイベントデータ(ペイロード)によって、トリガはフロー呼出しリクエスト(メッセージ)を作成します。トリガは同時的でも非同期でもかまいません。
同期トリガ …… : いくつかのトリガが非同期的にフローリクエストを呼び出すと、他のトリガは同期モードになります。このモードでは、トリガがフロー呼出リクエストを作成した後、応答メッセージを待ちます。フローが完了したら、同期リクエストを処理するフローワーカは、ペイロードを持つ応答メッセージを作成することについて責任があります。
非同期トリガ…… これらのトリガはフローリクエストメッセージを作成し、直ちに、応答を待たずに外部システムの新しいイベントをチェックし続けます。非同期のトリガが処理されないフローリクエストメッセージでSpaceをあふれさせないようにするため、各トリガは、キューがあらかじめ決められたサイズを越えた場合に新しいイベントの作成を絞るために使用される決められたキューバッファサイズが定義されています。このトリガバッファサイズは、デフォルトで10に設定されています。TriggersBufferSize= flagの値を変更することで、この値を調整することができます。このフラグの詳細についてここをクリックしてください。フローワーカと同じように、保守性と可視性を保証するために、トリガはSpaceにそれらの状態を維持しています。
各Magic xpi ワーカは、特定のMagic xpi プロジェクトのリクエストを処理することに専念しています。同じIMDG/Space上の複数のプロジェクトを実行する場合、各プロジェクトは専門のMagic xpiエンジンとワーカを割り当てる必要があります。 |