OutSystems公式のWebアプリケーション開発トレーニングコースについてのメモです。
主にExerciseについてのメモです。初めてOutSystemsに触る人にはわかりにくそうかなと思ったところについて書いています。
List and Detail Screens Exercise
- p5 c)で、Manage Dependenciesに、Coreモジュールで定義したEntityが表示されない場合。EntityをPublic=Yesにしているか、ダイアログ内の「Public elements in ‘OSMDb_Core’」というテキストの右下にあるコンボボックスでShow Allを選んでをいるか確認してください
- p10,11でTitle areaとかMainContent areaというのがいきなり出てきます。これはWidget Tree表示(Screen表示中にCtrl+Wで表示されます)で以下の場所のことです。点線の四角形はPlaceholderといって、この場所にWidgetを配置することができます。
Canvas上で該当エリアをクリックすると、エリアの名前が左上に表示されます。下の例は、MainCotentを選んだところ
- p15 ScreenのAnonymouseのチェックボックスを入れると、アクセスに認証が要求されなくなります。つまりログインしなくても見られる
- p17 Movie.Id = MovieIdの読み方。左辺のMovieは検索対象のEntityを表しています。よって検索対象EntityのId Attributeに対して絞り込みを行います。Id Attributeの値が、ScreenのInput Parameter “MovieId”と等しい行を抽出
- このあたりで、FormとTableRecordsの違いをまとめておくと
- Formは1レコードを対象に、表示または編集させるためのWidgetを配置します
- TableRecordsはNレコード(レコードのリスト)を表形式で表示するもの(HTMLではTableタグ)。1レコードが1行に対応
Modeling Data Relationships Exercise
- テーブル設計の知識が無いとわかりにくいです。動画に一応解説されていますが、英語が得意な人以外は、日本語の入門書でテーブル設計を勉強しておいた方がいいです
- テーブル間関連の用語
- one-to-many relationship
- 1方のテーブルの1レコード(行)に対して、もう1方のテーブルの複数レコードが対応する
- OutSystemsでは、1レコード側のEntityのIdentifier Attributeを、複数レコード側のEntityのAttributeの1つとして持つことで実現する
- 例:見積Entity(1)に対して、見積明細(many)の関係を作るには、見積明細に見積 Identifier型のAttributeを作成する
- many-to-many relationship
- テーブルをそれぞれ、A/Bと呼ぶとする。Aの1レコードにB複数レコードが対応し、B1レコードにA複数レコードが対応する
- OutSystemsでは、この関連を管理するため、新しいEntity ABを作成する(AとBの関連を管理するEntityであることを明確にするため名前はABとする)。ABにA Identifier型のAttributeとB Identifier型のAttributeを追加する。さらに、A+Bの組み合わせが重複しないように、ABでユニークなインデックスを作成する
- one-to-many relationship
- Delete Rule
- AとBというEntityがあり、AからBを参照している(B Identifier型のAttributeを持っている)とする。Bのレコードを削除するとき、Aのレコードをどうするかを決めるルール
- RDBでいうとトリガー的なもの
- Ignore:何もしないルール
- Protect:参照がある内は、Bのレコードの削除をさせないルール
- Delete:Bと一緒に参照しているAのレコードも削除するルール
コメント
List and Detail Screens Exerciseのエクササイズで先に進めなくなってしまいました。。
どこが原因かご確認頂きたくコメントさせて頂きました。
ご教示頂けましたら幸いです。
(エラー箇所)
・List and Detail Screens Exercise P28
b)In the MovieTable , right-click the Expression in the Title column and select the option Link to MainFlow\MovieDetail Web Screen.
こちらでマニュアルでは自動でLink toMainFlow\MovieDetail Web Screen.が表示されているのですが、私の方では何度やってんもこの表示が出ません。前段階の処理を誤っているのか、どこに原因があるのかわからず、、。
こちらの原因わかれば教えて頂けませんでしょうか。
お願い致します。
今、QuickStartのomlを元に同じ手順を追いかけてみましたが、私の方では、マニュアルの通りに出ました。
色々画面内を見渡すと、もしかして、画面左上にあるText Widget「Movies」を右クリックしているということはないでしょうか?
この場合、コンテキストメニューには、「Link To」は出ますが、「Link to ‘MainFlow\MovieDetail’ Web Screen」が出ません。
選択するのは、「Movies」の下にある表内の1列目のテキストです(ただしヘッダ行以外)。
「Star Wars: The Force Awaken」をクリックして選択(クリックしたテキストの上に「Expression」というWidgetの種類が表示される)
右クリック
「Link to ‘MainFlow\MovieDetail’ Web Screen」を選択
となります
以下画像の、赤枠の部分を選択してみてください。