最近のアクセス:
Runtime 外部オブジェクト

GeneXus.Common.Runtime 外部オブジェクトを使用して、さまざまな目的で特定の実行時プロパティを取得または設定できます。

プロパティ

[ Environment ] プロパティ

アプリケーションがクライアント側でアクションを実行するときと、サーバー側でアクションを実行するときを実行時に区別できます。その目的は、開発者がプログラムでシステムのビジネスロジックに従って決定を行えるようにすることです (例: レコードの挿入タイムスタンプの決定、同期中にクライアントとサーバーで異なる場合がある)。
呼び出されたアクションが実行される環境の情報を指定する RuntimeEnvironment ドメイン (後述) に基づきます。
  SD オンライン SD オフライン Web
Start イベント Server Device Server
Refresh イベント Server Device Server
Load イベント Server Device Server
Procedure オブジェクト Server Device Server
ビジネス コンポーネント ルール Server Device Server
ClientStart イベントナビゲーション開始イベント Device Device N/A
ユーザー定義イベント Device Device Browser

RuntimeEnvironment ドメイン

使用可能な実行時環境を示す列挙型ドメインです。
Server サーバー側
Device スマートデバイス環境のクライアント側
Browser Web 環境のクライアント側

[ ExitCode ] プロパティ

このプロパティでは、プロセスが、たとえば [ Call protocol ] プロパティを Command Line に設定したプロシージャーの 1 つを停止したときに、終了コード (errorlevel) を設定できます。このプロパティは通常、バッチプログラムのフローを制御するのに使用されます。
既定値は 0 です。
異常停止 (例外) したプロセスの終了コードは 1 です。
注: 停止したプログラムによって設定された終了コードは、Windows バッチファイルの '%ERRORLEVEL%' 変数や Linux シェルの '$?' を使用して読み取ることができます。

参考情報

このセクションには、Runtime 外部オブジェクトが役立つ簡単なユースケースを示します。
  1. [ Environment ] プロパティ - 同期中の時間差
    オフライン スマート デバイス アプリケーションで、新しいレコードがデータベースに挿入されるとき、そのレコードにはデバイスのタイムスタンプ (実際のもの) が使用されますが、同期後にサーバーでは別のタイムスタンプが維持されます。この問題は、レコードを物理的に挿入するタイミングを開発者が制御することで回避できます。

    次のトランザクションがあるとします:
    Task
    {
       TaskId*      : Numeric(4.0)
       TaskAbstract : Character(200) 
       TaskCreated  : DateTime
    }
    Rules
       noaccept(TaskCreated);
       TaskCreated = now() if insert;
    アプリケーションがオフラインの場合、TaskCreated タイムスタンプの値はどちらになりますか。レコードがオフラインのデータベースに挿入された時点ですか、それともサーバーのデータベースに挿入された時点ですか。この問題を回避するために、次に示すように、TaskSynced 項目属性 (これも DateTime ベース) を指定し、両方のケースを区別できます:
    Task
    {
       TaskId*      : Numeric(4.0)
       TaskAbstract : Character(200) 
       TaskCreated  : DateTime
       TaskSynced   : DateTime
    }
    Rules
       noaccept(TaskCreated);
       noaccept(TaskSynced);
       TaskCreated = now() if insert and Runtime.Environment = RuntimeEnvironment.Device;
       TaskSynced  = now() if insert and Runtime.Environment <> RuntimeEnvironment.Device;
  2. [ Environment ] プロパティ - オフライン通知
    スマート デバイス アプリケーションがオフラインアーキテクチャで動作するとき、通知を送信するプロセスを制御して、デバイスではなくサーバーから通知が送信されるようにする必要があります。この問題は、サーバーからの場合にのみ実行を限定する (RuntimeEnvironment.Server) ことで回避できます (ユースケース (1) に似ています)。
  3. [ ExitCode ] プロパティ - Errorlevel 設定
    次のプロシージャーで終了コードが返されます (コンソールへの書き込みも行われます)。
    データを正常に保存できた場合: プロシージャーで終了コード 0 が設定され、コンソールに "Data has been saved successfully" と書き込まれます。
    データを保存できなかった場合: プロシージャーで終了コード 2 が設定され、コンソールに "Data could not be saved" と書き込まれます。
    処理されなかったという例外が発生した場合 ('Client BC' がゼロ除算の場合): プロシージャーで終了コード 1 が設定され、コンソールに例外の詳細が書き込まれます。
    &Client.Id = 1
    &Client.Name = "John"
    &Client.Save()
    If &Client.Fail()
        rollback
        msg("Data could not be saved",status)
        GeneXus.Common.Runtime.Exitcode = 2
    else
        commit
        msg("Data has been saved successfully",status)
    endif

適用範囲

プラットフォーム スマートデバイス (Android、iOS)、Web (Java、.NET)

使用可能バージョン

この外部オブジェクトは、GeneXus 15 以降で利用できます。
[ ExitCode ] プロパティは、GeneXus 16 Upgrade 5 以降で利用できます。



サブページ
Created: 17/05/30 19:03 by Admin Last update: 21/11/11 17:55 by Admin
カテゴリ
Powered by GXwiki 3.0