Skip to content

feat(yaml-ide-gsm): migrate SimulationWorkflow successor scope #1156

Description

@kubohiroya

概要

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?) メソッドを実装する:
    1. folderNode の内容を ProjectSnapshot(ZIP Base64)にシリアライズする
    2. client.importProject(projectSnapshot, projectRelativePath)awaitTask() で完了待機
    3. client.calibrate(projectRelativePath)awaitTask() で完了待機
    4. client.simulate(projectRelativePath)awaitTask() で完了待機
    5. client.exportProject(projectRelativePath, include?, exclude?)awaitTask() で完了待機
    6. 取得した ProjectSnapshot を YamlFileNode / 結果ノードとして hierarchidb のツリーに格納する
    7. いずれかのステップでエラーが発生した場合は後続ステップを実行せず例外をスローする

ワークフロー図(ここでは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 のツリーノードとして閲覧できる

関連

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:simulationSimulation workflow areaarea:yamlYAML plugin and storage areaneeds:rescopeScope or acceptance criteria need revisiontype:featureNew capability or behavior

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions