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 | カラムの内部名 入力可能な文字は以下の通り。
|
|||||
| label: | Yes | カラムの表示名 | |||||
| description: | No | カラムの詳細説明 | |||||
| type: | Yes | カラムのタイプを指定。 指定したタイプによって、Formコンポーネントのフィールドの種類が決定される。指定できるタイプは「(表)カラムのタイプ」を、Formコンポーネントのフィールドの種類は「(表)Formコンポーネントのフィールドの種類とDatamodelのYAMLファイルのカスタムテーブルのカラムのタイプの対応表」を参照。 |
|||||
| 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の場合、本カラムのインデックスが生成される。 注意事項カラムのタイプによらず登録するデータのサイズが大きい場合、インデックスの作成に失敗し、データ登録に失敗することがあります。 trueを指定したカラムに登録するデータは、2,400バイトを超えないように注意してください。 |
||||
| 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のようにレコードそのものか特定のカラムだけを指定する。 |
|||||
| views: | No | カスタムビューの詳細を定義 カスタムビューについては「データモデルの種類」を、カスタムビューの定義例は「カスタムビューの定義例」を参照。また、UIバージョン1.0では非サポート。UIバージョンについては「UIバージョン」を参照。 |
|||||
| - name: | Yes | カスタムビューの内部名※2 入力可能な文字は以下の通り。
|
|||||
| label: | Yes | カスタムビューの表示名 | |||||
| description: | No | カスタムビューの詳細説明 | |||||
| columns: | Yes | カラムについて設定 | |||||
| - source: | Yes | カスタムビューとして表示するカラムのソース ソースはfromまたはjoin.tableで指定したカスタムテーブルを指定できる。「データモデル名.カラム名」の形式で指定する。 |
|||||
| name: | Yes | カラムの内部名 入力可能な文字は以下の通り。
|
|||||
| label: | Yes | カラムの表示名 | |||||
| description: | No | カラムの詳細説明 | |||||
| from: | Yes | ベースとするカスタムテーブルの内部名 | |||||
| join: | No | 複数のカスタムテーブルをベースのカスタムテーブルに結合する場合に設定 | |||||
| - type: | Yes | 結合する方法を指定
|
|||||
| table: | Yes | 結合対象のカスタムテーブルの内部名 カスタムテーブルとデフォルトで用意されているuserテーブル、groupテーブル、roleテーブルを指定できる。デフォルトで用意されたテーブルの詳細は、「(表)userテーブル」、「(表)groupテーブル」、「(表)roleテーブル」を参照。 |
|||||
| conditions: | Yes | 結合時の条件を指定 | |||||
| <conditionNode> | Yes | 結合時の条件 "and"または"or"を指定する。 |
|||||
| - operator: | Yes | 結合時の条件で使用するオペレータ 使用できるオペレータの詳細は「(表)使用可能なオペレータ」を参照。 |
|||||
| operands: | Yes | オペレータに渡す値を「データモデル名.カラム名」の形式で指定する。記載方法の詳細は「(表)使用可能なオペレータ」を参照。 | |||||
| - <conditionNode> | No | 結合時に階層的な条件を指定したい場合に指定する。join全体で3階層まで指定できる。 | |||||
| where: | No | 結合後の結果に対しての表示条件を指定する場合に指定 | |||||
| conditions: | Yes | 結合時の条件を指定 | |||||
| <conditionNode> | Yes | 結合時の条件 "and"または"or"を指定する。 |
|||||
| - operator: | Yes | 結合時の条件で使用するオペレータ 使用できるオペレータの詳細は「(表)使用可能なオペレータ」を参照。 |
|||||
| operands: | Yes | オペレータに渡す値を「データモデル名.カラム名」の形式で指定する。記載方法の詳細は「(表)使用可能なオペレータ」を参照。 | |||||
| - <conditionNode> | Yes | 結合時に階層的な条件を指定したい場合に指定する。where全体で3階層まで指定できる。 | |||||
| schemas: | No | schemaを定義 UIバージョン1.0では非サポート。UIバージョンについては「UIバージョン」を参照。 |
|||||
| - name: | Yes | schemaの名前 | |||||
| file: | Yes | JSON Schemaファイルのパス DatamodelのYAMLファイルが保存されているディレクトリが起点となる。 指定したJSON Scehmaファイルの定義によって、Formコンポーネントのフィールドの種類が決定される。詳細は「(表)Formコンポーネントのフィールドの種類とDatamodelのYAMLファイルのJSON Schemaファイルの定義の対応表」を参照。 |
|||||
指定できるカラムのタイプは以下です。
| カラムのタイプ | |||||||
|---|---|---|---|---|---|---|---|
| integer※1 | numeric※6 | varchar※2 | text | timestamp※5 | date※5 | time | boolean |
| enum | inet※3 | document※4 | decimal※6 | 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 | レコードのバージョン |
| sys_customer | varchar (150) | レコードがひもづく顧客のID ワークフローから参照されるレコードには自動で設定される。 顧客ユーザーは、自分の顧客のIDとこのカラムの値が一致しない場合、レコードにアクセスできない。 |
| ctx_id | uuid | レコードを参照するワークフローのコンテキストID ワークフローから参照されるレコードには自動で設定される。 |
また、以下のテーブルがデフォルトで用意されています。これらは参照のみ可能です。データモデルアプリケーションなどから操作はできません。
ユーザー、グループ、ロールに対してデータの追加や編集、削除を行いたい場合、システムアプリケーションまたは標準提供APIから行ってください。詳細は「ユーザー管理」と「JP1 Cloud Service 運用統合 APIリファレンス」の「APIリファレンス概要>API一覧」を参照してください。
| カラム | タイプ | 説明 |
|---|---|---|
| id | varchar (36) | グローバルユニークなID |
| username | varchar (255) | ユーザー名 |
| first_name | varchar (255) | ファーストネーム |
| last_name | varchar (255) | ラストネーム |
| varchar (255) | ユーザーのメールアドレス | |
| customer_id※ | varchar (255) | 顧客のID |
| customer_name※ | varchar (255) | 顧客名 |
| company※ | varchar (255) | 会社名 |
| department※ | varchar (255) | 部署名 |
| memo※ | varchar (255) | 備考 |
| address※ | varchar (255) | 住所 |
| phone_number_1※ | varchar (255) | 電話番号1 |
| phone_number_2※ | varchar (255) | 電話番号2 |
| カラム | タイプ | 説明 |
|---|---|---|
| id | varchar (36) | グローバルユニークなID |
| name | varchar (255) | グループ名 |
| description※ | varchar (255) | 詳細 |
| email※ | varchar (255) | グループのメールアドレス |
| カラム | タイプ | 説明 |
|---|---|---|
| id | varchar (36) | グローバルユニークなID |
| name | varchar (255) | ロール名 |
| オペレータ | 関連SQL | 説明 | 例 |
|---|---|---|---|
| eq | = | 等しい |
- operator: eq operands: - main_table.main_id - ref_table.ref_code - operator: le operands: - main_table.main_id - "999" メモデータ型:stringまたはnumber (第1、第2Operand) |
| ne | <> | 等しくない | |
| gt | > | より大きい | |
| ge | >= | より大きいまたは等しい | |
| lt | < | より小さい | |
| le | <= | より小さいまたは等しい | |
| in | IN | 指定した値のリスト、配列に含まれる |
- operator: notIn operands: - ref_table.ref_value - ["inactive", "deleted"] メモデータ型:string(第1Operand)、array(第2Operand) |
| notIn | NOT IN | 指定したリスト、配列の集合に含まれない | |
| like | LIKE | パターン、ワイルドカードに一致する |
- operator: like operands: - ref_table.ref_value - "test%" メモデータ型:string(第1、第2Operand) |
| notLike | NOT LIKE | パターン、ワイルドカードに一致しない | |
| isNull | IS NULL | NULLである |
- operator: isNull operands: - ref_table.ref_value メモデータ型:stringまたはnumber |
| isNotNull | IS NOT NULL | NULLではない |
<定義例>
次の項目について定義例を示します。
■カスタムテーブルの定義例
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>
■カスタムビューの定義例
この例では、DatamodelのYAML定義を部分的に記載しています。
カスタムテーブルmain_tableとref_tableを定義します。
tables:
- name: main_table
label: main_table
columns:
- name: main_id
label: main_id
type: varchar(50)
- name: main_title
label: main_title
type: varchar(50)
- name: ref_table
label: ref_table
columns:
- name: ref_code
label: ref_code
type: varchar(50)
- name: ref_value
label: ref_value
type: varchar(50)
カスタムビューを定義します。ここで、カスタムテーブルをひもづけます。
- 単一のカスタムテーブルの場合:
カスタムビューsimple_ref_viewにカスタムテーブルref_tableをひもづける - 複数のカスタムテーブルを結合する場合:
カスタムビューmain_ref_join_viewにカスタムテーブルmain_tableとref_tableを結合してひもづける
| 単一のカスタムテーブルの場合 | 複数のカスタムテーブルを結合する場合 |
|---|---|
|
views: - name: simple_ref_view label: Simple Reference View description: Basic view columns: - source: ref_table.ref_code name: code label: Code description: table code - source: ref_table.ref_value name: value label: Value description: table value from: ref_table |
views: - name: main_ref_join_view label: Main Reference Join View description: Join view columns: - source: main_table.main_id name: main_id label: Main ID description: Main table ID - source: main_table.main_title name: main_title label: Main Title description: Main table title - source: ref_table.ref_code name: ref_code label: Reference Code description: Reference table code - source: ref_table.ref_value name: ref_value label: Reference Value description: Reference table value from: main_table join: - type: inner table: ref_table conditions: and: - operator: eq operands:   - main_table.main_id - ref_table.ref_code |
■JSON Schemaファイルの定義例
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"text": {
"type": "string"
},
"number": {
"type": "number"
},
"richText": {
"type": "string",
"formControl": "text"
},
"selectBox": {
"type": "string",
"enum": ["item1", "item2", "item3"]
},
"checkBox": {
"type": "boolean"
},
"dateTime": {
"type": "string",
"format": "date-time"
},
"date": {
"type": "string",
"format": "date"
},
"time": {
"type": "string",
"format": "time"
}
}
}
メモ
注意事項