最近のアクセス:
[Last Modified Date Time Attribute] プロパティ

レコードの最終変更日時を示す DateTime データタイプの項目属性を指定します。

適用範囲

オブジェクト: Transaction
対応しているプラットフォーム: スマートデバイス (Android、iOS)

説明

この項目属性は、サーバーからデバイスに同期する必要がある行を判断するために、タイムスタンプアルゴリズムで参照されます。つまり、デバイスでは、最終変更日時が前回の同期のタイムスタンプより新しい行が同期されます。
次回の同期時には、デバイスからサーバーにタイムスタンプが送信され、そのタイムスタンプと [ Last Modified Date Time Attribute ] の値が比較されます。前回の同期以降に変更または追加されたすべての行が考慮されます。

実行時/設計時

このプロパティは設計時にのみ適用されます。

Chat トランザクションオブジェクトが次のように定義されているものとします。
イメージ:37099.png
ここから分かるように、次のようにプロパティが設定されています (タイムスタンプによる同期を使用する場合は、両方のプロパティが必要です)。
また、2 人の友人がチャットシステムで通信しており、それぞれのデバイスで次の行が同期されたとします。
friend1   friend2   2017/10/12 0:00:01    False   Happy birthday!
friend2  friend1  2017/10/12 0:00:02  False  Thks =) See you tomorrow at the dance club?
friend1  friend2  2017/10/13 0:05:47  False  Mom ¬¬ I'm fine.Write u later.Bye

数分後、friend1 は、Mom 宛てのメッセージを間違えて friend2 に送信したことに気づきます。幸い、このチャットシステムでは、送信したメッセージの内容を変更できるため、friend1 はテキストを「Hey dude! I'm at the dance club. Where r u?」に変更することに決めます。
一般に、開発者がこの機能を実装する場合、New コマンド (非推奨) を使用するか、次のようにプロシージャー内でビジネスコンポーネントの Load メソッドCommit コマンドを組み合わせます。
parm(in:&From, in:&To, &DateTime, in:&Text);

&Chat.Load(&From,&To,&DateTime)
&Chat.ChatMessage = &Text //  'Hey dude! I'm at the dance club. Where r u?"' でインスタンス化
&Chat.Save()
commit
開発者は、チャットテーブルにこの新しい行を挿入すると、ターゲットデバイスに変更が自動的に反映されるものと想定します。ただし、タイムスタンプによる同期が使われている場合、最後のメッセージが friend2 のデバイスに既に同期されているため、更新後の行は送信されません (ハッシュ比較は行われません)。したがって、適切なデータ更新 (挿入) メカニズムを開発者が実装する必要があります。この場合、上記のプロシージャーを次のコードに変更する必要があります。
&Chat.Load(&From,&To,&DateTime) 
&Chat.ChatMessage = &Text   // 'Hey dude! I'm at the dance club. Where r u?"' でインスタンス化
&Chat.ChatTimestamp = now() // 最終更新日時 (値 10/13/17 12:06:17 AM)
&Chat.Save() 
commit
開発者が行を更新すると、両方のデバイスのオフラインデータベースに次のレコードが反映されます (friend1 にとっては好都合です)。
friend1   friend2   2017/10/12 0:00:01    False   Happy birthday!
friend2  friend1  2017/10/12 0:00:02  False  Thks =) See you tomorrow at the dance club?
friend1 friend2  2017/10/13 0:06:17  False  Hey dude! I'm at the dance club. Where r u?

プロパティの変更の適用方法

プロパティの値を設定したときに、それに対応する変更を適用するには、 [ すべてリビルド ] を実行します。

使用可能バージョン

このプロパティは GeneXus 15 Upgrade 8 以降で使用できます。

参考情報



サブページ
Created: 18/10/29 01:06 by Admin Last update: 21/05/21 02:40 by Admin
カテゴリ
Powered by GXwiki 3.0