最近のアクセス:
Composite の例

ここでは、Composite コマンドの例を示します。

例 1
この例では、GeneXus で Neighborhood Transaction オブジェクトの Delete システムイベントを自動的に作成する方法を示します。
Neighborhood
{
   NeighborhoodId*
   NeighborhoodName
   NeighborhoodInfo
}
Event 'Delete'
    Composite
        WorkWithDevicesNeighborhood.Neighborhood.Detail.Delete(NeighborhoodId)
        Return
   EndComposite
EndEvent
エンドユーザーが [ Delete ] ボタンをクリックすると、Neighborhood トランザクションの WorkWithDevicesNeighborhood が、関連付けられている Delete 関数を呼び出します。何かの理由で削除が正常に行われなかった場合、次の Return コマンドは実行されずに (つまり、List に戻らずに)、コントロールはそのビューにとどまります。
例 2
この例では、クライアントのメールの更新を解決し、処理に成功した場合はクライアントに SMS を送信します。ここでは次のトランザクションを使用します。
イメージ:17352.jpg
1. &ClientId と &ClientEMail をパラメーターで受け取るプロシージャーを作成します。その後、メールを更新して、標準の Messages ドメインから &Messages を返します。
For each
    where ClientId    = &ClientId
          ClientEMail = &ClientEmail
    when duplicate
          &Message.Type = MessageTypes.Error
          &Message.Description = "Email duplicated" + str(&ClientId)
          &Messages.Add(&Message)
          return
EndFor
ClientEmail は候補キー (一意) なので、このプロシージャーで更新する必要があります。「when duplicate」は例外で、Composite は例外のみをチェックするため、別のメールに同じ値が指定されている場合はエラーになり、&Messages 変数で報告します。
2. Client トランザクションに Work With パターンを適用します。
次のアクションを追加します:
a. 右クリックして [ アクションを挿入 ] を選択し、新しいアクション CheckEMail を追加します。
b. 次に、ボタンの [ Caption ] プロパティを CheckEMail に設定します。

イメージ:17292.jpg
c. このプロシージャーは、パラメーターで &ClientId と &ClientEMail を受け取ります。
3. ここでユーザーイベントのコードを記述します。コンテキストメニューで [ イベントへ移動 ] を選択し、次のコードを記述します。
Event 'UpdateEmail'
    Composite
           UpdateEMail.Call(ClientId,&ClientEmail,&messages)
           Interop.SendMessage("Your Email has been updated successfully in my database",ClientMobilePhone)
    EndComposite
EndEvent
ここでは Composite コマンドというコードブロックを開いています。このコードは、構成と同様に順番に実行されます。
最初の命令で、作成したプロシージャーを呼び出してから、Interop を呼び出して、デバイスに通知を送信します。詳しくは、「スマートデバイスの Interop の SendMessage メッセージを使用する方法」を参照してください。
UpdateEmail プロシージャーの呼び出しでエラーが発生した場合、コントロールは Interop に進まず、Exit コマンドが実行された場合と同様に返されます。さらに大きな一連のアクションがある場合でも、コントロールは同様に動作します。
記述:
Composite
    UpdateEMail.Call(ClientId,&ClientEmail,&Messages)
    Interop.SendMessage("Your Email has been updated successfully in my database",ClientMobilePhone)
EndComposite
これは次の記述と同等です。
UpdateEMail.Call(ClientId,&ClientEmail,&Messages)
For &message in &messages
    If &message.Type = MessageTypes.Error
        msg(&message.Description)
        Exit
    else
        Interop.SendMessage("Your Email has been updated successfully in my database",ClientMobilePhone)
        Exit
    EndIf
EndFor
注: プロシージャーを呼び出すときに、&Messages 変数に具体的な値を指定する必要はありません。ただし、プロシージャーで OUTPUT として宣言し、その名前をそのまま "Messages" にする必要があります。
Parm(parm1, parm2, parmn, Out:&Messages);

バッチ操作

通常どおり、Composite コマンド内でバッチモードでビジネスコンポーネントを呼び出す場合は、更新などのビジネスコンポーネントに応じた変数で作成します。
Composite
    &Cliente.Load(5)
    &Cliente.Name = "Wayne, Bruce"
    &Cliente.Save()
EndComposite

動画

イメージ:20668.png Events in Mobile Applications




サブページ
Created: 14/09/18 03:09 by Admin Last update: 23/04/24 18:04 by Admin
カテゴリ
Powered by GXwiki 3.0