メインコンテンツへスキップ
予定測定 (planned measurement) は、実施予定のテストをプロジェクト単位で記録したものです。リクエスターはチャンネルを持たない requested として作成し(見積もり実行時間を伴います)、後でスケジューラーがチャンネルと [planned_start_time, planned_end_time) の時間枠を割り当て、scheduled に移行させます。 予定測定は実際のセル測定を作成したり変更したりすることは決してありません。実テストが開始すると、実際の cell_measurement がプランへリンクバックし、プランを in_progress に移行させます — 予定行はリクエストとスケジュールの監査証跡として残ります。

使い分け

予定測定はオプションです — ラボビューに記載されている通り、測定を直接作成して実行時に channel_id を設定することもできます。次のような場合に予定測定を使用します:
  • プロジェクトまたは特定のセル仕様に対してリクエストされたテストのバックログを追跡したい。
  • 2 人のスケジューラーが同じチャンネルと時間枠を予約しないよう、将来のチャンネル時間を予約したい。
  • (科学者や PM からの)リクエストと、(ラボオペレーターによる)スケジュールの決定を分離したい。
  • 各テストを誰がリクエストし、誰がスケジュールしたかの監査証跡を残したい。
サイクラーが 1 台だけで、テストをアドホックに開始する場合は、測定を直接チャンネルにリンクし続け、予定測定は使わないでください。

ライフサイクル

スケジュールは完全に手動です — スケジューラーがチャンネルと時刻を選びます。自動オプティマイザはありません。 scheduled プランで将来のチャンネル時間を予約しても、ラボビューでチャンネルが occupied として表示されることはありません — それは実行中の実測定のみが行います。プランはカレンダーを予約し、cell_measurement は現時点を予約します。

フィールド

name はプロジェクト内で一意(大文字小文字を区別しない)です。重複する名前でプランを作成すると IonworksErrorerror_code == "CONFLICT"(HTTP 409)で発生します。作成を冪等にするには create_or_get を使用してください。

測定のリクエスト

チャンネルなしの requested プランを作成し、見積もり実行時間と、必要であればテスト対象のセル仕様を指定します。具体的なインスタンスは後でスケジューラーが選択します。
名前で冪等にリクエストするには create_or_get を使用します:

チャンネルへのスケジュール

schedule でチャンネルと時間枠を割り当てます — これは requested プランを scheduled に移行する便利なラッパーです。
最初から scheduled として一度に作成することもできます:
チャンネル上ですでに使用中の枠と衝突する場合、スケジュールは拒否されます。別のチャンネルまたは時間枠を選んで再試行してください。 既存プランのキャンセルや完了は、チャンネルが運用停止になった後でも常に許可されます。

一覧取得とフィルタリング

list はプロジェクト単位で、PaginatedList[PlannedMeasurement] を返します。ライフサイクルステータス、チャンネル、名前でフィルタリングできます。

更新、キャンセル、削除

プランを再スケジュールするには、新しいチャンネルまたは時間枠で schedule を再度呼び出す(あるいは個別フィールドを update する)だけです。サーバーは新しい値に対して重複と運用停止のチェックを再実行します。

実測定をプランにリンクする

プランを手動で in_progress に遷移させることはありません。実行が開始したら、planned_measurement_id を設定した cell_measurement を作成します — バックエンドがそれをリンクし、アトミックにプランを in_progress へ移行させます。
以下のすべてが成立しない限り、リンクは HTTP 400 で拒否されます:
  • プランが scheduled である。
  • 測定が time_series タイプであり、channel_id を持っている(channel_id のない planned_measurement_id は拒否)。
  • プランと測定が同じプロジェクトおよび組織にある。
  • 測定の channel_id がプランの channel_id と一致する。
  • プランに cell_instance_id が設定されている場合、測定は同じセルインスタンスで実行される必要がある。
2 つの並行測定が同じプランを取得することは決してありません — リンクは status = scheduled に対するアトミックな compare-and-set であり、負けた側はリンクされないまま残されます(警告としてログに記録されます)。 リンク後は、ラボビュー上のチャンネル占有状態は実行中の cell_measurement によって駆動されます。予定行は監査証跡として残ります。

権限

予定測定のエンドポイントは既存の cell_measurement 権限を再利用します:

project_id

すべての client.planned_measurement.* メソッドは任意の project_id を受け付けます。省略した場合、Ionworks クライアントに設定されている project_id(または IONWORKS_PROJECT_ID 環境変数)にフォールバックします。どこからも project_id が取得できない場合は ValueError が発生します。

次のステップ

ラボビュー

予定測定がスケジュールされるサイト、サイクラー、チャンネルをセットアップします。

測定

スケジュール済みプランへリンクバックする実際の cell_measurement を作成します。