作業キューの処理
作業キュー処理とは、特定の順序で完了する必要がある作業項目一覧の管理を意味します。 この一覧には、名前、優先度、有効期限、状態、処理される実際の値など、各項目に関する情報が含まれています。
作業キューの処理方法:
Dataverse プロ開発者機能の使用 (高度な統合シナリオのみ):
Dataverse のプロコード ツールの詳細については、Dataverse 開発者向けドキュメント をご覧ください。
処理に関するチュートリアル
3 つの異なる処理シナリオを見ながら、利用できる処理オプションを紹介します。
Power Automate デスクトップ (PAD) でのデスクトップ フローベースの作業キュー処理
作業キュー項目の処理と更新の例
Power Automate デスクトップで作業キュー アクションを使用するための最初のステップは、作業している環境にワーク キューを作成し、下流で消費されるデータを含むいくつかのキュー項目を読み込むことです。 キュー項目は、ここで説明されるように、デスクトップ フロー、クラウド フロー、または一括で作業キューに読み込むことができ、キュー項目が入力されます。 この例では、Power Automate デスクトップでのアクションの使用方法を説明するために、いくつかのキュー項目が作業キューに手動で追加されています。
作業キュー アイテムが作成され、値フィールドにはデスクトップ フローの下流で使用される JSON 形式のテキストが含まれています。
作業キュー アクションの使用法を示すために使用するサンプル フローでは、クラウドの作業キュー項目を消費し、値フィールドに含まれるデータを処理して、それを下流で処理されるカスタム オブジェクトに変換するプロセスを模倣します。 作業キュー項目の値として JSON またはカスタム オブジェクトを使用することは必須ではありませんが、複数のプロパティを持ち、特定のスキーマに従って値を整理する場合に便利な方法であることに注意してください。
作業キュー項目の処理アクションは、デスクトップ フローでプロセスのアイテムを消費する作業キューを指定する場合に使用します。 このアクションは、ドロップダウン矢印を使用してリストから作業キューを選択し、キュー名を含む変数を渡すように構成できます。 このアクションは、実行すると、作業キューの最初の (最も古い) 項目を、キュー登録済みステータスのフローに取り込んで機能します。 キュー項目がフロー内で処理を開始すると、そのステータスは自動的に処理中に変わります。
ブレークポイント (赤い点) は、フロー内のアクション 3 の横をクリックして設定し、PAD コンソールで実行します。 ブレークポイントで処理が一時停止すると、フロー変数に入力された値をダブルクリックして WorkQueueItem 変数を開くことができ、これにより、処理中に作業キュー項目に関連付けられたすべてのプロパティが表示されます。
フローのアクション 2 で、返された JSON 値に、この場合は %WorkQueueItem.Value% でアクセスしてカスタム オブジェクトに変換します。 その理由は、JSON を解析し、フロー内で JSON プロパティを下流で使用するのに役立つためです。 この仮説的なケースでは、情報は Farbrikam の財務ポータルにエントリを作成するために使用されます。
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
たとえば、請求書 ID を、Web またはデスクトップ アプリの UI を自動化するプロセスの一部として財務システムのフィールドに入力する要件があったとします。%JsonAsCustomObject.InvoiceId% を使用してその値を呼び出して、テキスト フィールドに入力してボタンを押すことができます。
さらに、この例では、ステップの処理が完了し、サブフロー Fabrikam データ エントリ内のカスタム オブジェクトのデータを使用すると、いくつかの条件ステートメントが含まれます。 入力システム関連の例外が発生せずにプロセスがエンドツーエンドで実行される場合、作業キュー項目の更新アクションを使用して、作業キュー項目のステータスを処理済みに変更し、処理結果フィールドを使用して一部のオプションのメモを入力できます。 有効期限フィールドが空白のままの場合、新しいキュー項目は作業キューのプロパティで定義された項目の有効期限値を保持します。
例外処理オプションは、作業キュー項目の更新アクション構成ウィンドウでエラーをクリックすると設定できます。 詳細タブでは、3 つのオプションをカスタマイズで使用できます。PAD での処理が完了する前に、手動または別の体系的なプロセスによって、作業キュー項目がキューから削除されると、作業キュー項目が見つかりませんと表示されることがあります。 作業キュー アイテムが保留中 は、キュー アイテムの処理中に、フロー ポータルで自動プロセスまたは誰かが処理中の 作業キュー アイテムのステータスを 保留中 に変更した場合に発生する可能性があります。 作業キュー アイテムの更新に失敗しました というエラーは、キュー アイテムがキュー内に存在しなくなった場合、またはステータスが 保留中になっている場合に発生する可能性があります。 上記はすべて、発生する可能性のあるエッジ ケースです。デスクトップ フローでのエラーの処理について、詳細をご確認ください。
作業キュー項目のデータをデータ入力システムに処理するときに何らかの問題が判明した場合、その項に、代わりに一般例外、IT 例外、またはビジネス例外のステータスが割り当てられることがあります。 これらの例外ステータスは、自動化されたユース ケースが適用される可能性のある基準を満たしている場合に使用できます。
キュー項目の処理中にシナリオ 2 が満たされたとします。 この場合、キュー項目は元のキューで汎用例外としてマークされます。 シナリオによっては、代替ステータス オプションの 1 つとして、正常に処理できなかったキュー項目のステータスを変更することを決定する場合があります。 そこから、人間の介入が必要かどうかを決定したり、各例外ステータスを管理するために必要なロジックを備えた後続のプロセスを構築したりできます。
自動再試行パターン
作業キュー 項目の処理 アクション Power Automate デスクトップ には、自動再試行メカニズムを構成またはオーバーライドするための高度なオプションが含まれています。 この機能を使用すると、作業キュー 項目ごとに最大自動再試行回数を指定できます。これは、一時的なネットワーク エラーや一時的なシステム使用不可などのIT例外を処理するのに役立ちます。 これにより、マシンはアイテムを保持し、アイテムを再キューイングせずに制御された再試行を実行できるため、より効率的で回復力のある 作業キュー 処理が保証されます。
Dataverseの 作業キュー レコードで最大再試行回数を設定し、集中的に制御できます。 このデフォルト値は、 「作業キュー アイテムの処理」 アクションを通じてこの 作業キュー を処理するすべての デスクトップ フローに適用されます。
フロー内のキュー レベルのデフォルトをオーバーライドするには、 [作業キュー アイテムを処理] アクションの [詳細設定] セクションに移動し、 [作業キュー 自動再試行構成をオーバーライド] オプションを切り替えます。 この設定により、最大再試行回数をより高い値またはより低い値に設定したり、最大再試行回数を0に設定して再試行メカニズムを無効にしたりすることができます。
ステータスが に設定され、最大自動再試行回数が0より大きい状態で 作業キュー 項目の更新 IT exception
アクションを使用すると、システムは更新をすぐに 作業キュー オーケストレーターに送信しません。 代わりに、指定された最大再試行回数に達するまで操作を再試行します。 作業キュー 項目で更新される値は retrycount
のみです。 この値は、2回目の更新試行以降、最大自動再試行回数に達するまで増加します。 さらに、 CurrentRetryCount
と呼ばれるローカルの 作業キュー 項目変数は再試行ごとに増加します。 この変数を使用すると、必要に応じてその値に基づいてカスタム ロジックを実装できます。
次の条件が満たされている場合、フローは Process作業キューitems アクションの先頭にループバックするときに新しいアイテムを要求しません。
- 最大再試行回数に達していません。
- IT例外を除き、その他の更新は発生しません。
最大再試行回数に達すると、更新アクションは更新をオーケストレーターに送信し、アイテムのステータスをIT例外に変更し、提供された処理メモを含めます。
PAD からの作業キュー項目の追加およびキューへの再登録の例
作業キュー項目の追加 により、デスクトップ フロー ユーザーは、フロー ポータルで設定されている作業キューに作業キュー項目を追加できます。
この例では、.csv 形式の Excel ファイルが毎日ディレクトリにドロップされ、各行を作業キューに追加する必要があります。
このサンプル プロセスの最初のいくつかのアクションは、毎日 のContoso Invoices.csv ファイルがドロップされるフォルダーをマップします。プロセスが実行されると、CSV ファイルからデータ テーブルを読み取って開始されます。 CSVTable 変数にはインポートされたデータが含まれ、新しいキュー項目に対して処理されます。
アクション 3 と 4 は、新しいキュー項目を選択して作業キューに追加された後に期限が切れる時間を生成します。 アクション 3 は現在のシステムの日付と時刻を取得し、この例では、%Add to datetime% アクションを使用してそれに 7 日が追加されます。 出力は ExpiryDatetime という変数に保存され、作業キュー項目の追加アクションで使用されます。
アクション 5 は、インポートされた CSVTable のデータの各行を反復処理するために使用される For each ループを導入します - このアクションは、処理中の現在の項目のデータ行を表示します。
このデスクトップ フロー例の前述のアクションはすべて、現在、作業キュー項目の追加アクションの値の設定に組み込まれています。
作業キュー パラメーターは、新しい作業キュー項目を追加するキューに設定されます - この場合、デモ PAD キューが、ドロップダウン メニューから選択して選択されています。
優先順位パラメーターは既定値の普通のままにしますが、低と高もオプションです。 優先順位が高い作業キュー項目が最初に処理され、次に普通が処理され、最後に同じ作業キューにまとめられます。
名前パラメーターは、変数値 CurrentItem['ID'] と共に静的プレフィックス付きで設定されています - 処理中のデータ行の ID セルの値が含まれます。 これはオプションですが、ユース ケースによっては便利です。
変数 CurrentItem にデータ行の値を使用し、入力パラメーターは JSON 形式で入力されています。 各ヘッダー名は、['name of header'] 表記を使用して currentitem 変数に追加されています
有効期限フィールドは、前のステップで 7 日が追加された日時変数を使用して入力されます。 空白のままにすると、追加される作業キュー項目に、作業キューに設定される項目の有効期限が含まれます。
処理メモ はオプションです。必要に応じて使用してください。
プロセスが実行されると、インポートされた CSV 内の各データ行によって、処理可能であることを意味するキュー登録済みステータスの作業キュー項目が作成されます。
これらは、PAD で作業キュー アクションを使用できる多くの方法の一部にすぎません。 時間をかけて、クリエイティブな使用方法を探って見つけ出し、作業キューを Power Automate フローに組み込ましょう!
遅延のある項目のキューの再登録の例
遅延のある項目のキューの再登録アクションにより、デスクトップ フロー ユーザーは項目をキューに再登録し、項目を処理するためにリリースできる遅延期間を設定できます。
この例では、24 時間で期限切れになるように設定された項目が読み込まれた作業キューがありますが、IT 部門によって定期的なシステム メンテナンスが継続的に行われており、項目をキューに再登録する必要があるため、時間内に処理できません。 メンテナンスは夜間に完了するため、各キュー項目を 24 時間遅延させて、リリース期間の 24 時間後に期限切れになるように設定します。
このプロセスの例の最初の 3 つのアクションは、日時アクションです。 [現在の日時を取得する] アクションは、アクションが実行される時点の日時を取得します。 次に、[日時に加算] アクションを使用して 2 つの要件をカバーしました。まず、現在の日時に 24 時間を可算して遅延時間を定義する必要があります。次に、有効期限として現在の日時に 48 時間を可算する必要があります。
次の例では、[作業キュー項目の処理] アクションがロードされた作業キューを指すように構成され、[遅延のある項目のキューの再登録] がループ内に配置されます。
遅延と有効期限に対して生成された値を、[遅延のある項目のキューの再登録] アクションに渡せるようになりました。 [作業キュー項目] フィールドには、ループによって生成された変数が入力されます。これは、どのキュー項目をキューに再登録するかを指示します。 また、日時アクションを使用して作成された値が、[遅延期限] フィールドと [有効期限] フィールドに接続されました。 [遅延期限] は必須ですが、[有効期限] と [処理結果] は任意で使用できます。
この簡単なプロセスにより、有効期限と処理結果を設定するオプションも使用して、キュー内のすべての利用可能な項目をキューに再登録し、一定時間遅延させることができます。
クラウド フローとコネクタベースの処理
作業キュー項目をデキューして処理する最も簡単な方法は次のとおりです。
Power Automate に移動し、自分の資格情報を使用してサインインします。
左側のメニューで 自分のフロー を選択します。
ツール バーで + 新規フロー を選択し、インスタント クラウド フロー を選択します。
自分の初めての作業キュー フロー などのフロー名 を指定し、手動でフローをトリガーする を選択します。
作成を選択します。
フロー デザイナーが開いたら、 + 新手順 を選択してから Microsoft Dataverse コネクタを選択します。
アクション リストから バインド アクションを実行する を選択します。
パラメーター | 価値 | Description |
---|---|---|
テーブル名 | 作業キュー | 作業キュー テーブルの名前。 |
アクション名 | デキューする | キューから次に使用できる項目を取得するアクション。 |
行ID | [作業キューID] | デキュー元のキューの作業キューID (GUID)。 この値を取得するには、キューの作業キューの詳細ページに移動し、高度な詳細 パネルを開きます。 |
注意
バインドされたアクションは、特定のテーブル (この例では作業キュー) に定義されている Dataverse アクションであり、そのテーブルのレコードに対してのみ実行できます。 バインドされたアクションは、特定のレコードに対してカスタム ビジネス ロジックや操作を実行するためにプラットフォームが使用します。
- フローは次のようになります。
保存 を選択し、フローを テスト します。
テストのサイドペインで、手動、テスト、フローの実行、完了 の順に選択します。
フローが正常に実行された場合は、同様の結果が表示されます (ただし、ID は異なります)。
- 次に、本文 フィールドから JSON コンテンツ全体をコピーし、フローの右上隅にある 編集 を選択します。
チップ
作業キュー項目をデキューした後、項目の JSON コンテンツを項目の JSON プロパティを解析するためのスキーマの例として使用します。 これにより、後続のフロー アクションで作業キュー オーケストレーターが返す項目のプロパティに簡単にアクセスできるようになります。
- + 新しい手順 を選択して新しい手順を追加し、JSON の解析 というアクションを検索して選択します。
- コンテンツ フィールドにマウスを置き、前のアクションから 本文 プロパティを選択します。
次に、サンプルから生成 を選択し、前にコピーした JSON 文字列をダイアログに貼り付けて 完了 を選択します。
+ 新規手順 を選択してから、Microsoft Dataverse コネクタを選択します。
アクションのリストから、行の更新 を選択します。
テーブル名 フィールドで、作業キュー項目 テーブルを選択して 行 ID フィールドにカーソルを移動させます。
動的コンテンツ 一覧には、作業キュー項目テーブルで使用できるすべてのフィールドが表示されます。
詳細オプションを表示 を選択し、RowID、処理結果、状態、および ステータス フィールドを次の値に設定します。
Field | 価値 | Details |
---|---|---|
行ID | workqueueitemid | この値は、動的コンテンツ一覧ダイアログで選択できます。 |
処理結果 | 項目は正常に処理されました。 | |
状態 | 処理済み | |
ステータス | 処理済み |
もう一度フローを 保存 して テスト します。
フローが正常に実行された場合は、同様の結果が次のように表示されます。
作業キュー詳細ページに移動し、作業キュー項目一覧セクションで すべて表示 を選択します。
状態 フィールドをフィルター処理して、処理中 と 処理済み 項目のみを表示して、項目を使用して、デキューと更新アクションが既知アどおりに機能したことを確認します。
最初の作業キュー処理シナリオが完了しました。
デスクトップ フローのサポートを備えたクラウド フローベースの処理
このシナリオでは、デスクトップ フローの処理ステップも追加して、前のシナリオを拡張します。
戻って 初めての作業キュー フロー を編集します。
JSON の解析 のすぐ後に新しいアクションを追加し、デスクトップ フロー コネクタを検索して デスクトップ用 Power Automate でフローのビルドを実行します。
デスクトップ フロー ドロップダウンで、既存のデスクトップ フローを選択して編集するか、+ 新しいデスクトップ フローを作成する を選択して画面上の指示に従いデスクトップ フローを作成して、デスクトップ用 Power Automate を起動します。 デスクトップ フローを初めて使用する場合は、ここから 詳細をご覧いただけます。
デスクトップ用 Power Automate のデザイナーが開くと、WorkQueueItemValue および WorkQueueItemName という 2 つの 入力 変数が作成し、ProcessingNotes および ProcessingStatus と呼ばれる 出力 変数を追加して、データ型としてすべてに テキスト を含む必要があります。
WorkQueueItem 変数の既定値を指定して、後でスクリプトをローカルでテストできるようにします。 一括インポート チュートリアル に従った場合は、JSON 形式の値が含まれた 仕入先 請求書キューに作業キュー項目が含まれています。 次は、使用される値の一例です。
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
フローを 保存 します。
アクション パネルで、変数 アクション グループを開き、JSON をカスタム オブジェクトに変換 アクションをダブルクリックします。それをデザイン キャンバスに追加すると、そのプロパティ ウィンドウが開きます。
JSON フィールドの変数アイコンを選択し、WorkQueueItemValue 変数を選択します。
生成された出力変数の名前を JsonAsCustomObject から VendorInvoice に変更し、保存 を選択します。
次に、条件 グループから If アクションを追加し、そのプロパティを次のように設定します。
First operand Operator Second operand %VendorInvoice['Amount']% (<) より小さい 5000 保存 を選びます。
条件 グループから Else という別のアクションを追加し、If および 終了 アクションの間に追加します。
Set variable と呼ばれる Variables グループから他のアクションを 2 つ追加し、If と Else アクション内に追加して、ProcessingNotes と ProcessingStatus 変数を次の値に設定します。
変数 価値 %ProcessingNotes% 請求書は処理されました %ProcessingStatus% 処理済み 2 つの 変数の設定 アクションをコピーし、Else と End アクションの間に貼り付け、以下に一致するように値を変更します。
変数 価値 %ProcessingNotes% ビジネス例外: 請求金額が USD 5000 を超えているため、マネージャーの承認が必要です。 %ProcessingStatus% 例外 フローは次のようになります。
フローを保存して実行し、フロー ロジックが期待どおりに動作することを確認します。
戻って 初めての作業キュー フロー を編集します。
新しく作成した (または編集した) デスクトップ フローを一覧から選択し、実行モード として アテンド型 を選択します。
次のように作業キュー項目値と作業キュー項目名に入力します:
行の更新 アクションの前に 条件 アクションを追加します。
値の選択 フィールドにマウスを置き、動的コンテンツ一覧ダイアログから 処理の状態 を選択します。
次に、他の 値の選択 フィールドにマウスを置き、テキスト値として 処理済み を入力します。
行を更新 アクションを条件アクションの はいの場合 セクションにドラッグ アンド ドロップします。
行の更新アクション詳細を開いて、以下に一致するよう値を置き換えます:
赤い いいえの場合 ボックスに、別の 行を更新 アクションを追加し、テーブル名 としての 作業キュー項目 を選択します。
次に、workqueueitemid を 行 ID として選択し、詳細オプションの表示 セクションを開き、処理結果 値として 処理メモ を選択します。
状態 は エラー を選択し、ステータス は GenericException を選択します。
保存 と テスト を選択して自動化全体をテストし、デスクトップ フロー アクションからの出力を確認します。
作業キュー項目が処理されたことを確認するには、作業キュー詳細ページに移動し、作業キュー項目セクションの すべて表示 を選択して、処理済み 状態別に項目をフィルター処理します。
ハイブリッド作業キューの処理を含む、高度なシナリオが完了しました。