非同期操作の状態

 

公開日: 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 を使用して、同じタスクを実行するコードを記述することもできます。

非同期操作の状態の読み取り

  1. AsyncOperationRetrieveMultiple メソッドを使用して名前で取得するか、Retrieve メソッドを使用して ID で取得します。

  2. AsyncOperation.StateCode 属性を読み取ります。

状態コードの変更

  1. 取得した状態コードの属性を、許可された操作状態に従って新しい値に変更します。AsyncOperation.PostponeUntil 属性を変更することもできます。

  2. Update を呼び出して、データベースのこれらの属性値を変更します。

上記の操作は、Execute メソッドと適切な要求メッセージを使用して実行することもできます。AsyncOperationAsyncOperation.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. 著作権