最近のアクセス:
Synchronization.Send() 操作のエラー処理

スマートデバイス用オフラインアプリケーションでは、Synchronization.Send() 操作がある場合、デバイスはローカルで実行されるいくつかのビジネスコンポーネント (BC) の操作のリストをサーバーに送信します。サーバーは、後でこれらの操作を主要なデータベースに適用します。
BC の操作が結果としてエラーになる場合には、いくつかの理由があります: たとえば、デバイスではビジネスルールは成功しているが、サーバーデータベースでは失敗する、参照整合性の問題などです。

サーバーに変更を適用する方法

デバイスから送信される操作のリストを処理する "OfflineEventReplicator" という名前のプロシージャーがあります。
このプロシージャーの記述は次のとおりです:
parm(in:&GxPendingEvents, in:&GxSyncroInfo, out:&EventResults);
入力値の説明
  • &GxPendingEvents は、デバイスから送られるイベントです。
  • &GxSyncroInfo は、同期処理に必要な追加情報が含まれています。
  • &EventResults は、サーバーによって処理された各保留中のイベントの結果の集合です。

エラー処理の方法

送信操作でエラーが発生するたびに、GeneXus 開発者はアプリケーションの動作を制御する必要があります。
すべてのアプリケーションのエラーを通知し、必要な操作をプログラマーに許可する OfflineEventReplicator プロシージャーから自動的に呼び出される 2 つのプロシージャーがあります。
これらのプロシージャーは、ナレッジベースルートモジュール配下の GeneXus\SD\Synchronization フォルダ内にあります。KB でローカルに変更される可能性があるため、GeneXus モジュール内に存在しないことに注意してください。

GxOnPendingEventFailed

このプロシージャーは BC 操作がエラーで終了するたびに呼び出されます。
このプロシージャーの記述は次のとおりです:
parm(in:&PendingEvent, in:&BCName, in:&BCJson, in:&EventResult, in:&GxSyncroInfo, out:&Continue);
入力値の説明
  • &PendingEvent は GxSynchroEventSDT.GxSynchroEventSDTItem に基づいており、失敗したイベントに関する情報を含んでいます。
  • &BCName は VarChar(128) であり、ビジネスコンポーネントの名前を含んでいます。
  • &BCJSon は EventData に基づいており、失敗したイベントに関連するビジネスコンポーネントの JSON 表現を含んでいます。
  • &EventResult は GxSynchroEventResultSDT.GxSynchroEventResultSDTItem に基づいており、失敗したイベントに関する本質を含んでいます (フィールド: EventStatus および EventErrors)。
  • &GxSynchroInfo は OfflineEventReplicator プロシージャーから渡されます。
  • &Continue は、OfflineEventReplicator プロシージャーが次の項目の処理を続けるべきか (True を返します) どうか、または同期を中止する必要があるかどうか (False を返します) を示すブール値です。
既定では、GeneXus の開発者がそれぞれの環境下で実行する操作を表示できるように、このプロシージャーは (&Continue が True に設定されている場合を除き) 空に設定されています。

GxBeforeEventReplicator

このプロシージャーは、BC 操作を処理する前に OfflineEventReplicator によって呼び出されます。
記述は OfflineEventReplicator のものと同じです。
プロシージャーを変更するには、ログ情報を追加します。処理するイベントのリストを変更することもできますが、その場合は注意して行ってください。
: このプロシージャーは GeneXus 16 Upgrade 1 以降で利用できます。

警告: 以前のバージョンの GeneXus から移行した既存のナレッジベースの場合、このプロシージャーは <genexus_installation_directory>\Packages\Patterns\WorkWithDevices\Resources\SDApi.xml からインポートする必要があります。

GxAfterEventReplicator

このプロシージャーはすべてのビジネスコンポーネントの操作を処理した後で、すべての操作が問題なく完了したか、問題が発生したかを表示するために呼び出されます。&Continue が False で終了した GxOnPendingEventFailed プロシージャーを呼び出す場合であっても、このプロシージャーが呼び出されます。
このプロシージャーの記述は次のとおりです:
parm(in:&EventResults, in:&GxSyncroInfo);
入力値の説明
  • &EventResults は、デバイスにコレクションを返し、同期結果に関するすべての情報を含む GxSynchroEventResultSDT に基づいていて、また、
  • &GxSynchroInfo は、OfflineEventReplicator プロシージャーから渡されます。




サブページ
Created: 15/10/29 21:26 by Admin Last update: 21/05/21 03:34 by Admin
カテゴリ
Powered by GXwiki 3.0