例: Itron現在値読取プロセス

この項では、非同期コマンドの例としてOpenWayアダプタでサポートされる現在値読取コマンドを示します。

Itron www.itron.com.ami.2008.10.data.wsdl定義には、現在値読取プロセスの一連のコマンドが含まれています。Smart Grid Gateway Adapter for Itron OpenWayは、ContingencyReadByEndpointsメソッドを呼び出してプロセスを開始します。返信には、フロー全体を識別する「要求トークンID」が含まれており、以降の通信で共有されます。Itron側では、使用量およびイベントを収集するためのジョブが構成されます。ジョブが開始していることをコール元(SGG)に知らせるために、Itronは「State = Initialized」が指定されたStatusChanged要求(www.itron.com.ami.2008.10.common.wsdlに定義されている)を送信します。Itronは別のStatusChanged要求を送信して、使用量を収集するプロセスが進行中であることをSGGに知らせます。使用量が収集されると、Itronは1つ以上のDataArrived要求をSGGに送信します。Itronは、使用量に関する内部要求を作成した後、最終的なStatusChanged要求をSGGに送信します。その完了通知は、プロセスで発生したエラーに関する情報を含めた返信(GetContingencyReadByEndpointsResult)を送信する必要があることをSGGに知らせます。

次のイメージは、このコマンドで使用されるプロセス・フローを示しています。

次に、このコマンドのSmart Grid Gateway実装の重要な機能の要約を示します。概念の多くは、カスタム同期コマンドを作成する際に適用できます。

コマンド活動 — 現在値読取(インターバル)

ビジネス・オブジェクト: D1-OnDemandReadInterval

ライフサイクルおよびアルゴリズム

次の表は、現在値読取(インターバル)コマンド活動で使用される重要なアルゴリズムの一部を示しています。

ライフサイクルの状態 アルゴリズム

検証

ここに示す重要な機能は、特定のアルゴリズムではなく、プロセス・レベルで検証ロジックを実行する機能です。

  • D1-VALDEVMC – 設備に適切な計量コンポーネントがあることの検証: このアルゴリズムは、設備に少なくとも1つの計量コンポーネントがあり、その計量コンポーネント・タイプがインターバル・タイプとして登録されていることを確認します。

  • D1-VALIDCMD – 現在値読取を実行するヘッドエンド機能の検証(インターバル): このアルゴリズムは、ヘッドエンド・システムに現在値読取要求をサポートする機能があるかどうかをチェックします。コマンドがサポートされている場合は、アウトバウンド通信ビジネス・オブジェクトが返されます。

  • D1-CHKMST – 既存の測定のチェック: このアルゴリズムは、指定された期間の完全な測定がデータベースにすでに存在しているかどうかをチェックします。

接続準備完了

  • D1-CODRIOB – OnDemandReadのアウトバウンド通信の作成(インターバル): このアルゴリズムは、処理役割およびアルゴリズム・パラメータに基づいて、アウトバウンド通信ビジネス・オブジェクトを作成します。アルゴリズムは、処理役割パラメータに定義されているアウトバウンド通信ビジネス・オブジェクトを検索し、そのビジネス・オブジェクトのインスタンスを作成します。このビジネス・オブジェクトの場合、パラメータはD1INであり、D8-ReadIntervalDRビジネス・オブジェクトのインスタンスを作成する必要があります。

アウトバウンド通信レコードが作成されると、活動ビジネス・オブジェクトは「接続準備完了」状態から「通信進行中」状態に移動します。アウトバウンド通信が完了すると、次のデフォルト状態である「接続準備完了」に活動が移動します(活動は「通信進行中」から「接続準備完了」に戻ります)。アウトバウンド通信では、活動ビジネス・オブジェクトの「isOnDemandReadComplete」フラグ値も設定され、この場合は、特定の処理役割に対するアウトバウンド通信が作成されたことを示します。条件がtrueの場合、処理は次のアルゴリズムに移動します。

  • D1-CODRSRTOB – 完了フラグに基づく現在値読取結果アウトバウンドの作成: このアルゴリズムは、この状態の2番目のアルゴリズムで、アウトバウンド通信の送信を担います。パラメータとして渡された完了フラグがtrueの場合は、2番目のアウトバウンド通信を作成します。この例では、偶発検針操作の結果を求める2番目の要求をItronに送信するために、D8-ReadOnDemandReadResultDRのインスタンスを作成する必要があります。

測定の待機中

  • D1-RIINTM – インターバル初期測定の取得: このアルゴリズムは、要求された測定期間の各インターバル計量コンポーネントについて最新のIMDを取得します。

アウトバウンド通信 — Itron - 偶発検針(インターバル)

ビジネス・オブジェクト: D8-ReadIntervalDR

スキーマ

Webサービス要求および応答の通信のペイロードが含まれているスキーマの部分は、sendDetail要素(D8-ContingencyReadRequestDRデータ領域を使用して構築された)およびresponseDetail要素(D8-ContingencyReadResponDtlDAデータ領域を使用して構築された)です。Itron構造に準拠するXMLの作成または解読に使用されるXSLは、これらの要素を基礎として使用します。

ライフサイクルおよびアルゴリズム

次の表は、偶発検針アウトバウンド通信で使用される重要なアルゴリズムの一部を示しています。

ライフサイクルの状態 アルゴリズム

検証

  • D1-VALCOMTP – 通信タイプの検証: このアルゴリズムは、通信の通信タイプが移入されていることを確認します。

応答待ち

  • D8-PSDMRSCDR – Itron - エンドポイントによる偶発検針の送信詳細の移入直接ルート: このアルゴリズムは、Webサービスの入力に必要な項目をsendDetail要素に移入します。

  • D8-COUTMINDR – Itron - アウトバウンド・メッセージ偶発検針の作成(インターバル): このアルゴリズムは、入力処理役割に基づいて作成する正しいアウトバウンド・メッセージを決定します。ヘッドエンド・システムからの返信は、responseDetails要素に保存され、アウトバウンド・メッセージおよび結果(成功か失敗か)を作成するためのログ・エントリが作成されます。

応答エラー

  • D8-RBORINTER – Itron - エラーの検針(インターバル)ビジネス・オブジェクトの再試行: このアルゴリズムは、エラーが発生した場合に通信を再試行する手段を提供します。

完了

  • D1-UCFLAGTPA – 現在値読取完了フラグの更新および親活動の遷移: 要件が満たされると、このアルゴリズムは親活動の完了フラグを「true」に設定し、次の状態に遷移します。

インバウンド通信 — Itron - StatusChanged

ビジネス・オブジェクト: D8-StatusChanged

このビジネス・オブジェクトは、インバウンドのStatusUpdate要求を処理します。最初の要求で作成された要求トークンIDが含まれています。「State = Completed」のスキーマ値および「取消済」または「成功」の結果を受け取ると、活動の次のコマンドをトリガーします。現在値読取の場合、次のコマンドはGetContingencyReadByEndpointsResultです。

スキーマ

sendDetailまたはresponseDetail要素が含まれている他の通信とは異なり、このビジネス・オブジェクトには、StatusChanged XSD定義の要素にマップする子要素を保持する入力要素が含まれています。

ライフサイクルおよびアルゴリズム

次の表は、ステータス変更済読取インバウンド通信で使用される重要なアルゴリズムの一部を示しています。

ライフサイクルの状態 アルゴリズム

検証

  • D8-IDNPOCAA – 非同期インバウンドの親アウトバウンド通信の検索: このアルゴリズムは、要求トークンIDを使用して現在のインバウンド通信に関連付けられている最初のアウトバウンド通信を検索します。

応答の評価

  • D8-EVALSTCHG – Itron - StatusChangedに対する応答の評価: このアルゴリズムは、到着したStatusChanged要求の値に基づいてタスクを実行します。ステータスが「完了」で、結果が「成功」または「失敗」の場合、親アウトバウンド通信は完了しています。これにより、次のアウトバウンド通信を開始する活動のアラートが発行されます。

アウトバウンド通信 — Itron - 現在値読取結果

ビジネス・オブジェクト: D8-ReadOnDemandReadResultDR

これはItron偶発検針API内にある2つのアウトバウンド要求の2番目です。アウトバウンド要求は要求トークンIDを送信します。応答には、偶発検針プロセスの実行時にItronサーバーによって収集されたエラー情報が含まれます。

スキーマ

Webサービス要求および応答の通信のペイロードが含まれているスキーマの部分は、sendDetail要素(D8-ReadODRResultRequestDRデータ領域を使用して構築された)およびresponseDetail要素(D8-ReadODRResultResponseDRデータ領域を使用して構築された)です。Itron構造に準拠するXMLの作成または解読に使用されるXSLは、これらの要素を基礎として使用します。

ライフサイクルおよびアルゴリズム

次の表は、現在値読取結果アウトバウンド通信で使用される重要なアルゴリズムの一部を示しています。

ライフサイクルの状態 アルゴリズム

応答待ち

  • D8-PSDODRRDR – Itron - 現在値読取結果の送信詳細の移入: このアルゴリズムは、アウトバウンド・メッセージのsendDetail要素を移入します。これは、主に要求トークンIDで構成されます。

  • D8-CODRROBDR – 現在値読取結果用のアウトバウンド・メッセージの作成: このアルゴリズムは、入力処理役割に基づいて作成する正しいアウトバウンド・メッセージを決定します。ヘッドエンド・システムからの返信は、responseDetails要素に保存され、アウトバウンド・メッセージおよび結果(成功か失敗か)を作成するためのログ・エントリが作成されます。

応答の評価

  • D8-EVODRRSLT – 現在値読取結果用のアウトバウンド・メッセージの作成: このアルゴリズムは、Itronからの応答を評価してコマンドが成功したか失敗したかを判断します。

  • D8-VDVCMCDR – 設備に適切な計量コンポーネントがあるかの確認: このアルゴリズムはチェックを実行して、検針に適切な計量コンポーネントがあることを確認します。

サービス・スクリプト: Itron - DataArrived要求

このGroovyベースのサービス・スクリプトは、着信するDataArrived要求を処理します。構成に基づいてペイロードをファイル格納場所(クラウド実装の場合はクラウド・オブジェクト格納バケットを含む)に保存します。

スキーマ

スキーマは、Itron DataArrivedメッセージに密接にマップしています。D8-DataArrivedデータ領域が含まれます。

ステップ

ステップ10データの編集 – メインGroovyメソッドの呼出し

このステップでは、他のOUAFオブジェクトからGroovyスクリプトをトリガーする方法を示します。他のプログラミング言語のメイン・メソッドに似ています。この場合、Webサービスの起動メソッドによってコールされます。

ステップ20 – Groovyインポート

このステップでは、スクリプトに必要な他のクラスをインポートします。

ステップ30 – Groovyメンバー

  1. マスター構成オブジェクトを検索します

  2. マスター構成を使用してファイル格納詳細を検索します

    1. ファイル・アダプタ・タイプを検索します

    2. 構成された生成スクリプトを使用してファイル名を計算します

    3. バケット、ファイル名および他の詳細を使用して所定のURLを計算します

  3. FileStorageAdapterビジネス・サービスを使用して目的の場所にファイルを保存します。

メッセージ・センダーXSL

現在値読取アウトバウンド通信によって作成されるアウトバウンド・メッセージでは、次のXSLファイルを使用します。

ContingencyReadByEndpoints

  • 要求XSL: D8-ContinegencyReadByEndpointsRequest.xsl
  • 応答XSL: D8-ContingencyReadByEndpointsResponse.xsl

GetContingencyReadByEndpointsResult

  • 要求XSL: D8-GetContingencyReadByEndpointsResultRequest.xsl
  • 応答XSL: D8-GetContingencyReadByEndpointsResultResponse.xsl

メッセージ・センダーの作成の詳細は、「メッセージ・センダーの作成」を参照してください。

インバウンドWebサービス

Itron現在値読取プロセスでは、次のインバウンドWebサービスを使用します。

D8-RequestStatusChangedService

  • 操作名: StatusChanged
  • スキーマ名: Itron — ステータス変更済ビジネス・オブジェクト
  • 要求XSL: D8-RequestStatusChangedServiceRequest.xsl
  • 応答XSL: D8-RequestStatusChangedServiceResponse.xsl

D8-DataSubscriberService

  • 操作名: DataArrived
  • スキーマ名: Itron — DataArrived要求スクリプト
  • 要求XSL: D8-DataSubscriberServiceRequest.xsl
  • 応答XSL: D8-DataSubscriberServiceResponse.xsl