11. 付録

11.1. ワークフローサンプルの説明

本節では、ワークフローデザイナーの操作 で説明した操作方法によるワークフローのサンプルを参考例として提示しています。

11.1.1. ワークフローの基本作成手順

ツールダイアログからツールを追加し、入出力データを自動追加あるいは手動で追加した後にデータリンクの作成を行う事で、ワークフローが作成できます。

../_images/WF01_simple_port.png

図 11.1 サンプル01_入出力のあるツールが一つのシンプルなもの

11.1.2. ワークフロー参考例

ツール間でデータリンクの生成(データの受け渡し)をすることが可能です。

../_images/WF02_multi_tool.png

図 11.2 サンプル02_入出力のあるツールが複数つながったもの

1つの要素からの出力を、複数の要素の入力にすることも可能です。

../_images/WF03_1data_multi_tool.png

図 11.3 サンプル03_1つのデータから複数のツールに入力させるもの

公開中のワークフローを、別のワークフローのツールとして用いることも可能です。

../_images/WF04_01_nest.png

図 11.4 サンプル04_01をネストしたもの

ワークフロー内で独立したワークフローが複数存在していても構いません。

../_images/WF05_independent_flow.png

図 11.5 サンプル05_WF内で独立したフローを持つもの

データリンクが存在しないツール間にランアフターを追加することで、実行順序を設定することができます

../_images/WF06_03_add_runafter.png

図 11.6 サンプル06_03にランアフターを追加したもの

11.2. ワークフロー定義ファイル(.miwf)

本節では、ワークフローシステムでダウンロードできる、ワークフロー定義ファイル(.miwf)の書式について説明します。

11.2.1. 帳票定義

  1. ファイル形式および文字コード

項目

説明

物理ファイル名

(任意).miwf

ファイル形式

JSON

文字コード

UTF-8(BOMなし)

  1. 項目定義

ワークフロー定義ファイル内の要素および属性について以下にまとめます。

表 11.1 ドキュメントルート

データ項目名

要素名/属性名

必須

出現回数

データ型

説明

バージョン

version

1

文字列(トークン)

本ファイル書式のバージョン。本開発では、"1.0"とします。

メインワークフロー情報

mainWorkflow

1

workflow

メタ情報を含む、ワークフロー全体の情報です。

ネストワークフロー情報

nestedWorkflow

0~1

workflow[]

メインのワークフロー内でネストされたワークフローを定義します。ワークフロー情報の配列で構成されます。
表 11.2 ワークフロー情報(Workflow)

データ項目名

要素名/属性名

必須

出現回数

データ型

説明

メタ情報

metadata

1

metadata

ワークフローのメタ情報です。

ダイアグラム情報

diagramModel

1

diagramModel

ワークフローの内容 兼 GoJSに読み込ませるダイアグラムオブジェクトです。
表 11.3 メタ情報(Metadata)

データ項目名

要素名/属性名

必須

出現回数

データ型

説明

ID

identifier

1

文字列(トークン)

ワークフローまたは予測モジュールのIDです。
nodeDataArray内でcategoryが"workflow" の場合、ネストワークフローのmetaData.dentifierが設定され、ワークフローIDは"W"+前ゼロ詰15桁の整数で出力されます。
nodeDataArray内でcategoryが"module" の場合、予測モジュールIDは"P"+前ゼロ詰15桁の整数で出力されます。

名前

title

1

文字列(トークン)

ワークフローまたは予測モジュールの名前です。
名前に、",,"(全角半角カンマ)を含む文字列は設定できません。

説明

description

0~1

文字列(トークン)

ワークフローまたは予測モジュールの説明です。

作成者

creator

1

文字列(トークン)

ワークフローまたは予測モジュールの作成者の名前です。

更新日

date

1

日付

ワークフローまたは予測モジュールの更新日です。yyyy-MM-ddの形式で出力されます。

備考

remark

0~1

文字列(トークン)

ワークフローまたは予測モジュールについての、作成者による備考です。

予測モデルID

predictionModel

0~1

文字列(トークン)

ワークフローまたは予測モジュールに設定されている、特性空間インベントリシステムの予測モデルIDです。"M"+前ゼロ詰15桁の整数で出力されます。

リビジョン

revision

1

文字列(トークン)

ワークフローの場合はリビジョン番号を、予測モジュールの場合はバージョン番号を出力します。
リビジョン番号については整数値で出力されますが、バージョン番号の詳細については、モジュールバージョン を参照。
表 11.4 ダイアグラムオブジェクト(diagramModel)

データ項目名

要素名/属性名

必須

出現回数

データ型

説明

クラス

class

1

文字列(トークン)

ワークフロー定義ファイル中では、常に "go.GraphLinksModel"で固定です。

ノード情報リスト

nodeDataArray

1

nodeData[]

ノード情報の配列です。書式上は、配列は空でも構いません。

接続情報リスト

linkDataArray

1

linkData[]

接続情報の配列です。書式上は、配列は空でも構いません。
表 11.5 ノード情報(nodeData)

データ項目名

要素名/属性名

必須

出現回数

データ型

説明

キー値

key

1

整数

ツール・入出力データに設定されるIDです。ワークフロー全体で一意になります。負の値も出力されます。

名前

name

1

文字列(トークン)

ワークフローシステムで表示される名前です。
ただし、",,"(全角半角カンマ)は設定できません。Workflow内で、カテゴリを問わず、名前は一意になります。

カテゴリ

category

1

文字列(トークン)

ノードの種類を示します。"inputdata", "inputlist", "outputdata", "workflow", "module" の何れかが設定されます。

color

0~1

文字列(トークン)

ワークフローダイアグラムで表示される色です。指定しない場合は、categoryの値によって決定されます。

メタ情報

metadata

0~1

metadata

ツールに割り当てた予測モジュールまたはワークフローのメタ情報です。
categoryが"workflow", "module" の場合のみ設定されます。

入力ポート情報リスト

inputPorts

0~1

Port[]

ツールの入力ポート情報の配列です。categoryが"workflow", "module" の場合のみ設定されます。

出力ポート情報リスト

outputPorts

0~1

Port[]

ツールの出力ポート情報の配列です。categoryが"workflow", "module" の場合のみ設定されます。

paramtype

0~1

文字列(トークン)

入出力データのデータ型です。本バージョンでは"file"のみとします。
categoryが"inputdata", "inputlist", "outputdata" の場合のみ設定されます。

深度

depth

0~1

非負整数

入出力データ入出力データのデータの深度です。0または1のみ指定可能です。1を指定した場合、type指定は無視されます。inputlist以外、値は0となります。
categoryが"inputdata", "inputlist", "outputdata" の場合のみ設定されます。
未指定時の値は0です。

デフォルト値

paramdefault

0~1

文字列(トークン)

ワークフローの実行時に、パラメータが入力されていない場合のデフォルト値です。
categoryが"inputdata" もしはcategoryが"inputlist"かつlisttypeが"filelist", "valuelist"の場合のみ設定されます。
paramtypeが"file"の場合は、デフォルト値は無しとなります。

ノード説明

description

0~1

文字列(トークン)

ワークフローシステムで表示される、入出力データの説明です。
categoryが"inputdata", "inputlist", "outputdata" の場合のみ設定されます。

記述子

descriptor

0~1

文字列(トークン)

入出力データに設定される、特性空間インベントリシステムの記述子ID("D"+前ゼロ詰15桁の整数)です。
categoryが"inputdata", "inputlist", "outputdata" の場合のみ設定されます。

単位

unit

0~1

文字列(トークン)

ワークフローシステムで表示される、ポートに設定されている単位です。
categoryが"inputdata", "outputdata" の場合のみ設定されます。

リスト処理方法

listhandling

0~1

文字列(トークン)

リスト型の入力データの処理方法です。"cross", "dot" の何れかが設定されます。categoryが"inputlist" の場合のみ設定されます。未指定時の値は1です。

リスト処理優先順位

listpriority

0~1

非負整数

入力リストの計算処理の優先順位です。categoryが"inputlist" の場合のみ設定されます。

リスト型

listtype

0~1

文字列(トークン)

入力リストの型です。"linear", "log", "random", "filelist", "valuelist" の何れか。categoryが"inputlist" の場合のみ有効。

最小値

listlower

0~1

実数

ワークフロー実行時に、動的に生成されるリストの最小値です。listtypeが"linear", "log", "random" の場合のみ設定されます。

リスト最大値

listupper

0~1

実数

ワークフロー実行時に、動的に生成されるリストの最大値です。listtypeが"linear", "log", "random" の場合のみ設定されます。

増分(回数)値

listoption

0~1

実数

ワークフロー実行時に、動的に生成されるリストの増分、もしくは回数値です。listtypeが"linear", "log", "random" の場合のみ設定されます。

必須フラグ

required

0~1

真偽値

ワークフローの入力データの必須フラグです。"true", "false"の何れかが設定されます。未指定の場合は"false"が設定されます。
categoryが"inputdata" の場合のみ設定されます。
表 11.6 ポート情報(Port)

データ項目名

要素名/属性名

必須

出現回数

データ型

説明

ポート名

paramname

1

文字列(トークン)

ワークフローシステムで表示されるポートの名前です。半角・全角を問わず、","(カンマ)を含む文字列は設定できません。
以下の規則に従い設定します。
・設定されるツール内において、入出力通してポート名はそれぞれ一意であること
・OutputPorts内のPortの場合は「stdout」という名前は設定不可
・含むことができない文字:カンマ(全角半角とも)、ピリオド(半角)

paramtype

1

文字列(トークン)

"file", "numeric", "string", "boolean" の何れかを設定します。ただし現在"file"のみ設定可能です。

深度

paramdepth

0~1

非負整数

0または1のみ指定可能です。1を指定した場合、type指定は無視されます。本バージョンでは入力値に関わらず、値は0となります。

デフォルト値

paramdefault

0~1

文字列(トークン)

ワークフローの実行時に、パラメータが入力されていない場合のデフォルト値です。

ポート説明

description

0~1

文字列(トークン)

ワークフローシステムで表示されるポートの説明です。

記述子

descriptor

1

文字列(トークン)

ポートに設定される、特性空間インベントリシステムの記述子IDです。"D"+前ゼロ詰15桁の整数で設定します。

単位

unit

0~1

文字列(トークン)

ワークフローシステムで表示されるポートの単位です。

必須フラグ

required

0~1

真偽値

入力ポートの必須フラグです。"true"または "false"の何れかが設定されます。未設定の場合は"false"が設定されます。
outputPorts内にある場合は無視されます。
表 11.7 ノード間の接続情報(linkdata)

データ項目名

要素名/属性名

必須

出現回数

データ型

説明

接続情報ID

id

1

整数

接続情報に設定される一意のIDです。ワークフロー全体で一意になります。負の値も設定されます。

カテゴリ

category

1

文字列(トークン)

接続情報のカテゴリです。"linkdata", "runafter" の何れかが設定されます。

接続元キー値

from

1

整数

接続元のデータもしくはツールのキー値です。

接続先キー値

to

1

整数

接続先のデータもしくはツールのキー値です。

接続ポート情報リスト

links

0~1

link[]

ポート同士の接続の組み合わせの配列です。categoryが"linkdata"の場合のみ設定されます。

11.2.2. 項目設定における注意事項

  1. miwf内で指定するIDについて

ワークフロー定義ファイル内で設定されるID(予測モジュールID, ワークフローIDなど)はDBに存在する値でなければなりません。

  1. モジュールバージョン

予測モジュールのバージョンは、セマンティックバージョニング 2.0.0 (http://semver.org)に準拠し、以下のルールに沿って設定します。

書式 :{メジャー}.{マイナー}.{パッチ}

表 11.9 モジュールバージョン

No.

ステータス

ルール

主な用途

備考

1

メジャー

予測モジュールの使用方法としてのAPI(Application Program Interface)に後方互換性がない変更に対しては、メジャーバージョンを上げなければいけません。

ワークフローシステムにおいて、ツール接続のバリデーションに使用します。

0以上の最大4桁の整数。

2

マイナー

後方互換性があり、機能が変更・追加された場合は、マイナーバージョンを上げなければいけません。

ワークフローシステムにおいて、ユーザーが自身のワークフローに適しているかを判断するのに使用します。

0以上の最大4桁の整数。

3

パッチ

後方互換性があるバグ修正を行った場合は、パッチバージョンを上げなければいけません。

GP-DBにおいて、解析者が計算結果の信頼性を判断するのに使用します。

0以上の最大4桁の整数。

11.2.3. 帳票レイアウト

ワークフロー定義ファイルの帳票のレイアウトを下記の図で示します。

../_images/MiwfFormLayout.png

図 11.7 ワークフロー定義ファイル帳票レイアウト

11.2.4. サンプルデータ

下記の図のサンプルワークフローのワークフロー定義ファイルを示します。

../_images/MiwfSampleWorkflow.png

図 11.8 サンプルワークフローレイアウト

workflow.miwf(ファイル名は任意です)

   {
   "version": "1.0",
   "mainWorkflow": {
       "metadata": {
           "identifier": "W123450000000100",
           "title": "サンプルワークフロー1",
           "description": "利用者マニュアル記載用のサンプルワークフローです。",
           "creator": "材料太郎",
           "date": "2019-2-28",
           "revision": "1"
       },
       "diagramModel": {
           "class": "go.GraphLinksModel",
           "nodeDataArray": [
               {
                   "key": 10,
                   "name": "TOOL1_01",
                   "category": "workflow",
                   "color": "yellow",
                   "metadata": {
                       "identifier": "W123450000012333",
                       "title": "WorkflowSample",
                       "description": "ワークフローについての説明を記述",
                       "creator": "材料太郎",
                       "date": "2017-01-05",
                       "predictionModel": "M123450000000456",
                       "revision": "1"
                   },
                   "inputPorts": [
                       {
                           "paramname": "input1",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "paramdefault": "10",
                           "description": "入力ポート1の説明",
                           "descriptor": "D123450000001111",
                           "unit": "degree",
                           "required": true
                       },
                       {
                           "paramname": "input2",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "paramdefault": "ABCD",
                           "description": "入力ポート2の説明",
                           "descriptor": "D123450000002222",
                           "unit": "degree"
                       }
                   ],
                   "outputPorts": [
                       {
                           "paramname": "outfile1",
                           "paramtype": "file",
                           "description": "出力ポート1の説明",
                           "descriptor": "D123450000000123"
                       },
                       {
                           "paramname": "stderr",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "標準エラー",
                           "descriptor": "D123450000000001"
                       },
                       {
                           "paramname": "stdout",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "標準出力",
                           "descriptor": "D123450000000000"
                       }
                   ]
               },
               {
                   "key": 11,
                   "name": "TOOL2_01",
                   "category": "module",
                   "color": "orange",
                   "metadata": {
                       "identifier": "P0000006789",
                       "title": "Abaqus",
                       "description": "ツール2の説明を明記",
                       "creator": "材料次郎",
                       "date": "2017-01-05",
                       "version": "1.0.1",
                       "predictionModel": "M123450000000123",
                       "revision": "1"
                   },
                   "inputports": [
                       {
                           "paramname": "inputfile1",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "入力ポートの説明",
                           "descriptor": "D123450000000123",
                           "unit": "degree"
                       }
                   ],
                   "outputports": [
                       {
                           "paramname": "outputfile1",
                           "paramtype": "file",
                           "description": "出力ポート1の説明",
                           "descriptor": "D123450000000456"
                       },
                       {
                           "paramname": "outputfile2",
                           "paramtype": "file",
                           "description": "出力ポート2の説明",
                           "descriptor": "D123450000000789"
                       },
                       {
                           "paramname": "stderr",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "標準エラー",
                           "descriptor": "D123450000000001"
                       },
                       {
                           "paramname": "stdout",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "標準出力",
                           "descriptor": "D123450000000000"
                       }
                   ]
               },
               {
                   "key": 12,
                   "name": "TOOL3_01",
                   "category": "module",
                   "color": "orange",
                   "metadata": {
                       "identifier": "P0000001234",
                       "title": "JMatPro",
                       "description": "ツール3の説明を明記",
                       "creator": "材料太郎",
                       "date": "2017-01-05",
                       "version": "1.0.1",
                       "predictionModel": "M123450000000456",
                       "revision": "1"
                   },
                   "inputports": [
                       {
                           "paramname": "inputfile1",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "入力ポートの説明",
                           "descriptor": "D123450000000456",
                           "unit": "degree"
                       },
                       {
                           "paramname": "inputfile2",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "入力ポート2の説明",
                           "descriptor": "D123450000000789",
                           "unit": "degree",
                           "required": true
                       },
                       {
                           "paramname": "input3",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "入力ポート3の説明",
                           "descriptor": "D123450000003333",
                           "unit": "degree",
                           "required": true
                       }
                   ],
                   "outputports": [
                       {
                           "paramname": "finaldata",
                           "paramtype": "file",
                           "description": "出力ポート1の説明",
                           "descriptor": "D123450000009999"
                       },
                       {
                           "paramname": "stderr",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "標準エラー",
                           "descriptor": "D123450000000001"
                       },
                       {
                           "paramname": "stdout",
                           "paramtype": "file",
                           "paramdepth": 0,
                           "description": "標準出力",
                           "descriptor": "D123450000000000"
                       }
                   ]
               },
               {
                   "key": 1,
                   "name": "input1_01",
                   "category": "inputdata",
                   "color": "blue",
                   "paramtype": "file",
                   "paramdepth": 0,
                   "paramdefault": "10",
                   "description": "入力データの説明",
                   "descriptor": "D123450000001111",
                   "unit": "degree",
                   "required": true
               },
               {
                   "key": 2,
                   "name": "input2_01",
                   "category": "inputdata",
                   "color": "blue",
                   "paramtype": "file",
                   "paramdepth": 0,
                   "paramdefault": "ABCD",
                   "description": "入力データ2の説明",
                   "descriptor": "D123450000002222",
                   "unit": "degree"
               },
               {
                   "key": 3,
                   "name": "input3_01",
                   "category": "inputlist",
                   "color": "darkblue",
                   "paramtype": "file",
                   "paramdepth": 1,
                   "description": "入力データ3の説明",
                   "descriptor": "D123450000003333",
                   "listhandling": "cross",
                   "listpriority": 1,
                   "listtype": "random",
                   "listlower": 1,
                   "listupper": 100,
                   "listoption": 50,
                   "required": true
               },
               {
                   "key": 4,
                   "name": "output1_01",
                   "category": "outputdata",
                   "color": "green",
                   "paramtype": "file",
                   "paramdepth": 0,
                   "description": "出力データの説明",
                   "descriptor": "D123450000009999",
                   "unit": "degree"
               }
           ],
           "linkDataArray": [
               {
                   "id": 1,
                   "category": "linkdata",
                   "from": 1,
                   "to": 10,
                   "links": [
                       {
                           "fromport": "input1_01",
                           "toport": "input1"
                       }
                   ]
               },
               {
                   "id": 2,
                   "category": "linkdata",
                   "from": 2,
                   "to": 10,
                   "links": [
                       {
                           "fromport": "input2_01",
                           "toport": "input2"
                       }
                   ]
               },
               {
                   "id": 3,
                   "category": "runafter",
                   "from": 10,
                   "to": 11
               },
               {
                   "id": 4,
                   "category": "linkdata",
                   "from": 3,
                   "to": 12,
                   "links": [
                       {
                           "fromport": "input3_01",
                           "toport": "input3"
                       }
                   ]
               },
               {
                   "id": 5,
                   "category": "linkdata",
                   "from": 11,
                   "to": 12,
                   "links": [
                       {
                           "fromport": "outputfile1",
                           "toport": "inputfile1"
                       },
                       {
                           "fromport": "outputfile2",
                           "toport": "inputfile2"
                       }
                   ]
               },
               {
                   "id": 6,
                   "category": "linkdata",
                   "from": 12,
                   "to": 4,
                   "links": [
                       {
                           "fromport": "finaldata",
                           "toport": "output_01"
                       }
                   ]
               }
           ]
       },
       "nestedWorkflows": [
           {
               "metadata": {
                   "identifier": "W123450000012333",
                   "title": "WorkflowSample",
                   "description": "ワークフローについての説明を記述",
                   "creator": "材料太郎",
                   "date": "2017-01-05",
                   "predictionModel": "M123450000000456",
                   "revision": "1"
               },
               "diagramModel": {
                   "class": "go.GraphLinksModel",
                   "nodeDataArray": [
                       "省略"
                   ],
                   "linkDataArray": [
                       "省略"
                   ]
               }
           }
       ]
   }
}