4D for Mobile チュートリアル – アクションの作成

アクションによって、ユーザーは顧客の住所を変更したり、新しいコンタクトを追加したり、写真を修正したりなど、アプリケーションをより細やかに操作することができます。

4D ランゲージにおいては、アクションを使用するとエンティティやエンティティセレクションの追加、編集、削除を可能になります。また、単純に4D Serverのメソッドを実行することもできます。

なぜ、アクションなのか

追加、編集、削除のような単純な操作のために、なぜアクションを定義する必要があるのか、不思議に思うかもしれません。

モバイルデバイスは、インターネットに接続されていないオフラインの状態でも動作し得る、という点に注意してください。ネットワークに再接続すると、モバイルデバイスはデータの同期を行います。しかし、その間にレコードは別の人によって変更されているかもしれませんし、実際のビジネスにおける例では、商品の在庫がなくなっていたり、支払いをすでに完了していたりする可能性があります。
そこで、アクションを使用することでビジネスロジックの一貫性を保ち、またそれをチェックすることができます。4D Serverでアクションを実行する前に、それが有効かどうかをチェックし、妥当でなければ別の方法を検討することができます。あるいはそのアクションを拒否し、モバイルユーザーに通知することもできます。

最初のアクションを定義する

このチュートリアルでは、ステータスと進捗率を変更する簡単なアクションの処理方法を説明しています。

このチュートリアルには、’On Mobile App Action‘ データベースメソッドと、そのデータベースメソッドから呼び出される ‘modifyStatus’ などの4Dメソッドが用意されています。ビデオでは、プロジェクトにアクションを追加し、それを使用してエンティティやエンティティセレクションを変更し、それらをデータベースメソッドにリンクする方法を紹介しています。

アクション引数の使用

このチュートリアルでは、さらに一歩踏み込んで、引数を使ったアクションを作成します。

  • 新しいタスクを作成するための 追加 アクション。
  • アプリケーションから既存のタスクを編集するための 編集 アクション。
  • エンティティを削除するための 削除 アクションです。

 

また、エンティティの変更も順を追って説明します。

オフラインアクション

アプリケーションのユーザーは、たとえオフラインで作業しているときでも、どこでもレコードを修正することができます。これらのタスクは、ネットワークにアクセスできるようになるまで、すべて「保留中のアクション」リストに置かれます。ユーザーがオンラインになると、保留中のアクションはすべて一貫して同期され、実行された後、完了したアクションのリストに表示されます。

拒否されたアクション

モバイルユーザーがサーバーに送信したアクションは、何らかの理由で拒否することができます。たとえば、送信されたアクションの引数がサーバー側で想定される値と一致しないことなどです。

その場合、statusTextとerrorプロパティを使用して、サーバー側で何らかの問題が発生したことをアプリユーザーに通知してフィードバックを送ることができます。その後、ユーザーは保留中のタスクを更新したうえで再度アクションを送信することができます。

次は…

これで完了です。これで、モバイルアプリケーションでエンティティやエンティティセレクションを追加、変更、削除する方法がお分かりいただけたかと思います。また、4Dメソッドを呼び出して、例えばメールを送信することができることもお分かりいただけたと思います。

さらに詳しく知りたい方は、ブログドキュメントをご覧ください。

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。