6.3 Datamodel
以下にDatamodel定義と定義例を示します。データモデルの詳細については「ワークフロー」と「ワークフローの設計」を参照してください。
| ラベル | デフォルト値 | 必須※1 | 説明 | |||
|---|---|---|---|---|---|---|
| apiVersion: | Yes | APIバージョン 1.0を指定する |
||||
| kind: | Yes | datamodelを指定する | ||||
| type: | No | resourceを指定する Ops Iの運用機能に追加する新しい定義であることを示す |
||||
| name: | Yes | Datamodel定義の内部名 nameは以下のルールに従う必要があります。
|
||||
| label: | Yes | YAMLファイルに記載する運用機能の表示名 | ||||
| includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載
メモ
|
||||
| - kind: | Yes | 読み込むYAMLファイルの種類 | ||||
| name: | Yes | 読み込むYAMLファイルの内部名 | ||||
| description: | No | このYAMLファイルに対する詳細説明 | ||||
| tables: | Yes | テーブルの詳細を設定 | ||||
| - name: | Yes | テーブルの内部名※2 入力可能な文字は以下の通り。
|
||||
| label: | Yes | テーブルの表示名 | ||||
| inherits: | No | 継承設定 | ||||
| table: | No | 本テーブルが継承するカスタムテーブル名 "includes"に含まれている必要がある。 |
||||
| description: | No | 詳細説明 | ||||
| documents: | No | テーブルに関連するドキュメント | ||||
| - document: | No | テーブルに関連するドキュメントを指定。 | ||||
| columns: | Yes | カラムについて設定。 | ||||
| - name: | Yes | カラムの内部名 入力可能な文字は以下の通り。
メモ内部でバージョン管理に使用しているため、「version」という名前は使用できません。 |
||||
| label: | Yes | カラムの表示名 | ||||
| description: | No | カラムの詳細説明 | ||||
| type: | Yes | カラムのタイプを指定。 指定できるタイプは「(表)カラムのタイプ」を参照。 |
||||
| not-null: | false | No | この値がtrueの場合、null以外の制約が本カラムに追加される。 | |||
| primary: | false | No | この値がtrueの場合、本カラムはプライマリーキーとして扱う。 | |||
| foreign: | false | No | この値がtrueの場合、本カラムは外部キーとして扱う。 | |||
| ref: | No | foreignがtrueの場合に外部キーの参照先となるテーブルとカラムを指定する。指定したテーブルのカラムに対して参照制約が設定される。この値は、次のようにドット表記形式で指定する必要がある。 参照されるテーブル名.列名 例)mytable.mycolumn 参照されるテーブルは、"includes"で指定されたドキュメントに含まれている必要がある。 メモrefに指定するカラムはprimary: trueのカラムを指定してください。primary: trueではないカラムを指定すると、ドキュメントとして登録されません。 |
||||
| enum: | No | タイプが"enum"の時の選択肢を定義 | ||||
| - name: | Yes | 選択肢の内部名 入力可能な文字は以下の通り。
|
||||
| label: | Yes | 選択肢の表示名 | ||||
| default: | No | 本カラムのデフォルト値 | ||||
| index: | false | No | この値がtrueの場合、本カラムのインデックスが生成される。 | |||
| document: | No | テーブルに関連するドキュメント カラムのタイプに"document"を選択した場合に指定。 コレクション型のドキュメントを指定する必要性がある。 |
||||
| kind: | Yes | ドキュメントの"kind"を設定。 | ||||
| name: | Yes | ドキュメントの"name"を設定 | ||||
| generate: | No | カラムの値を自動的に入力する。以下が設定可能。
|
||||
| ref-sys: | No | Ops Iで用意されたテーブル(user,group,role)のカラムを参照する。 ref-sysに指定するカラムはforeign: trueのカラムを指定してしないでください。foreign: trueカラムを指定すると、ドキュメントとして登録されません。 referred system table nameやreferred system table name.column nameのようにレコードそのものか特定のカラムだけを指定する。 |
||||
| schemas: | No | schemaを定義 UIバージョン1.0では非サポート。UIバージョンについては「UIバージョン」を参照。 |
||||
| - name: | Yes | schemaの名前 | ||||
| file: | Yes | JSON Schemaファイルのパス DatamodelのYAMLファイルが保存されているディレクトリが起点となる。 |
||||
指定できるカラムのタイプは以下です。
| カラムのタイプ | |||||||
|---|---|---|---|---|---|---|---|
| integer※1 | numeric | varchar※2 | text | timestamp※5 | date※5 | time | boolean |
| enum | inet※3 | document※4 | decimal | uuid | - | - | - |
テーブルやカラムの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) | 所属しているグループ |
| version | integer | レコードのバージョン |
また、以下のテーブルがデフォルトで用意されています。
| カラム | タイプ | 説明 |
|---|---|---|
| id | varchar (36) | グローバルユニークなID |
| username | varchar (255) | ユーザー名 |
| first_name | varchar (255) | ファーストネーム |
| last_name | varchar (255) | ラストネーム |
| varchar (255) | ユーザーのメールアドレス |
| カラム | タイプ | 説明 |
|---|---|---|
| id | varchar (36) | グローバルユニークなID |
| name | varchar (255) | グループ名 |
| カラム | タイプ | 説明 |
|---|---|---|
| id | varchar (36) | グローバルユニークなID |
| name | varchar (255) | ロール名 |
<定義例>
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>
メモ