OutSystems Associate Reactive Developer試験のポイント解説!(vol.26)

  • 公開日:
  • 最終更新日:

OutSystems Associate Reactive Developerとは、OutSystemsの技術者としてのスキルを証明する資格の一つです。OutSystemsの開発に必要な基礎的な知識を問う問題が多く、初心者の方が勉強する資格に適しています。また、さらに高度な資格(Web Developer Specializationなど)を受験するために必須な資格となっています。
本ブログでは、これからAssociate Reactive Developer試験を受験する方に向けて、OutSystems社が提供している自己学習型オンライントレーニングコンテンツであるGuided Pathだけではつまずきやすいポイントを、実例を用いて解説します。

OutSystems Associate Reactive Developer試験のポイント解説①「画面のライフサイクル」

OutSystemsでは、画面/ブロックは一連のライフサイクルに従います
*画面のライフサイクルの基礎については、Guided Path(画面イベント)をご参照ください。

Guided Pathでは画面イベントのトリガータイミングやユースケースが説明されていますが、どのように画面イベントでトリガーするアクションを作成するのでしょうか?
画面イベントの中でもOn Initialize、On Ready、On Render、On Destroyの4つは画面イベントを使用したいScreenで使用することができます。

今回はOn Readyイベントを使って入力ウィジェットにフォーカスを設定したいと思います。
画面を作成し、Inputウィジェットを2つ配置、ローカル変数を設定します。

Publish後、Open in browser からアプリケーションを開くと、2つの入力欄ができていることが確認できます。
画面に遷移しただけでは入力欄がフォーカスされてないため、すぐに入力することができません。

次はOn Readyイベントを使用して画面の初期表示時に自動で左側の入力欄をフォーカスしてみましょう。
Service Studioに戻り、作成している画面イベントからOn Readyを選択します。
すると、On Readyクライアントアクションが作成されます。
このアクションにOn Readyでの処理を記述していきます。
自動作成されるコメントには、AggregateやData Action等のサーバーにアクセスする処理を行わないという注意が書かれています。

[Input]ウィジェットにフォーカスをセットしていきます。
ロジックタブの[Client Actions]→[OutSystems UI]→[Accessibility]内にある[SetFocus]アクションをフロー上にドラッグ&ドロップします。

[SetFocus]アクションはインプットパラメータにウィジェットのIdを入れることで、そのウィジェットをフォーカスするようにしてくれます。
画面左側のInputウィジェットIdである[Input_TextVarId]を選択し[Publish]します。
ウィジェットの名前は[Service Studio]でウィジェットをクリックする、ウィジェットツリーを確認する等で調べることができます。

アプリケーションを開くと、画面遷移直後から左側の入力欄がフォーカスされていることが確認できます。

On After FetchAggregateとData Actionで使用することができます。
On After FetchはGuided Path(オンデマンドでのデータ取得)にあるように、Aggregate、Data Actionで取得したデータをもとにさらにデータを取得したりすることに活用できます。

OutSystems Associate Reactive Developer試験のポイント解説②「サイトプロパティ」

サイトプロパティは一定値を持つグローバル変数です。サイトプロパティは環境(開発/テスト/本番)ごとで値を変更することができます。ここまでの基礎的な内容はGuided Path(サイトプロパティ)でも説明されていますが、本章では実際のサイトプロパティの値の変更方法を解説します。

サイトプロパティの値の変更はOutSystemsの管理コンソールであるService Center内で、行うことができます。この際アプリケーションの再Publishは不要です。

1. Service Studioでサイトプロパティを作成したモジュールを開いた状態で、上部の歯車マークをクリックし、Service Centerでそのモジュールの設定画面を開きます。
2. その中の[Site Properties]をクリックすると作成したサイトプロパティが確認できます。


3. その環境で設定したいサイトプロパティの値(Effective Value)を入力してApplyすることで、サイトプロパティの変更ができます。

Service Centerで設定しない場合は、サイトプロパティを作成した際に設定されたDefault Valueが適用されます。

OutSystems Associate Reactive Developer試験のポイント解説③「Aggregateでのレコード集約」

Aggregateとは、画面やロジックの中で使用することができるデータ取得アクションのことです。データベースから取得するテーブル、それらの結合条件、絞り込み条件、ソート条件の設定を行うことができます
*Aggregateの基礎はGuided Path(Aggregateの基本高度なAggregate)をご参照ください。

Aggregateは、レコードを集約して、それらの情報から 最大値(Max)/最小値(Min)/個数のカウント(Count)/合計値(Sum)/平均(Average) を取得することができます。レコードの集約については高度なAggregateの中で触れられていますが、実際のService Studio上ではどのような操作をすればよいのでしょうか?

例えば、各映画館のチケット販売実績から映画ごとの売り上げを計算するAggregateを実装するとします。

チケットレコードには購入された映画レコードの識別子、その購入数、買われた映画館レコードの識別子の列があります。これらを結合して、下のプレビューからMovieIdを右クリックし[Group by MovieId]をクリックします。


するとMovieIdを基準としてレコードが集約されたことがわかります。

レコードの集約を行うと、Aggregateの出力は上部にあるOutputに該当する部分のみとなり、その他の列は出力されません。
続いて映画の売り上げを計算していきます。計算アトリビュートを使用しチケットの値段と個数から計算された1購入ごとの売り上げを計算します。作成した計算アトリビュートを右クリックし、[Sum]をクリックします。

映画ごとの売り上げを計算することができました。Outputには計算された合計値が追加されていることが分かります。

OutSystems Associate Reactive Developer試験のポイント解説④「例外処理」

OutSystemsで開発するアプリケーション内で制御できる例外のことをExceptionといいます。
*Exceptionの基礎はGuided Path(例外)をご参照ください。

Exceptionが発生するとそれぞれに対応するException Handler(例外をキャッチするハンドラ)に移動します。トレーニングの演習では意識しないですが、Exception Handlerによる例外処理には順番があり、これを理解していないと例外を正しく処理することができません。そこで本章では、Exception Handlerの移動順について解説します。

まずは、Exception Handlerがあるアクションの中で発生する例外の扱いについて解説します。

Exceptionは以下のように階層構造になっています。

Exceptionは対応するHandlerにはもちろんキャッチされますが、上の階層のHandlerもキャッチできます。例えば、Invalid Login ExceptionはSecurity Exception Handler でキャッチできますし、定義されていない場合はAll Exception Handlerでキャッチできます。また、同アクション内にExceptionをキャッチできるHandlerが複数ある場合は、対応するHandlerが最優先でキャッチします。以下のアクションフローの場合だと、Not Registered ExceptionはNot Registered Exception Handlerにキャッチされますが、その他のExceptionはAll Exceptions Handlerにキャッチされます。

では、Handlerが1つもないアクション内でExceptionが発生した時はどうなるでしょうか?
そのような場合、次の順番でException Handlerが探され、最初にキャッチしたHandlerが実行されます。
1. 同アクション内のException Handler
2. 呼び出し元のException Handler(呼び出し元アクションがなくなるまで)
3. 同UI Flow内のOn Exception ActionのException Handler
4. グローバル例外ハンドラ(デフォルト:Common UI Flow内のOn Exception Action)

Common UI Flow内のOn Exception Actionはデフォルトでモジュールのグローバル例外ハンドラに設定されており、そのアクション内にAll Exceptions Handlerがあるため、すべての例外は最終的には必ずキャッチされます。

まとめ

ここまで、Associate Reactive Developer資格取得のためのポイントをいくつか紹介してまいりました。Associate Reactive Developerの試験範囲はGuided Pathの内容で大半はカバーされていますが、実際に動かしてみないと理解しづらい箇所や気付きも多くあると思います。本ブログが勉強の一助になっていれば幸いです。
Associate Reactive Developerの資格を取得することはOutSystemsとともに歩む開発の道の最初の一歩にすぎません。実際に役立つ業務アプリケーションを開発するには、さらなる知識が必要です。

弊社ではOutSystemsの活用をお客様の社内で推進するためのサポートとして開発者の技術支援も行っております。ご興味のある方は、是非、弊社までお問い合わせください。
電通総研は、ローコード開発プラットフォーム:OutSystemsの導入/活用を支援する様々なサービスメニューをご用意しております。
ローコード開発のはじめの一歩を、電通総研と一緒に踏み出してみませんか?
https://itsol.dentsusoken.com/outsystems/inquiry/

本ブログは、2024年4月1日時点の情報をもとに作成しています。
OutSystemsに関する詳しいお問い合わせは、弊社Webサイトからお問い合わせください。