概要
hierarchidb のフォルダ構造を IDE-GSM のプロジェクトとして扱い、import → calib → sim → export 、またはrsync-push → calib → sim → rsync-pull を順次実行する SimulationWorkflow を実装する。
背景
IDE-GSM の importProject / exportProject / calibrate / simulate API(ide-gsm PR #265)と、IdeGsmClient(#1155)が実装されることで、hierarchidb 側からシミュレーションを一貫して実行できるようになる。
実装内容(ここではimport/exportの場合を説明する。rsyncについてもこれに準ずる)
SimulationWorkflow クラスを新規作成する:
client: IdeGsmClient を保持する
runSimulation(folderNode, projectRelativePath, exportFilter?) メソッドを実装する:
folderNode の内容を ProjectSnapshot(ZIP Base64)にシリアライズする
client.importProject(projectSnapshot, projectRelativePath) → awaitTask() で完了待機
client.calibrate(projectRelativePath) → awaitTask() で完了待機
client.simulate(projectRelativePath) → awaitTask() で完了待機
client.exportProject(projectRelativePath, include?, exclude?) → awaitTask() で完了待機
- 取得した ProjectSnapshot を
YamlFileNode / 結果ノードとして hierarchidb のツリーに格納する
- いずれかのステップでエラーが発生した場合は後続ステップを実行せず例外をスローする
ワークフロー図(ここではimport/exportの場合を説明する。rsyncについてもこれに準ずる)
hierarchidb フォルダ
↓ シリアライズ(ZIP Base64)
importProject → IDE-GSM ワークディレクトリに展開
↓
calibrate → キャリブレーション実行
↓
simulate → シミュレーション実行
↓
exportProject → result-files/ を ZIP Base64 で取得
↓ デシリアライズ
hierarchidb ツリーに結果ノードとして格納
UI 要件
- 各ステップの実行状態(実行中・完了・失敗)をユーザーが確認できる UI を提供する
- エラー発生時はエラー内容をユーザーに通知する
- IDE-GSM への接続設定(エンドポイント URL・認証トークン)を設定として保持する
受け入れ基準(ここではimport/exportの場合を説明する。rsyncについてもこれに準ずる)
- import → calib → sim → export の順序で実行される
- 前のステップが完了してから次のステップが実行される
- いずれかのステップでエラーが発生した場合、後続ステップは実行されない
- exportProject で取得した結果が hierarchidb のツリーノードとして閲覧できる
関連
概要
hierarchidb のフォルダ構造を IDE-GSM のプロジェクトとして扱い、import → calib → sim → export 、またはrsync-push → calib → sim → rsync-pull を順次実行する
SimulationWorkflowを実装する。背景
IDE-GSM の
importProject/exportProject/calibrate/simulateAPI(ide-gsm PR #265)と、IdeGsmClient(#1155)が実装されることで、hierarchidb 側からシミュレーションを一貫して実行できるようになる。実装内容(ここではimport/exportの場合を説明する。rsyncについてもこれに準ずる)
SimulationWorkflowクラスを新規作成する:client: IdeGsmClientを保持するrunSimulation(folderNode, projectRelativePath, exportFilter?)メソッドを実装する:folderNodeの内容を ProjectSnapshot(ZIP Base64)にシリアライズするclient.importProject(projectSnapshot, projectRelativePath)→awaitTask()で完了待機client.calibrate(projectRelativePath)→awaitTask()で完了待機client.simulate(projectRelativePath)→awaitTask()で完了待機client.exportProject(projectRelativePath, include?, exclude?)→awaitTask()で完了待機YamlFileNode/ 結果ノードとして hierarchidb のツリーに格納するワークフロー図(ここではimport/exportの場合を説明する。rsyncについてもこれに準ずる)
UI 要件
受け入れ基準(ここではimport/exportの場合を説明する。rsyncについてもこれに準ずる)
関連