6.3 Datamodel
以下にDatamodel定義と定義例を示します。データモデルの詳細については「ワークフロー」と「ワークフローの設計」を参照してください。
ラベル | デフォルト値 | 必須 | 説明 | |||
---|---|---|---|---|---|---|
apiVersion: | 1.0 | Yes | APIバージョン | |||
kind: | Yes | データモデルの際はdatamodelを指定する | ||||
type: | No | データモデルの際はresourceのみ指定可能 | ||||
name: | Yes | Datamodel定義の内部名。本YAMLファイルのディレクトリ名を指定 | ||||
label: | Yes | YAMLファイルの表示名 | ||||
includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載 | ||||
- kind: | Yes | 読み込むYAMLファイルの種類 | ||||
name: | Yes | 読み込むYAMLファイルの内部名 | ||||
description: | No | 詳細説明 | ||||
tables: | Yes | テーブルの詳細を設定。 | ||||
- name: | Yes | テーブルの内部名※ 半角のa-z0-9、"_"のみ使用可能。先頭文字は半角のa-zのみ指定可能。 |
||||
label: | Yes | テーブルの表示名 | ||||
inherits: | No | 継承設定 | ||||
table: | No | 本テーブルが継承するカスタムテーブル名 “includes”に含まれている必要がある。 |
||||
description: | No | 詳細説明 | ||||
documents: | No | テーブルに関連するドキュメント | ||||
- document: | No | テーブルに関連するドキュメントを指定。 | ||||
columns: | Yes | カラムについて設定。 | ||||
- name: | Yes | カラムの内部名 半角のa-z0-9、"_"のみ使用可能。先頭文字は半角のa-zのみ指定可能。 |
||||
label: | Yes | カラムの表示名 | ||||
description: | No | カラムの詳細説明 | ||||
type: | Yes | カラムのタイプを指定。 指定できるタイプは「(表)カラムのタイプ」を参照。 |
||||
not-null: | false | No | この値がtrueの場合、null以外の制約が本カラムに追加される。 | |||
primary: | false | No | この値がtrueの場合、本カラムはプライマリーキーとして扱う。 | |||
foreign: | false | No | この値がtrueの場合、本カラムは外部キーとして扱う。 | |||
ref: | No | 指定したテーブルのカラム情報を参照するときに利用。foreignがtrueの場合はテーブル制約、falseの場合はカラム制約となる。この値は、次のようにドット表記形式で指定する必要がある。 <参照されるテーブル名>.<列名> 例)mytable.mycolumn 参照されるテーブルは、“includes”で指定されたドキュメントに含まれている必要がある。 |
||||
enum: | No | タイプが“enum”の時の選択肢を定義 | ||||
- name: | No | 選択肢の内部名 半角のa-z0-9、"_"のみ使用可能。先頭文字は半角のa-zのみ指定可能。使用できる文字数の最大は63文字。 |
||||
label: | No | 選択肢の表示名 | ||||
default: | No | 本カラムのデフォルト値 | ||||
index: | false | No | この値がtrueの場合、本カラムのインデックスが生成される。 | |||
document: | No | テーブルに関連するドキュメント カラムのタイプに”document”を選択した場合に指定。 コレクション型のドキュメントを指定する必要性がある。 |
||||
kind: | Yes | ドキュメントの”kind”を設定。 | ||||
name: | Yes | ドキュメントの”name”を設定。 | ||||
generate: | No | カラムの値を自動的に入力する。以下のものが設定可能。 ”uuid” ”uuid”が指定された場合,自動でUUIDを作成。 |
||||
ref-sys: | No | Ops Iで用意されたテーブル(user,group,role)のカラムを参照する。 ref-sysに指定するカラムはforeign: trueのカラムを指定してしないでください。foreign:trueカラムを指定すると、ドキュメントとして登録されません。 <referred system table name> や <referred system table name>.<column name>のようにレコードそのものか特定のカラムだけを指定する。 |
※Datamodel定義で指定するテーブルの内部名は、システムを通して一意である必要があります。
refに指定するカラムはprimary: trueのカラムを指定してください。primary: trueではないカラムを指定すると、ドキュメントとして登録されません。
指定できるカラムのタイプは以下です。
カラムのタイプ | |||||||
---|---|---|---|---|---|---|---|
integer※1 | numeric | varchar※2 | text | timestamp※5 | date※5 | time | boolean |
enum | inet※3 | document※4 | decimal | uuid | - | - | - |
※1 -2,147,483,648~+2,147,483,647の数字を含む基本データ型で、数字に小数や指数を含むことはできません。
※2 デフォルトの文字列の最大値は40文字です。
※3 IPv6形式は未サポートです。
※4 Ops I独自のタイプ。Git上に保存したドキュメントを選択でき、実データとして保存パスが登録されます。
※5 timestampとdateのタイプに入力可能な日付は1900年01月01日 から 2099年12月31日 です。
テーブルやカラムのname属性の値には設定できる文字数に上限があります。
また、上限値はそれぞれ条件により異なります。
以下を参照し、条件に該当する制限を全て満たすように定義してください。
項番 | 条件 | 制限 |
---|---|---|
1 | 常に | テーブルのnameは最大45文字 |
2 | 常に | カラムのnameは最大63文字 |
3 | テーブルにforeign: true のカラムがある場合 | 該当テーブル名、該当カラム名前、参照先のテーブル名、参照先のカラム名の文字数の合計は最大53文字 |
4 | テーブルにtype: enumのカラムがある場合 | 該当テーブル名、該当カラム名の文字数の合計は最大60文字 |
5 | テーブルにtype: enumのカラムがある場合 | 該当enum名の選択肢のnameの文字数は最大63文字 |
Ops Iではデフォルトで以下のカラムが用意されています。
カラム | タイプ | 説明 |
---|---|---|
id | uuid | グローバルユニークID |
created_on | timestamp | レコードが作成された日時 |
updated_on | timestamp | レコードが更新された日時 |
created_by | varchar (256) | レコードを作成したユーザー名 |
updated_by | varchar (256) | レコードを更新したユーザー名 |
approved | boolean | 承認したかどうかのフラグ |
domain | varchar (256) | ドメイン |
group | varchar (256) | 所属しているグループ |
また、以下のテーブルがデフォルトで用意されています。
カラム | タイプ | 説明 |
---|---|---|
id | varchar (36) | グローバルユニークなID |
username | varchar (255) | ユーザー名 |
first_name | varchar (255) | ファーストネーム |
last_name | varchar (255) | ラストネーム |
groups | varchar | ユーザーが所属するグループ名。JSON形式の配列で保存。 例) [ ”System”, ”Admin” ] |
roles | varchar | ユーザーが保持するロール名。JSON形式の配列で保存。 例) [ ”Edit”, ”View” ] |
カラム | タイプ | 説明 |
---|---|---|
id | varchar (36) | グローバルユニークなID |
name | varchar (255) | グループ名 |
users | varchar | グループに所属するユーザー名。JSON形式の配列で保存。 例) [ ”Jhon”, ”Ken” ] |
roles | varchar | グループが保持するロール名。JSON形式の配列で保存。 例) [ ”Edit”, ”View” ] |
カラム | タイプ | 説明 |
---|---|---|
id | varchar (36) | グローバルユニークなID |
name | varchar (255) | ロール名 |
users | varchar | このロールを持つユーザー名。JSON形式の配列で保存。 例) [ ”Jhon”, ”Ken” ] |
groups | varchar | このロールを持つグループ名。JSON形式の配列で保存。 例) [ ”Edit”, ”View” ] |
<定義例>
apiVersion: 1.0
kind: datamodel
type: resource
name: lend_vm_datamodel
label: lend_vm_datamodel
description: VM貸出台帳のデータモデルを定義
includes:
- kind: attachment
name: Evidence of VM creation
#カラムを定義
tables:
- name: lend_vm_table
label: VM貸出台帳のテーブル
columns:
- name: app_number
label: 申請番号
description: 申請の通し番号
type: varchar(32)
not-null: false
primary: false
foreign: false
- name: sys_name
label: システム名
description: VMを利用するシステム名
type: enum
enum:
- name: order_mgt_sys
label: 受注管理システム
- name: customer_mgt_sys
label: 顧客管理システム
- name: production_mgt_sys
label: 生産管理システム
not-null: false
primary: false
foreign: false
- name: vm_name
label: VM名
description: 貸出したVM名
type: varchar(32)
not-null: false
primary: false
foreign: false
- name: os_name
label: OS種別
description: WindowsまたはLinuxを選択
type: enum
enum:
- name: Windows
label: Windows
- name: Linux
label: Linux
not-null: false
primary: false
foreign: false
- name: cpu
label: CPU
description: VMで利用するvCPUコア数
type: integer
not-null: false
primary: false
foreign: false
(中省略)
- name: start_date
label: 利用開始日
description: VMの利用開始日
type: date
not-null: false
primary: false
foreign: false
- name: applicant
label: 利用申請者
description: 利用申請者
type: varchar(256)
not-null: false
primary: false
foreign: false
(中省略)
- name: notice
label: お知らせ
type: text
not-null: false
primary: false
foreign: false
default:
<strong>システムメンテナンスのため、下記の時間帯にVM貸出サービスを停止します。<br>
20XX年XX月XX日(水)9:00 ~ 12:00<br>
ご不便をおかけいたしますが、よろしくお願いします。</strong>