非同期操作の状態
公開日: 2017年1月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
非同期キューに追加された後の非同期操作の状態は明確です。 非同期操作の状態には、実行待機、実行可能、および実行完了があります。 また、最終的にキューから削除される前に、操作が上記以外の状態になる場合もあります。 状態によって、非同期操作のライフ サイクルが定義されます。
このトピックの内容
非同期操作の状態
AsyncOperation の状態の取得と更新
非同期操作の状態
非同期操作の状態を変更するには、通常のキュー プロセスの一部としてプラットフォームで変更する、Microsoft Dynamics 365 Web アプリケーションを操作するユーザーが変更する、非同期操作の変更を行う Web サービス呼び出しによって変更する、の 3 つの方法があります。 開発者は、アクセス権を持つ非同期操作の現在の状態を取得したり、その状態を変更することができます。
以下の表に、AsyncOperation の状態および進捗状況を示します。
状態 |
状況 |
状態の数値 |
---|---|---|
Ready |
WaitingForResources |
0 |
Suspended |
Waiting |
10 |
Locked |
InProgress |
20 |
Locked |
Pausing |
21 |
Locked |
Canceling |
22 |
Completed |
Succeeded |
30 |
Completed |
Failed |
31 |
Completed |
Canceled |
32 |
サポートされる状態は、AsyncOperationState 列挙体で定義されています。 事前バインド型 AsyncOperation クラスの場合、状態は AsyncOperation.StateCode 属性で示され、進捗状況は AsyncOperation.StatusCode 属性で示されます。 詳細については、「AsyncOperation エンティティ メタデータ」を参照してください。組織のエンティティ メタデータを表示するには、「組織のメタデータの参照」で説明されているメタデータ ブラウザー ソリューションをインストールします。 カスタマイズされていない組織のメタデータを、EntityMetadata.xlsx という名前の Excel ファイルで見ることもできます。このファイルは、ダウンロードした SDK の最上位のフォルダーに含まれています。。 進捗状況は、Microsoft Dynamics 365 Web アプリケーションの [システム ジョブ] グリッドの [ステータス] フィールドに示されています。 [システム ジョブ] の [その他の操作] メニューのいずれかのメニュー項目を選択すると、非同期操作の状態を対話的に変更できます。 許可されるアクションには、キャンセル、再開、延期、一次停止などがあります。
次の図は、サポートされている、非同期操作の状態の遷移を示しています。
非同期操作の状態は、図に示すような特定のパスに沿っている場合にのみ、別の状態に変更できることに注意してください。Microsoft Dynamics 365 Web アプリケーションを操作しているユーザーによって開始されるパスもあれば、Microsoft Dynamics 365 プラットフォームによって、通常の非同期キュー プロセスの一部として開始されるパス、または Web サービス呼び出しによって開始されるパスもあります。 たとえば、非同期操作の状態を、中止からロックに直接変更することはできません。
ロック状態とは、AsyncOperation インスタンスが非同期サービスによって使用されている状態を指します。 ロックされている間は、それを別のサービス インスタンスが使用することはできません。 これにより、インスタンスが複数回 (たとえば、2 つの異なる非同期サービスによって) 実行されることを確実に防ぐことができます。
AsyncOperation の状態の取得と更新
通常、非同期操作の状態の監視と更新は、Microsoft Dynamics 365 Web アプリケーションの [システム ジョブ] グリッドを使用して実行します。 ただし、SDK を使用して、同じタスクを実行するコードを記述することもできます。
非同期操作の状態の読み取り
AsyncOperation を RetrieveMultiple メソッドを使用して名前で取得するか、Retrieve メソッドを使用して ID で取得します。
AsyncOperation.StateCode 属性を読み取ります。
状態コードの変更
取得した状態コードの属性を、許可された操作状態に従って新しい値に変更します。AsyncOperation.PostponeUntil 属性を変更することもできます。
Update を呼び出して、データベースのこれらの属性値を変更します。
上記の操作は、Execute メソッドと適切な要求メッセージを使用して実行することもできます。AsyncOperation と AsyncOperation.StateCode 以外の AsyncOperation.PostponeUntil の属性は、読み取り専用とする必要があります。
定期的なシステム ジョブ
ほとんどのシステム ジョブは、キャンセル、一時停止、または再開することができません。 このような制限があるシステム ジョブの一部を以下に示します。 最初の列の値は AsyncOperation のエンティティの OperationType 属性の値です。
非同期操作の種類(オプション値) |
操作の説明 |
---|---|
22 |
組織の最大記憶域サイズの計算 |
18 |
組織の記憶域サイズの計算 |
19 |
組織のデータベース統計の収集 |
20 |
組織規模統計の収集 |
16 |
組織統計の収集 |
9 |
SQM データ収集 |
25 |
組織のフル テキスト カタログ インデックス |
31 |
記憶域制限の通知 |
24 |
統計の更新間隔 |
27 |
契約の状態の更新 |
サポートされる非同期処理の種類の全一覧については、AsyncOperation エンティティ メタデータを参照してください。組織のエンティティ メタデータを表示するには、「組織のメタデータの参照」で説明されているメタデータ ブラウザー ソリューションをインストールします。 カスタマイズされていない組織のメタデータを、EntityMetadata.xlsx という名前の Excel ファイルで見ることもできます。このファイルは、ダウンロードした SDK の最上位のフォルダーに含まれています。
関連項目
Microsoft Dynamics 365 での非同期サービス
AsyncOperation (システム ジョブ) エンティティ
非同期操作での依存関係および実行順序
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 著作権