6.3 Datamodel

以下に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: Yes 選択肢の内部名
半角のa-z0-9、"_"のみ使用可能。先頭文字は半角のa-zのみ指定可能。使用できる文字数の最大は63文字。1つのenum内で一意であること。
  label: Yes 選択肢の表示名
  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 namereferred system table name.column nameのようにレコードそのものか特定のカラムだけを指定する。
schemas: No schemaを定義
UIバージョン1.0では非サポート。UIバージョンについては「UIバージョン」を参照。
- name: Yes schemaの名前
  file: Yes JSON Schemaファイルのパス
DatamodelのYAMLファイルが保存されているディレクトリが起点となる。
※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属性の値には設定できる文字数に上限があります。
また、上限値はそれぞれ条件により異なります。
以下を参照し、条件に該当する制限をすべて満たすように定義してください。

(表)テーブルおよびカラムの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) 所属しているグループ

また、以下のテーブルがデフォルトで用意されています。

(表)userテーブル

カラム タイプ 説明
id varchar (36) グローバルユニークなID
username varchar (255) ユーザー名
first_name varchar (255) ファーストネーム
last_name varchar (255) ラストネーム
email varchar (255) ユーザーのメールアドレス

(表)groupテーブル

カラム タイプ 説明
id varchar (36) グローバルユニークなID
name varchar (255) グループ名

(表)roleテーブル

カラム タイプ 説明
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>

似たセクションが続く箇所は(中省略)として省略しています。