WAGBY11 MANUAL / 02
管理するデータをモデルとして定義する
商品管理を例に、モデルから標準画面を用意する方法を説明します。
最終更新日:
1. このページで伝える機能
Wagby11では、商品・顧客・受注など、管理するデータの単位をモデルとして定義します。モデルと必要な権限・検索・画面の設定を組み合わせると、登録・検索一覧・詳細・更新・削除の標準画面を用意できます。
このグループでは「商品」を例に、項目、主キー、自動採番、一意制約、監査項目を順番に説明します。
商品モデルを新規追加し、既存の顧客モデルとシステム定義は保持しています。操作する利用者には既存のG_ADMINロールを割り当てています。
表示名・英語識別名・DB物理名の使い分けは、モデルと項目の名前を決めるで説明します。
2. Wagby11で実現できること
2.1 商品を管理する入口を用意する
商品モデルとメニューを追加すると、「商品管理」の「商品検索」から検索一覧を開けます。モデルの追加だけではメニュー項目は作られないため、入口も合わせて定義します。

2.2 同じ種類のデータをまとめて扱う
デスクライトとブックスタンドは、商品コード・商品名・単価という共通の項目を持つ「商品」のデータとして登録します。データごとに別のモデルを作る必要はありません。

2.3 モデル区分を決める
| 区分 | 主な用途 | 例 |
|---|---|---|
| M | マスタ:業務の基本となる情報を、繰り返し参照して使います。 | 商品、顧客、部署 |
| T | トランザクション:業務で発生する出来事を、その都度記録します。 | 受注、申請、日報 |
| O | 選択肢・コード:入力時に選ぶ値と、その表示名を管理します。 | ステータス、区分 |
| S | システム管理情報:ログインや権限など、Wagby11の運用に使う情報です。 | システムユーザー、ロール |
商品は受注のたびに参照する基本情報なので、この例ではMにします。対して「いつ、どの商品を、いくつ受注したか」を記録する受注はT、受注画面で選ぶ「受付中・完了」などの区分はOが向いています。モデル区分は用途の分類であり、区分だけで操作権限は決まりません。誰に何を許可するかは、認証と認可で別に設定します。
業務領域ごとに設計情報を整理する方法は、ドメインでモデルを分類するを参照してください。
2.4 使わなくなったモデルと関連定義を取り除く
試作で追加したモデルや、業務で使わなくなったモデルは、関連する設計情報と合わせて整理します。モデルのYAMLだけを削除すると、メニューや他モデルの参照が残り、定義の読み込みや生成でエラーになる場合があります。
例えば、練習用に追加した商品モデルProductを取り除く場合は、次の範囲を確認します。実際に使っている商品管理を削除する指示ではなく、整理する対象の例です。
| 対象 | 確認・整理する内容 |
|---|---|
| モデルの定義 | 対象のモデルYAMLと、そのモデルに含まれる項目・権限・検索・一覧などの定義を確認します。 |
| 画面定義 | uidefs内のレイアウトなど、対象モデル用の定義を整理します。他から使う定義は残します。 |
| メニューと表示文言 | 対象モデルの検索・登録などへの入口と、対応するpropertiesの文言を整理します。同じファイルに残す業務の項目があれば、その部分は保持します。 |
| 明示参照 | ルートのmodulesやメニューなどにある$refを確認し、削除するファイルへの参照を取り除きます。 |
| 他モデルや機能からの利用 | 参照項目・ルックアップ・親子関係・式など、対象モデルを使う定義を調べます。参照を外すか、別モデルへ切り替えるかを決め、残す機能との整合性を保ちます。 |
| 操作マニュアル | 取り除いた機能の案内やリンクを見直し、残す画面・操作と一致させます。 |
通常の自動読み込みでは、モデルYAMLを取り除くと次の読み込みから対象外になります。明示参照がある場合は、参照元も更新する必要があります。共用のドメインやロールなどは、他のモデルから使われていないか確認し、対象モデルと一緒に機械的に削除しません。
モデル定義の削除と、DBの整理を分ける
モデルそのものを定義から取り除いても、DBテーブルや保存済みデータは自動では削除されません。モデル削除に伴うテーブル削除SQLは自動生成されないため、DBをどう扱うかは別に決めます。保管が必要なデータや参照元を確認し、DBの整理が必要な場合はバックアップと移行・削除の計画を別途用意します。
整理後に残す機能を確認する
定義を整理した後は、設計情報の検証・コード生成・必要なビルドを行い、REST APIとWeb UIを再起動します。削除したモデルへの入口が残っていないこと、残すメニューや参照先が使えること、既存データを参照できることを確認します。定義ファイルを外しただけで、起動済みのアプリケーションが即時に切り替わるわけではありません。
3. AIへの指示例
最小限の指示例
商品コード・商品名・単価を管理できる商品管理を作ってください。モデルの区分、項目の型、必須条件、主キー、検索項目、権限などはAIが類推して補います。提案された仕様を確認し、業務上の条件が決まっている部分は詳細な指示で指定します。
より詳細な指示例
このWagby11インストールフォルダのREADME.mdとHOWTODEV.mdを読み、guideと必要なreferenceを確認してください。
既存の顧客管理とシステム定義を保持し、商品管理を標準機能で追加してください。
・モデル名は「商品」、英語名はProduct、モデル区分はマスタとしてください。
・商品IDは自動採番する主キーにしてください。
・商品コードは最大30文字で必須とし、他の商品と重複できないようにしてください。
・商品名は最大100文字で、登録・更新時とも必須にしてください。
・単価は任意入力の固定小数点数とし、全体12桁・小数部2桁としてください。
・商品コードと商品名で検索し、一覧には商品ID、商品コード、商品名、単価を表示してください。
・登録者・登録日時・更新者・更新日時を自動記録し、詳細画面で確認できるようにしてください。
・G_ADMINロールに登録・参照・更新・削除を許可してください。
・「商品管理」メニューに「商品検索」を追加してください。
既存のProductがある場合は上書きせず、既存定義・データを確認して差分を扱ってください。
設計情報の検証・コード生成・起動を行い、登録・検索・更新・重複チェックと監査値を確認してください。
一般利用者向け操作マニュアルも追加または更新し、検証・HTML生成を確認してください。
変更したファイルと動作確認結果を説明してください。AIには、管理するデータだけでなく、入力する項目、検索方法、利用者の権限も伝えます。生成・起動の流れはAIへの指示からアプリケーションを作る流れを参照してください。
使わなくなったモデルを整理する指示
最小限の指示例
練習用に追加した商品モデルを取り除きたいので、関連する定義と他の機能への影響を調べてください。DBと既存データは保持してください。AIは対象モデルや関連するファイルを、既存の定義と業務の説明から類推して調べます。同じような名前のモデルがある場合や、残す業務から参照されている場合は、対象と整理方法を確認します。この短い指示だけで、次の詳細例と同じ範囲が対象になるとは限りません。
より詳細な指示例
練習用に追加した商品モデルProductを設計情報から取り除いてください。
・最初にモデル本体、uidefs、メニュー、表示文言、modulesなどの明示参照、他モデルからの参照を調べてください。
・残す業務がProductを使っている場合は、参照を外すか別モデルへ切り替えるかの確認事項を示し、未解決のまま定義を削除しないでください。
・Product専用の定義とメニュー項目・文言を整理し、共用ファイル内の他の業務に必要な部分は残してください。
・操作マニュアルの不要な案内やリンクも整理してください。
・顧客管理、システムモデル、他のモデルに必要なロール・ドメイン・権限を保持してください。
・DBテーブルと既存データは保持し、テーブル削除やデータ削除のSQLは作成・実行しないでください。
設計情報の検証・コード生成・必要なビルド後、REST APIとWeb UIを再起動し、残すメニューと参照機能が使えることを確認してください。
変更したファイル、残した共用定義、検証・動作確認の結果を説明してください。4. 編集されるAppSchemaの例
以下は撮影に使用した商品モデルの全体例です。配置先はdesigner/repository/appschema/Product.yamlです。entityがモデルと項目、permissionsが操作権限、functionsが検索・一覧、uiが画面の設定を表します。
entity:
name: 商品
name_en: Product
type: M
audit: true
attributes:
- name: 商品ID
name_en: productId
type: autoid
pk: true
- name: 商品コード
name_en: productCode
type: string
length: 30
not_null: true
unique: uq_product_code
validation:
presence: { create: error, update: error }
- name: 商品名
name_en: productName
type: string
length: 100
validation:
presence: { create: error, update: error }
- name: 単価
name_en: unitPrice
type: decimal
precision: 12
scale: 2
- { name: 登録者, name_en: createdBy, type: string, reserved: true, readonly: true }
- { name: 登録日時, name_en: createdAt, type: datetime, reserved: true, readonly: true }
- { name: 更新者, name_en: updatedBy, type: string, reserved: true, readonly: true }
- { name: 更新日時, name_en: updatedAt, type: datetime, reserved: true, readonly: true }
- { name: バージョン, name_en: version, type: number, hidden: true, reserved: true }
permissions:
- role: G_ADMIN
crud: [C, R, U, D]
functions:
- description: 商品検索
filter:
- name_en: productCode
- name_en: productName
list:
- name_en: productId
- name_en: productCode
- name_en: productName
- name_en: unitPrice
ui:
enabled: true通常のautoモードでは、モデルをこのフォルダに置くと読み込まれます。
実際の設計情報には固定識別子migration_idが付与されますが、ここでは省略しています。目的と手動編集時の注意点はモデル・項目の固定IDを参照してください。
商品検索へのメニュー
designer/repository/menus/product-menu.yamlに配置します。
id: product-menu
order: 20000
title_key: menu.product.title
children:
- kind: item
id: product-search
order: 10000
title_key: menu.product.search
target: { kind: entity, entity: Product, screen: search }表示文言はdesigner/repository/menus/product-menu.propertiesに配置します。
menu.product.title=商品管理
menu.product.search=商品検索項目の詳しい役割は、このグループの残りのページで説明します。利用者はYAMLの構文を暗記せず、AIに業務上の要望を伝えるところから始められます。
5. 参考資料
- guide:モデルを作成する
designer/docs/appschema/html/guide/03-model/01-create-model.html- guide:標準画面
designer/docs/appschema/html/guide/07-screens/01-standard-screens.html- reference:modules
designer/docs/appschema/html/reference/05-modules.html- reference:entity
designer/docs/appschema/html/reference/06-entity.html- reference:menus
designer/docs/appschema/html/reference/13-menus.html- reference:固定識別子
designer/docs/appschema/html/reference/06-entity.html