INDEX
- 目的
- 実装
- あとがき
1. 目的
for (int i = 0; i < 10; i++) {
// ループでやりたい処理
}
Javaでいう所のこんな処理をOutSystemsで実装したい!
…というのも、OutSystemsだとどうもこういうの↑しか無さそうなんですよねω
うちは既にあるリストをぶん回すんじゃなく、回数を指定して回したいんじゃあ!!1
2. 実装
2.1. 結論
先に結論を書くとどうやら、現状ではIfウィジェット
を使って自前で実装するか、少々回りくどいが回したい数だけ要素を持ったリストを作ってFor Eachウィジェット
で回す等しないとダメなようだ。
2.2. 動作サンプル
ここではサンプルとして、1~10までの和を文字列リストにして画面に出すという物を作ってみた。
ちなみに会社の事は関係なしに記事を書いている為、Personal Environmentです。一定期間アクセスが無いとスリープされてしまうので、もしアクセスできなかったら諦めて下さいω
2.3. プロジェクトファイル
こちら からOMLファイルをダウンロードして下さい。
2.4. サンプルの説明
2.4.1. 準備
Home画面にデータソースを準備します。Fetch Data from Other Sources
で作ったDataAction1
に紐づけています。ダミーデータを生成するだけなので引数はありません。
DataAction1
で生成したText型リストをTable
のSource
に設定します。
次は、DataAction1
の中で実際にForカウンタループを使ってリストを作って行きます。
2.4.2. リストを生成するサーバアクションのIFを整える
DataAction1
から呼び出すサーバアクションを作ります。
わざわざサーバアクションにしているのは、リストに要素追加等の操作はサーバアクション限定という縛りがある為です。
まずは、Server Action
にサーバアクションを作ります。(ここではForLoopSampleAction
)
OutDatas
はText型リストです。ちなみにJava
っぽく書くならこういうサーバアクションにしようとしています。
public List<String> ForLoopSampleAction() {
List<String> OutDatas = new ArrayList<>();
for (int Index = 0; Index < LoopNum; Index++) {
TempSum += Index + 1;
OutDatas.add((Index + 1) + "回目: " + TempSum);
}
return OutDatas;
}
ForLoopSampleAction
を作ったら、DataAction1
から呼び出します。
ForLoopSampleAction
からの戻り値もしっかりAssign
します。
2.4.3. サーバアクションの中身を実装する
-
Assign
でループで使用する変数の初期化をする -
Ifウィジェット
は、Break
条件として、Index < LoopNum
が成立する間はTrue
に流れてループするようにを定義します。 -
TempSum
のAssign
は単に1~10の総和を求めています。リスト表示用 -
ListAppend
で、OutDatas
のリストに要素を追加します。これはサーバアクション内でしか使えません -
Index++
のAssign
で、人力でIndex
のカウントアップ処理をしています
2.4.4. 動作確認
3. あとがき
今回は私が苦手意識を持つ最強自社フレームワーク、最強自社ツールのなどと言われるカテゴリの一種だと思い込んでいるローコードツールネタを書きました。
ローコードツール周囲でも流行りつつあり、IT系記事でも持てはやされているのですが、正直外部のプログラマにガッツリこれを使わせている現状があって違和感を感じずにはいられない自分がいます。作るものも作る人も変わってないし。
POC用途とか、プログラマがいないサービス提供企業が使って改修していくってなら分からんでもないんですが…。
そんな経緯があってイマイチ良い印象が持てないでいます。うちももう老害なんだろうなあ。