Genexusとは
仕事で使うことになったので備忘録。
https://www.genexus.com/ja-JP/japan
Javaだけかなと思ってたらC#とかRubyとかCOBOLとかRPGも対応してるみたい。
RPGは使ったことないけど、ニッチなとこサポートしてるんだなぁ。
※量が増えてスクロールが面倒になったので記事を分割した。
→実装編
ナレッジベース
Projectの事。
オブジェクト
4オブジェクトを使えばとりあえずアプリ作れそう。
- WebPanel
- SDT
- Transaction
- Procedure
WebPanel
.NetのForm的なもの。
ツールボックスから要素を配置できる。
イベント周りのロジックはここで記載する
SDT
Cの構造体。データ構造のみ表現できて、メソッドとかは持たない。
=Struct,≠Class
ロジックはProcedureに持たせる
Transaction
DBModelみたいなもの
Procedure
業務ロジックとかソースコード、ライブラリ系はこれを使う
オブジェクト検索
帳票
Procedureで定義する。
作ったレイアウトを、呼び出し元からCallするイメージ。
1:Procedureを作成
2:Procedure本体のプロパティ変更
→Call ProtocolをHTTPに設定する
※Procedureを編集しているタブ名を右クリックするとプロパティ表示できる。
3:「Layout」タブで帳票定義を設定する
ツールボックスから項目を置いていく。
残念ながら複数項目を一気に配置したりできないので、地道にレイアウトする。
線はプロパティから縦横変更可能。
また、格子状に箱を作りたい場合は、長方形+線で頑張るしかない。
横に項目を並べたい場合は、標準機能では何ともならないので、工夫が必要。
4:「Source」タブで作ったPrintBlock名を指定して出力する
For Eachで回しているデータと対応していれば、うまいことbindしてくれる。
For Each orders
print printBlock1
For Each orders.detail
print printBlock2
EndFor
print printBlock3
End For
改ページはこの命令。
Eject
SDTも指定できるが、Collection型にしたものを画面項目として設定してもうまくいかない。
帳票Layoutには単体のSDTの項目を定義する。
Transaction
1:「ファイル」「新規」「オブジェクト」「共通」Transactionを選択
2:「Structure」タブで項目定義する
・主キーに設定しとくと、同一項目を他Transactionに定義したときに
自動で外部キーとして処理してくれる。
※逆に、whoカラムみたいな項目の名前が一緒だと、外部キー扱いされる
悲しみを背負っているので、テーブルごとに別の名前にする必要がある。
・名称項目属性に設定しとくと、Genexusが自動生成してくれるマスメン画面で
ポップアップlistから選択できる項目になる。(業務では使わんかも?)
・Numericの桁数指定は以下の通り。
Numeric(6.2)->100.00
Numeric(全体桁数.小数部)
※全体桁数には.を含むので注意。
3:実行してみる(F5)
「Web Form」タブを見ると、自動でいい感じのマスメン画面を作ってくれてる。
虫眼鏡を押すとこんな感じの選択ウィンドウが出てくる。
Transaction定義で設定した「名称項目属性」に下線が出て、選択できるようになる。
複雑なTransaction
「レベルを挿入」でデータ構造をネストしたりできる。
式を入力して、自動計算させる事も可能。
なお、ネストした項目でソートする際は以下構文で実施。
// NG(エラーにはならないがソートされない)
&t_order.Sort('amount')
// OK
&t_order.Sort('list.amount')
ほか
続きは随時追記していく方式で。
そのうち書く
・freestyleGrid
・WorkWithPlus