IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナットクラッカー セラピューティクス, インコーポレイテッドの特許一覧

特表2024-532184状態機械ベースのスクリプトアプリケーション及びシステム
<>
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図1
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図2
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図3
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図4
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図5
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図6
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図7
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図8
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図9
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図10
  • 特表-状態機械ベースのスクリプトアプリケーション及びシステム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-05
(54)【発明の名称】状態機械ベースのスクリプトアプリケーション及びシステム
(51)【国際特許分類】
   G06F 11/34 20060101AFI20240829BHJP
【FI】
G06F11/34 176
G06F11/34 114
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024510282
(86)(22)【出願日】2022-08-29
(85)【翻訳文提出日】2024-03-18
(86)【国際出願番号】 US2022041795
(87)【国際公開番号】W WO2023034163
(87)【国際公開日】2023-03-09
(31)【優先権主張番号】63/238,994
(32)【優先日】2021-08-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521126302
【氏名又は名称】ナットクラッカー セラピューティクス, インコーポレイテッド
(74)【代理人】
【識別番号】110002848
【氏名又は名称】弁理士法人NIP&SBPJ国際特許事務所
(72)【発明者】
【氏名】ツィマーマン、タマス
(72)【発明者】
【氏名】ジョーダン、ケネス
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GB06
5B042MA08
5B042MC40
(57)【要約】
例示的なシステムは、複数のスクリプト可能なデバイスを含み、その各々は、インターフェースを公開する。システムはまた、マッピングされた複数のデバイス動作の各々について、複数のスクリプト可能なデバイスから対応するデバイスに提供するための1つ以上の入力と、そのデバイス動作と対応するアプリケーションコマンドとの間の変換と、を示す、データを記憶する媒体を備え得る。そのようなシステムでは、媒体はまた、複数のスクリプトを記憶し得、スクリプトの各々は、複数のスクリプト可能なデバイスからの対応するスクリプト可能なデバイスを有し得、かつデバイス動作のセットを含み得る。システムはまた、アプリケーションコマンドが実行されるべきかどうかを判定することと、実行されるべきときに、そのコマンドに対応するグローバル一意識別子を生成することと、そのグローバル一意識別子及びそのコマンドに対応するデバイス動作をログに追加することと、を含む、動作サイクルを繰り返し事前成形するためのコンピュータを備え得る。
【特許請求の範囲】
【請求項1】
システムであって、前記システムが、
複数のスクリプト可能なデバイスであって、各スクリプト可能なデバイスが、
インターフェースを公開しており、かつ
そのインターフェースを介して提供される入力に基づいて所定のアクションを実施するように適合されている、複数のスクリプト可能なデバイスと、
非一時的コンピュータ可読媒体であって、
マッピングされた複数のデバイス動作の各々について、
そのデバイス動作を実施するときに、前記複数のスクリプト可能なデバイスからの対応するデバイスに提供するための、1つ以上の入力と、
そのデバイス動作と対応するアプリケーションコマンドとの間の変換と、を示す、データと、
複数のスクリプトであって、前記複数のスクリプトからの各スクリプトが、
前記複数のスクリプト可能なデバイスからの対応するスクリプト可能なデバイスを有しており、かつ
デバイス動作のセットを備える、複数のスクリプトと、を記憶する、非一時的コンピュータ可読媒体と、
行為を実施するためのコンピュータであって、前記行為が、
動作サイクルを実施することであって、前記動作サイクルが、
アプリケーションコマンドが実行されるべきかどうかを判定することと、
前記アプリケーションコマンドが実行されるべきであると判定することに基づいて、
そのアプリケーションコマンドに対応するグローバル一意識別子を生成することと、
そのアプリケーションコマンドに対応する前記グローバル一意識別子及びそのアプリケーションコマンドに対応するデバイス動作を、ログに追加することと、を含む、実施することと、
前記動作サイクルを1回以上繰り返すことと、を含む、コンピュータと、を備える、システム。
【請求項2】
前記コンピュータが実施する前記行為が、前記複数のスクリプト可能なデバイスからの各デバイスについて、
そのデバイスが前記対応するスクリプト可能なデバイスである各スクリプトからの各デバイス動作が、前記マッピングされた複数のデバイス動作にいつ含まれるかを判定することと、
そのデバイスが前記対応するスクリプト可能なデバイスであり、前記マッピングされた複数のデバイス動作に含まれないと判定されたデバイス動作を含む各スクリプトについて、エラーメッセージを生成することと、を含む、請求項1に記載のシステム。
【請求項3】
前記非一時的コンピュータ可読媒体が、前記マッピングされた複数のデバイス動作の各々について、そのデバイス動作のための前記対応するアプリケーションコマンドを実行するためのデバイスモジュールオブジェクトを定義する対応するデバイスモジュール定義を示すデータを更に記憶しており、かつ
前記マッピングされた複数のデバイス動作の各々について、そのデバイス動作と前記対応するアプリケーションコマンドとの間の前記変換を示す前記データが、そのデバイス動作に対応する前記デバイスモジュール定義に含まれる、請求項1又は2に記載のシステム。
【請求項4】
前記動作サイクルが、
前記複数のスクリプトから、スクリプトを実行するための実行コマンドを受信することと、
前記実行コマンドを受信することに応答して、前記スクリプトに含まれる前記複数のデバイス動作からの各デバイス動作について、
そのデバイス動作が前記マッピングされた複数のデバイス動作に含まれることを確認することと、
任意の関連付けられたパラメータを有する前記デバイス動作が、そのデバイス動作に対応する前記デバイスモジュール定義によって定義された前記デバイスモジュールによって実行可能であることを確認することと、を含む、請求項3に記載のシステム。
【請求項5】
前記動作サイクルを実施するときに、前記アプリケーションコマンドが実行されるべきかどうかを判定することが、
前記アプリケーションコマンドを、前記アプリケーションコマンドの対応するデバイス動作に対応する前記デバイスに対応するキューにエンキューすることであって、前記デバイスが、本明細書では、前記アプリケーションコマンドの対応するデバイスと称される、エンキューすることと、
前記アプリケーションコマンドの対応するデバイスに対応するスレッドに対応する状態をチェックすることと、を含む、請求項1~4のいずれか一項に記載のシステム。
【請求項6】
前記動作サイクルを実施するときに、前記アプリケーションコマンドが実行されるべきかどうかを判定することが、グラフィカルユーザインターフェースを介して、前記アプリケーションコマンドの対応するデバイス動作に対応する前記デバイスを制御するための命令を受信することを含む、請求項1~4のいずれか一項に記載のシステム。
【請求項7】
方法であって、前記方法が、
モジュールクラス定義を記憶する非一時的コンピュータ可読媒体にアクセスすることと、
複数のデバイスオブジェクト定義を取得することであって、各デバイスオブジェクト定義が、
物理デバイスに対応し、
前記モジュールクラス定義を継承し、かつ
そのデバイスオブジェクト定義の対応する物理デバイスによって実行可能な複数のコマンドの各々について、
そのコマンドに対応する状態と、
そのコマンドに対応する前記状態で実行するための1つ以上の動作と、
そのデバイスに対応する前記物理デバイスに発行するための1つ以上の入力と、を指定する、取得することと、
複数の中間モジュール定義を取得することであって、各中間モジュール定義が、
前記モジュールクラス定義を継承し、かつ
各々がデバイスオブジェクト定義に対応するデバイスオブジェクトのセットへの参照を含む、取得することと、
モジュールマネージャ定義を取得することであって、前記モジュールマネージャ定義が、
前記モジュールクラス定義を継承し、かつ
各々が中間モジュール定義に対応する複数の中間モジュールへの参照を含む、取得することと、
アプリケーションを起動することと、を含み、前記アプリケーションを起動することが、各デバイスオブジェクト定義については、
そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトのためにメモリを割り当てることであって、そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトがコマンドキューを備える、割り当てることと、
対応するスレッドを、
そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトの現在の状態を追跡するため、
そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトの前記現在の状態が
そのデバイスオブジェクト定義において指定された状態と同じであるときに、そのコマンドに対して指定された1つ以上の動作を実行するため、かつ
そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトの前記現在の状態を更新するかどうかを、そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトに含まれる前記コマンドキュー内のコマンドの存在及び優先度に基づいて判定するための命令を実行するように割り当てることと、を含み、
各中間モジュール定義については、
その中間モジュール定義に対応する前記中間モジュールのためにメモリを割り当てることと、
対応するスレッドを、その中間モジュール定義に対応する前記中間モジュールに含まれる参照を有する前記デバイスオブジェクトにコマンドを送信するための命令を実行するように割り当てることと、を含む、方法。
【請求項8】
各デバイスオブジェクト定義が、そのデバイスオブジェクト定義によって定義された前記デバイスオブジェクトがアイドル状態にある間に実行する動作のセットを指定し、かつ
各デバイスオブジェクト定義について、前記対応するスレッドが、そのデバイスオブジェクト定義によって定義された前記デバイスオブジェクトがアイドル状態にある間に実行するように指定された前記動作のセットを実行するためのものである、請求項7に記載の方法。
【請求項9】
前記複数のデバイスオブジェクト定義が、温度コントローラデバイスオブジェクト定義を含み、
前記温度コントローラデバイスオブジェクト定義によって定義された前記デバイスオブジェクトがアイドル状態にある間に実行するように前記温度コントローラデバイスオブジェクト定義が指定する、前記動作のセットが、システムの温度をチェックすることを含む、請求項8に記載の方法。
【請求項10】
各デバイスオブジェクト定義について、そのデバイスオブジェクト定義に含まれる全てのループが決定論的終了を有する、請求項7~9のいずれか一項に記載の方法。
【請求項11】
前記モジュールクラス定義を継承する定義によって定義された各データオブジェクトが、
アイドル状態と、
停止状態と、
シャットダウン状態と、
ブートアップ状態と、を含む状態を有する、状態機械であり、かつ
コマンドキューを備える、請求項7~10のいずれか一項に記載の方法。
【請求項12】
各デバイスオブジェクト定義について、前記モジュールマネージャ定義が、そのデバイスオブジェクト定義に対応する前記物理デバイスを、行為によって制御するための命令を含み、前記行為が、
コマンドオブジェクトをインスタンス化することと、
前記コマンドオブジェクトを、前記中間モジュール定義によって定義された前記中間モジュールに渡すことであって、前記中間モジュール定義が、そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトへの参照を含む、渡すことと、を含み、
前記コマンドオブジェクトが、コマンドオブジェクト定義によって定義され、かつ
前記コマンドオブジェクト定義及び前記モジュールクラス定義の両方が、ベースオブジェクト定義を継承する、請求項7~11のいずれか一項に記載の方法。
【請求項13】
前記ベースオブジェクト定義が、前記ベースオブジェクト定義を継承する定義によって定義されたオブジェクトがインスタンス化されるときはいつでも、
そのオブジェクトの一意の識別子を生成することと、
前記一意の識別子を、プライベートデータとしてそのオブジェクトに記憶することと、を行うための命令を含む、請求項12に記載の方法。
【請求項14】
システムであって、前記システムが、
複数のスクリプト可能なデバイスであって、各スクリプト可能なデバイスが、
物理デバイスであり、
インターフェースを公開しており、かつ
そのインターフェースを介して提供される入力に基づいて所定のアクションを実施するように適合されている、複数のスクリプト可能なデバイスと、
非一時的コンピュータ可読媒体であって、
マッピングされた複数のデバイス動作の各々について、
そのデバイス動作を実施するときに、前記複数のスクリプト可能なデバイスからの対応するデバイスに提供するための、1つ以上の入力と、
そのデバイス動作と対応するアプリケーションコマンドとの間の変換と、
複数の中間モジュール定義であって、各中間モジュール定義が、各々が前記スクリプト可能なデバイスのうちの1つに対応するデバイスオブジェクトのセットへの参照を含む、複数の中間モジュール定義と、を示す、データと、
複数のスクリプトであって、前記複数のスクリプトからの各スクリプトが、
前記複数のスクリプト可能なデバイスからの対応するスクリプト可能なデバイスを有しており、かつ
デバイス動作のセットを備える、複数のスクリプトと、を記憶する、非一時的コンピュータ可読媒体と、
行為を実施するためのコンピュータであって、前記行為が、
アプリケーションを起動することであって、前記アプリケーションを起動することが、
各スクリプト可能なデバイスについては、
そのスクリプト可能なデバイスに対応するデバイスオブジェクトのためにメモリを割り当てることと、
対応するスレッドを、
そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトの現在の状態を追跡するため、
そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトの前記現在の状態がそのデバイスオブジェクト定義において指定された状態と同じであるときに、そのコマンドに対して指定された1つ以上の動作を実行するため、かつ
そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトの前記現在の状態を更新するかどうかを、そのデバイスオブジェクト定義に対応する前記デバイスオブジェクトに含まれる前記コマンドキュー内のコマンドの存在及び優先度に基づいて判定するための命令を実行するように割り当てることと、を含み、
各中間モジュール定義については、
その中間モジュール定義に対応する中間モジュールのためにメモリを割り当てることと、
対応するスレッドを、その中間モジュール定義に対応する前記中間モジュールに含まれる参照を有する前記デバイスオブジェクトにコマンドを送信するための命令を実行するように割り当てることと、を含む、起動することと、
動作サイクルを実施することであって、前記動作サイクルが、
アプリケーションコマンドが実行されるべきかどうかを判定することと、
前記アプリケーションコマンドが実行されるべきであると判定することに基づいて、
そのアプリケーションコマンドに対応するグローバル一意識別子を生成することと、
そのアプリケーションコマンドに対応する前記グローバル一意識別子及びそのアプリケーションコマンドに対応するデバイス動作を、ログに追加することと、を含む、実施することと、
前記動作サイクルを1回以上繰り返すことと、を含む、コンピュータと、を備える、システム。
【請求項15】
前記コンピュータが実施する前記行為が、前記複数のスクリプト可能なデバイスからの各デバイスについて、
そのデバイスが前記対応するスクリプト可能なデバイスである各スクリプトからの各デバイス動作が、前記マッピングされた複数のデバイス動作にいつ含まれるかを判定することと、
そのデバイスが前記対応するスクリプト可能なデバイスであり、前記マッピングされた複数のデバイス動作に含まれないと判定されたデバイス動作を含む各スクリプトについて、エラーメッセージを生成することと、を含む、請求項14に記載のシステム。
【請求項16】
前記非一時的コンピュータ可読媒体が、前記マッピングされた複数のデバイス動作の各々について、そのデバイス動作のための前記対応するアプリケーションコマンドを実行するためのデバイスモジュールオブジェクトを定義する対応するデバイスモジュール定義を示すデータを更に記憶しており、かつ
前記マッピングされた複数のデバイス動作の各々について、そのデバイス動作と前記対応するアプリケーションコマンドとの間の前記変換を示す前記データが、そのデバイス動作に対応する前記デバイスモジュール定義に含まれる、請求項14又は15に記載のシステム。
【請求項17】
前記動作サイクルが、
前記複数のスクリプトから、スクリプトを実行するための実行コマンドを受信することと、
前記実行コマンドを受信することに応答して、前記スクリプトに含まれる前記複数のデバイス動作からの各デバイス動作について、
そのデバイス動作が前記マッピングされた複数のデバイス動作に含まれることを確認することと、
任意の関連付けられたパラメータを有する前記デバイス動作が、そのデバイス動作に対応する前記デバイスモジュール定義によって定義された前記デバイスモジュールによって実行可能であることを確認することと、を含む、請求項16に記載のシステム。
【請求項18】
前記アプリケーションコマンドが実行されるべきであると判定することに基づいて、前記動作サイクルが、
そのアプリケーションコマンドに対応するコマンドオブジェクトをインスタンス化することと、
前記コマンドオブジェクトを中間モジュールに渡すことと、を含み、
前記コマンドオブジェクト、各デバイスオブジェクト、及び各中間モジュールが、共通のベースオブジェクト定義を継承するクラスをインスタンス化する、請求項14~17のいずれか一項に記載のシステム。
【請求項19】
前記ベースオブジェクト定義が、前記ベースオブジェクト定義を継承する定義によって定義されたオブジェクトがインスタンス化されるときはいつでも、
そのオブジェクトの一意の識別子を生成することと、
前記一意の識別子を、プライベートデータとしてそのオブジェクトに記憶することと、を行うための命令を含む、請求項18に記載のシステム。
【請求項20】
各スクリプト可能なデバイスについて、そのスクリプト可能なデバイスに対応する前記スレッドに含まれる全てのループが決定論的終了を有する、請求項14~19のいずれか一項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
本節で考察される主題は、単に本節で言及された結果として先行技術であると想定されるべきではない。同様に、本節で言及される問題、又は背景として提供される主題に関連する問題は、先行技術において以前に認識されていたと想定されるべきではない。本節における主題は、異なるアプローチを表すに過ぎず、それらアプローチ自体もまた、特許請求される技術の実装形態に対応し得る。
【0002】
アプリケーションを開発するためのいくつかの現在利用可能な技術、例えばポリヌクレオチド治療剤(例えば、mRNA治療剤など)を製造及び製剤化する際に使用される技術は、プロセスエンジニアによって作成され得るスクリプトなどの外部スクリプトを統合することができない場合がある。追加的に、そのような技術を用いて作成されたアプリケーションは、実行中又は他の場所でエラーに遭遇した場合に不十分な追跡可能性を提供する場合がある。
【発明の概要】
【0003】
改善されたフレームワークは、アプリケーションの開発及び動作の両方を改善し得る。モジュール式の非ブロッキング状態機械としてアプリケーションを構造化することにより、これらの目標を前進させ得、外部スクリプトの統合並びにデータ及びアプリケーション活動のロギングなどの機能を組み込むことにより、追跡可能性、及び該当する場合、規制遵守を改善し得る。本明細書には、ポリヌクレオチド製造のためのシステムの制御に適用され得るものを含む、そのようなアプリケーションを作成及び動作させる際に使用され得る、システム及び方法が説明される。
【0004】
実装形態は、システムに関し、システムは、複数のスクリプト可能なデバイスであって、各スクリプト可能なデバイスが、インターフェースを公開しており、かつそのインターフェースを介して提供される入力に基づいて所定のアクションを実施するように適合されている、複数のスクリプト可能なデバイスと、非一時的コンピュータ可読媒体であって、マッピングされた複数のデバイス動作の各々について、そのデバイス動作を実施するときに、複数のスクリプト可能なデバイスからの対応するデバイスに提供するための、1つ以上の入力と、そのデバイス動作と対応するアプリケーションコマンドとの間の変換と、を示す、データと、複数のスクリプトであって、複数のスクリプトからの各スクリプトが、複数のスクリプト可能なデバイスからの対応するスクリプト可能なデバイスを有しており、かつデバイス動作のセットを備える、複数のスクリプトと、を記憶する、非一時的コンピュータ可読媒体と、行為を実施するためのコンピュータであって、行為が、動作サイクルを実施することであって、動作サイクルが、アプリケーションコマンドが実行されるべきかどうかを判定することと、アプリケーションコマンドが実行されるべきであると判定することに基づいて、そのアプリケーションコマンドに対応するグローバル一意識別子を生成することと、そのアプリケーションコマンドに対応するグローバル一意識別子及びそのアプリケーションコマンドに対応するデバイス動作を、ログに追加することと、を含む、実施することと、動作サイクルを1回以上繰り返すことと、を含む、コンピュータと、を含む。
【0005】
本概要の前段落に説明されているようなシステムのいくつかの実装形態では、コンピュータが実施する行為は、複数のスクリプト可能なデバイスからの各デバイスについて、そのデバイスが対応するスクリプト可能なデバイスである各スクリプトからの各デバイス動作が、マッピングされた複数のデバイス動作にいつ含まれるかを判定することと、そのデバイスが対応するスクリプト可能なデバイスであり、マッピングされた複数のデバイス動作に含まれないと判定されたデバイス動作を含む各スクリプトについて、エラーメッセージを生成することと、を含む。
【0006】
本概要の第2又は第3の段落のいずれかに説明されているようなシステムのいくつかの実装形態では、非一時的コンピュータ可読媒体は、マッピングされた複数のデバイス動作の各々について、そのデバイス動作のための対応するアプリケーションコマンドを実行するためのデバイスモジュールオブジェクトを定義する対応するデバイスモジュール定義を示すデータを更に記憶しており、かつマッピングされた複数のデバイス動作の各々について、そのデバイス動作と対応するアプリケーションコマンドとの間の変換を示すデータが、そのデバイス動作に対応するデバイスモジュール定義に含まれる。
【0007】
本概要の前段落に説明されているようなシステムのいくつかの実装形態では、動作サイクルは、複数のスクリプトから、スクリプトを実行するための実行コマンドを受信することと、実行コマンドを受信することに応答して、スクリプトに含まれる複数のデバイス動作からの各デバイス動作について、そのデバイス動作がマッピングされた複数のデバイス動作に含まれることを確認することと、任意の関連付けられたパラメータを有するデバイス動作が、そのデバイス動作に対応するデバイスモジュール定義によって定義されたデバイスモジュールによって実行可能であることを確認することと、を含み得る。
【0008】
本概要の第2~第5の段落のいずれかに説明されているようなシステムのいくつかの実装形態では、動作サイクルを実施するときに、アプリケーションコマンドが実行されるべきかどうかを判定することは、アプリケーションコマンドを、アプリケーションコマンドの対応するデバイス動作に対応するデバイスに対応するキューにエンキューすることであって、当該デバイスが、本明細書では、アプリケーションコマンドの対応するデバイスと称される、エンキューすることと、アプリケーションコマンドの対応するデバイスに対応するスレッドに対応する状態をチェックすることと、を含み得る。
【0009】
本概要の第2~第5の段落のいずれかに説明されているようなシステムのいくつかの実装形態では、動作サイクルを実施するときに、アプリケーションコマンドが実行されるべきかどうかを判定することは、グラフィカルユーザインターフェースを介して、アプリケーションコマンドの対応するデバイス動作に対応するデバイスを制御するための命令を受信することを含む。
【0010】
別の実装形態は、方法に関し、方法は、モジュールクラス定義を記憶する非一時的コンピュータ可読媒体にアクセスすることと、複数のデバイスオブジェクト定義を取得することであって、各デバイスオブジェクト定義が、物理デバイスに対応し、モジュールクラス定義を継承し、かつそのデバイスオブジェクト定義の対応する物理デバイスによって実行可能な複数のコマンドの各々について、そのコマンドに対応する状態と、そのコマンドに対応する状態で実行するための1つ以上の動作と、そのデバイスに対応する物理デバイスに発行するための1つ以上の入力と、を指定する、取得することと、複数の中間モジュール定義を取得することであって、各中間モジュール定義が、モジュールクラス定義を継承し、かつ各々がデバイスオブジェクト定義に対応するデバイスオブジェクトのセットへの参照を含む、取得することと、モジュールマネージャ定義を取得することであって、モジュールマネージャ定義が、モジュールクラス定義を継承し、かつ各々が中間モジュール定義に対応する複数の中間モジュールへの参照を含む、取得することと、アプリケーションを起動することと、を含み、アプリケーションを起動することは、各デバイスオブジェクト定義については、そのデバイスオブジェクト定義に対応するデバイスオブジェクトのためにメモリを割り当てることであって、そのデバイスオブジェクト定義に対応するデバイスオブジェクトが、コマンドキューを備える、割り当てることと、対応するスレッドを、そのデバイスオブジェクト定義に対応するデバイスオブジェクトの現在の状態を追跡するため、そのデバイスオブジェクト定義に対応するデバイスオブジェクトの現在の状態がそのデバイスオブジェクト定義において指定された状態と同じであるときに、そのコマンドに対して指定された1つ以上の動作を実行するため、かつそのデバイスオブジェクト定義に対応するデバイスオブジェクトの現在の状態を更新するかどうかを、そのデバイスオブジェクト定義に対応するデバイスオブジェクトに含まれるコマンドキュー内のコマンドの存在及び優先度に基づいて判定するための命令を実行するように割り当てることと、を含み、各中間モジュール定義については、その中間モジュール定義に対応する中間モジュールのためにメモリを割り当てることと、対応するスレッドを、その中間モジュール定義に対応する中間モジュールに含まれる参照を有するデバイスオブジェクトにコマンドを送信するための命令を実行するように割り当てることと、を含む。
【0011】
本概要の前段落に説明されているような方法のいくつかの実装形態では、各デバイスオブジェクト定義は、そのデバイスオブジェクト定義によって定義されたデバイスオブジェクトがアイドル状態にある間に実行する動作のセットを指定し、かつ各デバイスオブジェクト定義について、対応するスレッドは、そのデバイスオブジェクト定義によって定義されたデバイスオブジェクトがアイドル状態にある間に実行するように指定された動作のセットを実行するためのものである。
【0012】
本概要の前段落に説明されているような方法のいくつかの実装形態では、複数のデバイスオブジェクト定義は、温度コントローラデバイスオブジェクト定義を含み、温度コントローラデバイスオブジェクト定義によって定義されたデバイスオブジェクトがアイドル状態にある間に実行するように温度コントローラデバイスオブジェクト定義が指定する、動作のセットは、システムの温度をチェックすることを含む。
【0013】
本概要の第8~第10の段落のいずれかに説明されているような方法のいくつかの実装形態では、各デバイスオブジェクト定義について、そのデバイスオブジェクト定義に含まれる全てのループは決定論的終了を有する。
【0014】
本概要の第8~第11の段落のいずれかに説明されているような方法のいくつかの実装形態では、モジュールクラス定義を継承する定義によって定義された各データオブジェクトは、アイドル状態と、停止状態と、シャットダウン状態と、ブートアップ状態と、を含む状態を有する、状態機械であり、かつコマンドキューを備える。
【0015】
本概要の第8~第12の段落のいずれかに説明されているような方法のいくつかの実装形態では、各デバイスオブジェクト定義について、モジュールマネージャ定義は、そのデバイスオブジェクト定義に対応する物理デバイスを、行為によって制御するための命令を含み、行為は、コマンドオブジェクトをインスタンス化することと、コマンドオブジェクトを、中間モジュール定義によって定義された中間モジュールに渡すことであって、中間モジュール定義が、そのデバイスオブジェクト定義に対応するデバイスオブジェクトへの参照を含む、渡すことと、を含み、コマンドオブジェクトは、コマンドオブジェクト定義によって定義され、かつコマンドオブジェクト定義及びモジュールクラス定義の両方は、ベースオブジェクト定義を継承する。
【0016】
本概要の前段落に説明されているような方法のいくつかの実装形態では、ベースオブジェクト定義は、ベースオブジェクト定義を継承する定義によって定義されたオブジェクトがインスタンス化されるときはいつでも、そのオブジェクトの一意の識別子を生成することと、一意の識別子を、プライベートデータとしてそのオブジェクトに記憶することと、を行うための命令を含む。
【0017】
別の実装形態は、システムに関し、システムは、複数のスクリプト可能なデバイスであって、各スクリプト可能なデバイスが、物理デバイスであり、インターフェースを公開しており、かつそのインターフェースを介して提供される入力に基づいて所定のアクションを実施するように適合されている、複数のスクリプト可能なデバイスと、非一時的コンピュータ可読媒体であって、マッピングされた複数のデバイス動作の各々について、そのデバイス動作を実施するときに、複数のスクリプト可能なデバイスからの対応するデバイスに提供するための、1つ以上の入力と、そのデバイス動作と対応するアプリケーションコマンドとの間の変換と、複数の中間モジュール定義であって、各中間モジュール定義が、各々がスクリプト可能なデバイスのうちの1つに対応するデバイスオブジェクトのセットへの参照を含む、複数の中間モジュール定義と、を示す、データと、複数のスクリプトであって、複数のスクリプトからの各スクリプトが、複数のスクリプト可能なデバイスからの対応するスクリプト可能なデバイスを有しており、かつデバイス動作のセットを備える、複数のスクリプトと、を記憶する、非一時的コンピュータ可読媒体と、行為を実施するためのコンピュータであって、行為が、アプリケーションを起動することであって、アプリケーションを起動することが、各スクリプト可能なデバイスについては、そのスクリプト可能なデバイスに対応するデバイスオブジェクトのためにメモリを割り当てることと、対応するスレッドを、そのデバイスオブジェクト定義に対応するデバイスオブジェクトの現在の状態を追跡するため、そのデバイスオブジェクト定義に対応するデバイスオブジェクトの現在の状態がそのデバイスオブジェクト定義において指定された状態と同じであるときに、そのコマンドに対して指定された1つ以上の動作を実行するため、かつそのデバイスオブジェクト定義に対応するデバイスオブジェクトの現在の状態を更新するかどうかを、そのデバイスオブジェクト定義に対応するデバイスオブジェクトに含まれるコマンドキュー内のコマンドの存在及び優先度に基づいて判定するための命令を実行するように割り当てることと、を含み、各中間モジュール定義については、その中間モジュール定義に対応する中間モジュールのためにメモリを割り当てることと、対応するスレッドを、その中間モジュール定義に対応する中間モジュールに含まれる参照を有するデバイスオブジェクトにコマンドを送信するための命令を実行するように割り当てることと、を含む、起動することと、動作サイクルを実施することであって、動作サイクルが、アプリケーションコマンドが実行されるべきかどうかを判定することと、アプリケーションコマンドが実行されるべきであると判定することに基づいて、そのアプリケーションコマンドに対応するグローバル一意識別子を生成することと、そのアプリケーションコマンドに対応するグローバル一意識別子及びそのアプリケーションコマンドに対応するデバイス動作を、ログに追加することと、を含む、実施することと、動作サイクルを1回以上繰り返すことと、を含む、コンピュータと、を備える。
【0018】
本概要の前段落に説明されているようなシステムのいくつかの実装形態では、コンピュータが実施する行為は、複数のスクリプト可能なデバイスからの各デバイスについて、そのデバイスが対応するスクリプト可能なデバイスである各スクリプトからの各デバイス動作が、マッピングされた複数のデバイス動作にいつ含まれるかを判定することと、そのデバイスが対応するスクリプト可能なデバイスであり、マッピングされた複数のデバイス動作に含まれないと判定されたデバイス動作を含む各スクリプトについて、エラーメッセージを生成することと、を含む。
【0019】
本概要の第15又は第16の段落のいずれかに説明されているようなシステムのいくつかの実装形態では、非一時的コンピュータ可読媒体は、マッピングされた複数のデバイス動作の各々について、そのデバイス動作のための対応するアプリケーションコマンドを実行するためのデバイスモジュールオブジェクトを定義する対応するデバイスモジュール定義を示すデータを更に記憶しており、かつマッピングされた複数のデバイス動作の各々について、そのデバイス動作と対応するアプリケーションコマンドとの間の変換を示すデータが、そのデバイス動作に対応するデバイスモジュール定義に含まれる。
【0020】
本概要の前段落に説明されているようなシステムのいくつかの実装形態では、動作サイクルは、複数のスクリプトから、スクリプトを実行するための実行コマンドを受信することと、実行コマンドを受信することに応答して、スクリプトに含まれる複数のデバイス動作からの各デバイス動作について、そのデバイス動作がマッピングされた複数のデバイス動作に含まれることを確認することと、任意の関連付けられたパラメータを有するデバイス動作が、そのデバイス動作に対応するデバイスモジュール定義によって定義されたデバイスモジュールによって実行可能であることを確認することと、を含み得る。
【0021】
本概要の第15~第18の段落のいずれかに説明されているようなシステムのいくつかの実装形態では、アプリケーションコマンドが実行されるべきであると判定することに基づいて、動作サイクルは、そのアプリケーションコマンドに対応するコマンドオブジェクトをインスタンス化することと、コマンドオブジェクトを中間モジュールに渡すことと、を含み、コマンドオブジェクト、各デバイスオブジェクト、及び各中間モジュールが、共通のベースオブジェクト定義を継承するクラスをインスタンス化する。
【0022】
本概要の前段落に説明されているようなシステムのいくつかの実装形態では、ベースオブジェクト定義は、ベースオブジェクト定義を継承する定義によって定義されたオブジェクトがインスタンス化されるときはいつでも、そのオブジェクトの一意の識別子を生成することと、一意の識別子を、プライベートデータとしてそのオブジェクトに記憶することと、を行うための命令を含む。
【0023】
本概要の第15~第20の段落のいずれかに説明されているようなシステムのいくつかの実装形態では、各スクリプト可能なデバイスについて、そのスクリプト可能なデバイスに対応するスレッドに含まれる全てのループは決定論的終了を有する。
【0024】
前述の概念及び以下でより詳細に考察される追加の概念の全ての組み合わせ(そのような概念が相互に矛盾しないことを条件として)は、本明細書で開示される本発明の主題の一部であり、本明細書に説明される利益を達成するものとして企図されることを理解されたい。
【図面の簡単な説明】
【0025】
1つ以上の実装形態の詳細は、添付の図面及び以下の説明に記載される。他の特徴、態様、及び利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
図1】マイクロ流体プロセスチップを含むシステムの一例の概略図を描示する。
図2】アプリケーションを実装する際に使用され得る例示的アーキテクチャを描示する。
図3】状態機械として実装されるモジュールの実行において実施され得る例示的プロセスを描示する。
図4】状態機械として実装されるモジュールの実行において実施され得る例示的プロセスを描示する。
図5】スクリプト内のデバイス動作を一意に識別可能なアプリケーションコマンドに変換する際に使用され得る、実施され得る例示的プロセスを描示する。
図6】グラフィカルユーザインターフェースを生成し、維持し、かつ動作させるために実施され得る、例示的プロセスを描示する。
図7】状態機械ベースのモジュールを作成する際に使用され得る例示的プロセスを描示する。
図8】状態機械の複数の動作サイクルにわたって実施され得る動作を定義するために使用され得る、例示的プロセスを描示する。
図9】状態機械の複数の動作サイクルにわたって実施され得る動作を定義するために使用され得る、例示的プロセスを描示する。
図10】状態機械の複数の動作サイクルにわたって実施され得る動作を定義するために使用され得る、例示的プロセスを描示する。
図11】アプリケーションを実装する際に使用され得る例示的アーキテクチャを描示する。
【発明を実施するための形態】
【0026】
いくつかの態様では、外部スクリプトとの統合を可能にし、エラーの場合に追跡可能性を提供するアプリケーションを開発するための装置及び方法が本明細書で開示される。特に、これらの装置及び方法は、モジュール性をサポートし、個々のデバイスを表す統合構造を複雑なプロセスに再利用するように構成されたオブジェクト指向フレームワークを提供し得る。そのようなフレームワーク内のオブジェクトは、状態機械として実行するように適合されたオブジェクトと、スクリプトからのコマンドを符号化するように適合されたオブジェクトと、を含み得る。これらのオブジェクトはまた、後にデバッギング及び/又は他のエラー訂正において使用され得る一意の識別子を自動的に生成する機能を提供する基本クラスを継承し得る。開示された技術の態様を使用して開発されたアプリケーションは、ポイントオブケア(例えば、病院、診療所、薬局など)での調合を含む患者特異的治療薬の合成を含む様々な目的のために使用され得る。
【0027】
I.用語
本明細書及び添付の特許請求の範囲の全体を通して、文脈上他の意味に解すべき場合を除き、「含む(comprise)」という語、並びに「含む(comprises)」及び「含んでいる(comprising)」などの変形は、様々な構成要素が、方法及び物品(例えば、デバイス及び方法を含む組成物及び装置)において共同で用いられ得ることを意味する。例えば、「含む(comprising)」という用語は、任意の記述された要素又はステップを含むが、任意の他の要素又はステップを除外しないことを意味すると理解されよう。概して、本明細書に説明される装置及び方法のいずれも包括的であると理解されるべきであるが、構成要素及び/又はステップの全部又は下位セットは、代替的に排他的であり得、様々な構成要素、ステップ、下位構成要素、又は下位ステップ「からなる」又は代替的に「から本質的になる」と表現され得る。
【0028】
本明細書で使用される場合、単数形「a」、「an」、及び「the」は、文脈がそうでないことを明確に示さない限り、複数形も含むことが意図される。本明細書で使用される場合、「及び/又は」という用語は、関連する列挙された項目のうちの1つ以上の任意の組み合わせ及び全ての組み合わせを含み、「/」と略記される場合がある。
【0029】
「下の(under)」、「下方の(below)」、「下部の(lower)」、「上の(over)」、「上部の(upper)」などの空間的に相対的な用語は、図に例解されるように、1つの要素又は特徴の別の要素又は特徴に対する関係を説明するための説明を容易にするために本明細書で使用され得る。空間的に相対的な用語は、図に描示された配向に加えて、使用中又は動作中のデバイスの異なる配向を包含することが意図されていることが理解されよう。例えば、図中のデバイスが反転される場合、他の要素又は特徴の「下の(under)」又は「真下の(beneath)」として説明される要素は、他の要素又は特徴の「上に(over)」配向されるであろう。したがって、「下の(under)」という用語は、上及び下の両方の配向を包含し得る。デバイスは、別様に配向され得(90度又は他の配向で回転される)、本明細書で使用される空間的に相対的な記述子は、それに応じて解釈される。同様に、「上方へ」、「下方へ」、「鉛直に」、「水平に」などの用語は、本明細書では、具体的に別段の指示がない限り、説明のみを目的として使用される。
【0030】
本明細書において、ある特徴若しくは要素が別の特徴若しくは要素の「上に」あると言及される場合、それは他の特徴若しくは要素の直接上にあり得るか、又は介在する特徴及び/若しくは要素が存在し得る。対照的に、ある特徴若しくは要素が別の特徴又は要素の「上に直接」あると言及される場合、介在する特徴若しくは要素は存在しない。ある特徴若しくは要素が、別の特徴若しくは要素に「接続されている」、「取り付けられている」、又は「結合されている」と言及される場合、それは、他の特徴若しくは要素に直接接続され得るか、取り付けられ得るか、若しくは結合され得るか、又は介在する特徴若しくは要素が存在し得る。対照的に、ある特徴若しくは要素が別の特徴若しくは要素に「直接接続されている」、「直接取り付けられている」、又は「直接結合されている」と言及される場合、介在する特徴若しくは要素は存在しない。一実施形態に関して説明又は図示されるが、そのように説明又は図示される特徴及び要素は、他の実施形態に適用され得る。別の特徴に「隣接して」配設される構造又は特徴への言及は、隣接する特徴と重なり合う又はその下にある部分を有し得ることも、当業者によって理解されるであろう。
【0031】
本明細書及び特許請求の範囲において使用される場合、例において使用される場合を含めて、別段に明示的に指定されない限り、全ての数字は、「約」又は「およそ」という語が明示的に現れていなくても、その語が前に置かれているかのように読まれ得る。「約」又は「およそ」という句は、大きさ及び/又は位置を説明するときに、説明される値及び/又は位置が値及び/又は位置の妥当な予想範囲内にあることを示すために使用され得る。例えば、数値は、記述された値(又は値の範囲)の±0.1%、記述された値(又は値の範囲)の±1%、記述された値(又は値の範囲)の±2%、記述された値(又は値の範囲)の±5%、記述された値(又は値の範囲)の±10%などである値を有し得る。本明細書で与えられる任意の数値は、文脈上別段の指示がない限り、約その値、又はおよそその値を含むものと理解されるべきである。例えば、値「10」が開示される場合、「約10」もまた開示される。本明細書に列挙される任意の数値範囲は、その中に包含される全ての下位範囲を含むことが意図される。
【0032】
また、ある値がその値「以下」であると開示される場合、当業者に適切に理解されるように、「その値以上」、及び値の間の可能な範囲も開示されることも理解される。例えば、値「X」が開示された場合、「X以下」並びに「X以上」(例えば、Xが数値である場合)もまた開示される。また、本出願全体を通して、データはいくつかの異なる形式で提供され、このデータは終点及び開始点、並びにデータ点の任意の組み合わせの範囲を表すことも理解される。例えば、特定のデータポイント「10」及び特定のデータポイント「15」が開示されている場合、10及び15より大きい、10及び15以上、10及び15未満、10及び15以下、並びに10及び15に等しいは、10と15との間と同様に開示されているとみなされることが理解される。2つの特定のユニット間の各ユニットも開示されることも理解される。例えば、10及び15が開示されている場合、11、12、13、及び14もまた開示される。
【0033】
「第1の」及び「第2の」という用語は、本明細書において様々な特徴/要素(ステップを含む)を説明するために使用され得るが、これらの特徴/要素は、文脈が別段に示さない限り、これらの用語によって限定されるべきではない。これらの用語は、ある特徴/要素を別の特徴/要素から区別するために使用され、具体的に指摘されない限り、特定の順序を示すものではない。したがって、本発明の教示から逸脱することなく、下で考察される第1の特徴/要素を第2の特徴/要素と呼ばれ得、同様に、下で考察される第2の特徴/要素を第1の特徴/要素と呼ばれ得る。
【0034】
本明細書で使用される場合、「システム」、「装置」、及び「デバイス」という用語は、互いに交換可能であると読み取られ得る。システム、装置、及びデバイスは、各々、互いに様々な種類の構造的及び/又は機能的関係を有する複数の構成要素を含み得る。
【0035】
本明細書で使用される場合、「に基づいて」は、ある物事が、それが「に基づいて」と示されるものに少なくとも部分的に基づいて決定されることを示すものとして読まれ得る。「排他的に~に基づく」は、ある物事が、「排他的に~基づく」と示されるものによって完全に決定される必要があることを示すものとして読まれ得る。
【0036】
II.状態機械ベースの制御のための例示的なシステムの概要
図1は、システム(100)に組み込まれ得る様々な構成要素の例を描示する。この例のシステム(100)は、1つ以上のマイクロ流体プロセスチップ(111)を取り外し可能に保持し得る着座装着具(115)を囲繞するハウジング(103)を含む。換言すれば、システム(100)は、プロセスチップ(111)を取り外し可能に収容するように構成されたチップ受容構成要素を含み、プロセスチップ(111)自体が1つ以上のマイクロ流体チャネル又は流体経路を画定する。プロセスチップ(111)と流体的に相互作用するシステム(100)(例えば、ハウジング(103)内)の構成要素は、必ずしもマイクロ流体とみなされない流体チャネル又は経路を含み得る(例えば、そのような流体チャネル又は経路は、プロセスチップ(111)内のマイクロ流体チャネル又は流体経路よりも大きい)。いくつかのバージョンでは、プロセスチップ(111)は、単回使用デバイスとして提供及び利用され、システム(100)の残りの部分は、再使用可能である。ハウジング(103)は、(例えば、蓋又はドアなどを介して)閉鎖されて、それによって内部を封止し得る開口部を伴う、チャンバ、エンクロージャなどの形態であり得る。ハウジング(103)は、温度調節器を囲繞し得、かつ/又は温度調節された環境(例えば、冷蔵ユニットなど)内に囲繞されるように構成され得る。ハウジング(103)は、無菌バリアを形成し得る。いくつかの変形例では、ハウジング(103)は、加湿された又は湿度制御された環境を形成し得る。加えて、又は代替において、システム(100)は、キャビネット(図示せず)内に位置決めされ得る。そのようなキャビネットは、温度調節された(例えば、冷蔵された)環境を提供し得る。そのようなキャビネットはまた、空気濾過及び空気流管理を提供し得、製造プロセスを通して試薬が所望の温度に保たれることを促進し得る。加えて、そのようなキャビネットは、プロセスチップ(111)及びシステム(100)の他の構成要素の滅菌のためのUVランプを備え得る。他の好適な特徴が、システム(100)を収納するキャビネットに組み込まれ得る。
【0037】
いくつかのシナリオでは、ハウジング(103)と、プロセスチップ(111)を伴わずにハウジング(103)内にあるシステム(100)の構成要素と、によって形成されるアセンブリは、「機器」であるとみなされ得る。コントローラ(121)及びユーザインターフェース(123)は、ハウジング(103)の外側にあるものとして図1に示されているが、コントローラ(121)及びユーザインターフェース(123)は、実際には、ハウジング(103)内又はハウジング(103)上に設けられ得、したがって、機器の一部を形成し得る。以下でより詳細に説明されるように、この機器は、着座装着具(115)を介してプロセスチップ(111)を取り外し可能に受容し得る。プロセスチップ(111)が着座装着具(115)内に着座されると、機器及びプロセスチップ(111)は、協働してシステム(100)をともに形成する。プロセスチップ(111)が着座装着具(115)から取り外されるとき、残されたシステム(100)の部分が「機器」とみなされ得る。機器、システム(100)、及びプロセスチップ(111)は、各々が「装置」とみなされ得る。したがって、「装置」という用語は、機器自体、プロセスチップ(111)自体、機器とプロセスチップ(111)との組み合わせ、システム(100)の構成要素の何らかの他の組み合わせ、又はシステム(100)若しくはその構成要素の何らかの他の置換を含むように読まれ得る。
【0038】
着座装着具(115)は、プロセスチップ(111)を固定された、かつ事前定義された配向に保持するように構成された1つ以上のピン又は他の構成要素を使用して、プロセスチップ(111)を固着するように構成され得る。したがって、着座装着具(115)は、プロセスチップ(111)がシステム(100)の他の構成要素に対して適切な位置及び配向で保持されることを容易にし得る。本実施例では、着座装着具(115)は、プロセスチップ(111)が地面と平行になるように、プロセスチップ(111)を水平配向で保持するように構成されている。
【0039】
いくつかの変形例では、熱制御部(113)は、着座装着具(115)に隣接して位置し、着座装着具(115)内に装着される任意のプロセスチップ(111)の温度を変調し得る。熱制御部(113)は、着座装着具(115)内に装着された任意のプロセスチップ(111)の全部又は一部分の温度を制御するための熱電構成要素(例えば、ペルチェ素子など)及び/又は1つ以上のヒートシンクを含み得る。いくつかの変形例では、プロセスチップ(111)の1つ以上の領域のうちの異なる領域の温度を別々に調節するなどのために、2つ以上の熱制御部(113)が含まれ得る。熱制御部(113)は、プロセスチップ(111)及び/又は熱制御部(113)のフィードバック制御のために使用され得る1つ以上の熱センサ(例えば、熱電対など)を含み得る。
【0040】
図1に示されるように、流体インターフェースアセンブリ(109)は、プロセスチップ(111)を圧力源(117)に結合し、それによって、以下でより詳細に説明されるように、圧力源(117)からプロセスチップ(111)の1つ以上の内部領域に連通される正圧又は負圧の流体(例えば、ガス)のための1つ以上の経路を提供する。1つの圧力源(117)のみが示されているが、システム(100)は、2つ以上の圧力源(117)を含み得る。いくつかのシナリオでは、圧力は、圧力源(117)以外の1つ以上の源によって生成され得る。例えば、試薬保管フレーム(107)内の1つ以上のバイアル又は他の流体源が加圧され得る。加えて、又は代替において、プロセスチップ(111)上で実行される反応及び/又は他のプロセスが、追加の流体圧力を生成し得る。本実施例では、流体インターフェースアセンブリ(109)はまた、プロセスチップ(111)を試薬保管フレーム(107)と結合し、それによって、以下でより詳細に説明されるように、液体試薬などが試薬保管フレーム(107)からプロセスチップ(111)の1つ以上の内部領域に連通される1つ以上の経路を提供する。
【0041】
いくつかのバージョンでは、少なくとも1つの圧力源(117)からの加圧流体(例えば、ガス)は、試薬保管フレーム(107)が圧力源(117)と流体インターフェースアセンブリ(109)との間の流体経路内に介在する1つ以上の構成要素を含むような、試薬保管フレーム(107)を介して、流体インターフェースアセンブリ(109)に到達する。いくつかのバージョンでは、1つ以上の圧力源(117)は、正圧流体(例えば、正圧ガス)又は負圧流体(例えば、吸引ガス又は他の負圧ガス)が、試薬保管フレーム(107)を迂回して流体インターフェースアセンブリ(109)に到達するように、流体インターフェースアセンブリと直接結合されている。流体インターフェースアセンブリ(109)が圧力源(117)と流体インターフェースアセンブリ(109)との間の流体経路に介在するかどうかにかかわらず、流体インターフェースアセンブリ(109)は、流体インターフェースアセンブリ(109)の少なくとも一部分が使用と使用との間の滅菌のために取り外され得るように、システム(100)の残りの部分に取り外し可能に結合され得る。以下でより詳細に説明されるように、圧力源(117)は、プロセスチップ(111)上の1つ以上のチャンバ領域を選択的に加圧し得る。加えて、又は代替において、圧力源はまた、試薬保管フレーム(107)によって保持される1つ以上のバイアル又は他の流体保管容器を選択的に加圧し得る。
【0042】
試薬保管フレーム(107)は、複数の流体試料ホルダを収容するように構成されており、流体試料ホルダの各々は、プロセスチップ(111)への送達のために試薬(例えば、ヌクレオチド、溶媒、水など)を保持するように構成された流体バイアルを保持し得る。いくつかのバージョンでは、試薬保管フレーム(107)内の1つ以上の流体バイアル又は他の保管容器は、プロセスチップ(111)の内部から生成物を受容するように構成され得る。加えて、又は代替において、第2のプロセスチップ(111)は、1つ以上の流体が1つのプロセスチップ(111)から別のプロセスチップ(111)に移送されるように、第1のプロセスチップ(111)の内部から生成物を受容し得る。いくつかのそのようなシナリオでは、第1のプロセスチップ(111)は、第1の専用機能(例えば、合成など)を実施し得、第2のプロセスチップ(111)は、第2の専用機能(例えば、カプセル化など)を実施する。本実施例の試薬保管フレーム(107)は、複数の圧力ライン及び/又はマニホールドを含み、複数の圧力ライン及び/又はマニホールドは、1つ以上の圧力源(117)を、プロセスチップ(111)に印加され得る複数の圧力ラインに分割するように構成されている。そのような圧力ラインは、独立して、又は集合的に(下位組み合わせで)制御され得る。
【0043】
流体インターフェースアセンブリ(109)は、複数の流体ライン及び/又は圧力ラインを含み得、その場合、そのような各ラインは、プロセスチップ(111)が着座装着具(115)内に保持されるときに各流体及び/又は圧力ラインをプロセスチップ(111)に個々に独立して駆動する、付勢された(例えば、バネ仕掛けの)ホルダ又は先端を含み得る。いかなる関連する管類(例えば、流体ライン及び/又は圧力ライン)も、流体インターフェースアセンブリ(109)の一部であり得、かつ/又は流体インターフェースアセンブリ(109)に接続し得る。いくつかのバージョンでは、各流体ラインは可撓性管類を備え、この可撓性管類は、試薬保管フレーム(107)とプロセスチップ(111)との間を、バイアルを管類にロック係合(例えば、フェルール)で結合するコネクタを介して接続する。いくつかのバージョンでは、流体ライン/圧力ラインの端部は、以下で説明されるように、(例えば、プロセスチップ(111)内に形成された対応する封止ポートにおいて)、プロセスチップ(111)に対して封止するように構成され得る。本実施例では、圧力源(117)とプロセスチップ(111)との間の接続、及び試薬保管フレーム(107)内のバイアルとプロセスチップ(111)との間の接続は全て、プロセスチップ(111)が着座装着具(115)内に着座するときに隔離される、封止され閉鎖された経路を形成する。そのような封止され閉鎖された経路は、治療用ポリヌクレオチドを処理するときに汚染に対する保護を提供し得る。
【0044】
試薬保管フレーム(107)のバイアルは、加圧され得る(例えば、2atm、3atm、5atm又はそれ以上などの、1atm超の圧力)。いくつかのバージョンでは、バイアルは、圧力源(117)によって加圧され得る。したがって、負圧又は正圧が印加され得る。例えば、流体バイアルは、約1~約20psig(例えば、5psig、10psigなど)まで加圧され得る。代替的に、プロセスの終了時に、流体をバイアル(例えば、貯蔵場所としての役割を果たすバイアル)内に引き戻すために、真空(例えば、約-7psig又は約7psia)が印加され得る。流体バイアルは、以下に説明されるように、空気圧弁よりも低い圧力で駆動され得、これは、漏出を防止又は低減し得る。いくつかの変形例では、流体弁と空気圧弁との間の圧力差は、約1psi~約25psi(例えば、約3psi、約5psi、7psi、10psi、12psi、15psi、20psiなど)であり得る。
【0045】
本実施例のシステム(100)は、プロセスチップ(111)の領域に磁場を生じさせるように構成された磁場アプリケータ(119)を更に含む。磁場アプリケータ(119)は、磁場を移動させ、それによって試薬保管フレーム(107)内のバイアル又は他の保管容器内の磁気捕捉ビーズに付着した生成物を選択的に単離するように動作可能な可動ヘッドを含み得る。
【0046】
本実施例のシステム(100)は、1つ以上のセンサ(105)を更に含む。いくつかのバージョンでは、そのようなセンサ(105)は、1つ以上のカメラ及び/又は他の種類の光学センサを含む。そのようなセンサ(105)は、バーコード、試薬保管フレーム(107)内に保持された流体バイアル内の流体レベル、着座装着具(115)内に装着されているプロセスチップ(111)内の流体移動、及び/又は他の光学的に検出可能な状態、のうちの1つ以上を感知し得る。センサ(105)がバーコードを感知するために使用されるバージョンでは、そのようなバーコードは、センサ(105)が試薬保管フレーム(107)内のバイアルを識別するために使用され得るように、試薬保管フレーム(107)のバイアル上に含まれ得る。いくつかのバージョンでは、単一のセンサ(105)が、試薬保管フレーム(107)内のバイアル上のそのようなバーコード、試薬保管フレーム(107)内のバイアル内の流体レベル、着座装着具(115)内に装着されているプロセスチップ(111)内の流体移動、及び/又は他の光学的に検出可能な状態を同時に見るように位置決め及び構成される。いくつかの他のバージョンでは、そのような状態を見るために、2つ以上のセンサ(105)が使用される。いくつかのそのようなバージョンでは、異なるセンサ(105)が、センサ(105)が特定の対応する光学的に検出可能な状態専用であり得るように、対応する光学的に検出可能な状態を別々に見るように位置決め及び構成され得る。
【0047】
センサ(105)が少なくとも1つの光学センサを含むバージョンでは、歩留まりを推定するために、視覚/光学マーカが使用され得る。例えば、蛍光体でタグ付けすることによってプロセス収率又は残留材料を検出するために、蛍光が使用され得る。加えて、又は代替において、プロセスチップ(111)の一部分(例えば、プロセスチップ(111)の混合部分など)内の粒子サイズ分布を測定するために、動的光散乱(dynamic light scattering、DLS)が使用され得る。いくつかの変形例では、センサ(105)は、光(例えば、レーザ光)をプロセスチップ(111)内に運び、プロセスチップ(111)から出てくる光信号を検出するために、1つ又は2つの光ファイバを使用して測定値を提供し得る。センサ(105)がプロセス収率又は残留材料などを光学的に検出するバージョンでは、センサ(105)は、可視光、蛍光、紫外線(ultraviolet、UV)吸光度信号、赤外線(infrared、IR)吸光度信号、及び/又は任意の他の好適な種類の光学フィードバックを検出するように構成され得る。
【0048】
センサ(105)がビデオ画像を捕捉するように構成されている少なくとも1つの光学センサを含むバージョンでは、そのようなセンサ(105)は、プロセスチップ(111)上の少なくともいくつかのアクティビティを記録し得る。例えば、材料(例えば、治療用RNA)を合成及び/又は処理するための実行全体が、プロセスチップ(111)を(例えば、上方から)可視化し得るビデオセンサ(105)を含む、1つ以上のビデオセンサ(105)によって記録され得る。プロセスチップ(111)上の処理は、視覚的に追跡され得、このビデオ記録は、後の品質管理及び/又は処理のために保持され得る。したがって、処理のビデオ記録は、その後のレビュー及び/又は分析のために保存、記憶、及び/又は送信され得る。加えて、以下でより詳細に説明されるように、ビデオは、このビデオ内で捕捉された少なくとも視覚的に観察可能な条件を使用して処理に影響を及ぼし得るリアルタイムフィードバック入力として使用され得る。
【0049】
本実施例のシステム(100)は、コントローラ(121)によって制御され得る。コントローラ(121)は、1つ以上のプロセッサ、1つ以上のメモリ、及び様々な他の好適な電気構成要素を含み得る。いくつかのバージョンでは、コントローラ(121)の1つ以上の構成要素(例えば、1つ以上のプロセッサなど)は、システム(100)内に埋め込まれる(例えば、ハウジング(103)内に収容される)。加えて、又は代替において、コントローラ(121)の1つ以上の構成要素(例えば、1つ以上のプロセッサなど)は、システム(100)の他の構成要素に着脱可能に取り付けられ得るか、又は着脱可能に接続され得る。したがって、コントローラ(121)の少なくとも一部分は、取り外し可能であり得る。更に、コントローラ(121)の少なくとも一部分は、いくつかのバージョンではハウジング(103)から離れている場合がある。
【0050】
コントローラ(121)による制御は、他のタスクの中でもとりわけ、圧力源(117)を作動させてプロセスチップ(111)を通して圧力を印加して、流体移動を駆動することを含み得る。コントローラ(121)は、完全に若しくは部分的にハウジング(103)の外側にあり得るか、又は完全に若しくは部分的にハウジング(103)の内側にあり得る。コントローラ(121)は、システム(100)のユーザインターフェース(123)を介してユーザ入力を受信し、かつユーザインターフェース(123)を介してユーザに出力を提供するように構成され得る。いくつかのバージョンでは、コントローラ(121)は、ユーザ入力が必要とされない点まで完全に自動化される。いくつかのそのようなバージョンでは、ユーザインターフェース(123)は、ユーザに出力のみを提供し得る。ユーザインターフェース(123)は、モニタ、タッチスクリーン、キーボード、及び/又は任意の他の好適な特徴を含み得る。コントローラ(121)は、1つ以上の流体をプロセスチップ(111)上に移動させること、1つ以上の流体をプロセスチップ(111)上で混合すること、プロセスチップ(111)に1つ以上の構成要素を追加すること、プロセスチップ(111)内で流体を計量すること、プロセスチップ(111)の温度を調節すること、磁場を印加すること(例えば、磁気ビーズを使用する場合)などを含む処理を調整し得る。コントローラ(121)は、センサ(105)からリアルタイムフィードバックを受信し、センサ(105)からのそのようなフィードバックに従って制御アルゴリズムを実行し得る。センサ(105)からのそのようなフィードバックには、試薬保管フレーム(107)内のバイアル内の試薬の識別、試薬保管フレーム(107)内のバイアル内の検出された流体レベル、プロセスチップ(111)内の流体の検出された移動、プロセスチップ(111)内の流体内のフルオロフォアの蛍光などが含まれ得るが、これらに限定される必要はない。コントローラ(121)には、ソフトウェア、ファームウェア、及び/又はハードウェアが含まれ得る。コントローラ(121)はまた、例えば、装置の動作を追跡するため、材料(例えば、ヌクレオチドなどの構成要素、プロセスチップ(111)など)を並べ替えるため、及び/又はプロトコルをダウンロードするなどのために、遠隔サーバと通信し得る。
【0051】
III.状態機械ベースのアプリケーションの例
ポリヌクレオチドの製造及び処方のような目的のために図1に示されるようなシステムを利用するために、ユーザは、システム(100)をシステム(100)のユーザインターフェース(123)を介して制御するための入力を提供し得、かつ/又はシステムの構成要素によって実施されるべきアクションを定義するデバイス動作を含むスクリプトを開発し得る。そのようなアクティビティを容易にするために、いくつかの態様では、そのような入力に応答し、図2に示されるようなアーキテクチャを有するそのようなスクリプトを処理するためのアプリケーションが提供され得る。このタイプのアーキテクチャでは、アプリケーションは複数のモジュールを含み得、その各々は、モジュールが他のモジュールを作成し、かつ/又は他のモジュールと通信することを可能にするパブリックな方法を提供するモジュールクラスのインスタンス化であり得る。例えば、各モジュールは、他のモジュールが、各モジュールにそれが実行すべきコマンドを通信することを可能にするProceedOperation方法と、着信コマンドを保持するために使用されるであろうキューにメモリを割り当てること、モジュールが通信する必要があり得る他のモジュールへの参照を記憶すること、及び/又はアプリケーションの実行中にモジュールの動作を追跡するために使用され得る一意の識別子を生成することなどの動作を実施し得るコンストラクタと、を含み得る。
【0052】
図2に示されるようなアーキテクチャを使用するアプリケーションでは、パブリックな方法によるこのタイプの通信は、様々な様式で行われ得る。例えば、場合によっては、アプリケーションが起動されるとき、アプリケーションは、最初に、3つのトップレベルモジュール、すなわち、入力及びスクリプトを処理するためのモジュールマネージャ(201)と、アプリケーションによって実施される動作(及び検出されるエラー)を記録するためのプロセスロガー(202)と、アプリケーションの動作(例えば、熱制御部(113)からの読み取り)において生成されるデータを記録するためのデータロガー(203)と、をインスタンス化し得る。次いで、これらのトップレベルモジュールのうちの1つ以上は、それら自体の下位レベルモジュールをインスタンス化し得る。例えば、場合によっては、モジュールマネージャ(201)は、ユーザとのグラフィカルインタラクションのためのグラフィカルユーザインターフェース(graphical user interface、GUI)マネージャ(204)と、機能ユニット(例えば、熱制御部(113)、センサ(105)など)にコマンドを発行するための機能モジュール(205a)~(205n)とも称され得る1つ以上の中間モジュール又は中間レベルモジュールのセットと、外部スクリプトに書き込まれるであろうデバイス動作とアプリケーションによって実行されるであろうアプリケーションコマンドとの間で変換するための自動化マネージャ(206)と、を含むモジュールのセットを作り得る。
【0053】
場合によっては、上で説明されるような機能モジュールのインスタンス化は、インスタンス化する機能モジュールの各々に対応するモジュールクラスのコンストラクタ関数をコールするトップレベルモジュール(例えば、モジュールマネージャ(201))によって行われ得る。次いで、トップレベルモジュールは、それがインスタンス化するモジュールの各々への参照を記憶し得、また、階層の単一レベル上のモジュールが互いに通信することを可能にするようにアプリケーションが実装される場合、モジュール間でそれらの参照を共有し得。例えば、第2の機能モジュール(205n)が複雑なタスクを完了するために第1の機能モジュール(205a)を必要とし得るアプリケーションを実装する際に、第1の機能モジュール(205a)がインスタンス化されると、そのモジュールへの参照が、後の通信で使用するために第2の機能モジュール(205n)のコンストラクタに提供され得る。第1の機能モジュール(205a)のインスタンス化が失敗した場合、第2の機能モジュール(205n)は依然として動作し得るが、第1の機能モジュール(205a)との通信に関与したであろう特徴は無効にされ得る。このようにして、図2に例解されるような階層は、アプリケーションの様々な部分間でコマンドを通信する際に使用するための経路及びデータ構造を定義し得る。
【0054】
図2に例解されるモジュールに加えて、場合によっては、アプリケーションは、1つ以上のデバイスオブジェクト(207a-a)~(207a-n)を含み得、1つ以上のデバイスオブジェクト(207a-a)~(207a-n)は、機能モジュールによってインスタンス化されたモジュールであり得、かつアプリケーションが制御し得る物理デバイスに対応し得る。例えば、図2のアーキテクチャに従うアプリケーションが、熱制御部(113)にコマンドを発行するための機能モジュール(205a)を含んでいた場合、その機能モジュール(205a)は、2つのデバイスオブジェクト(207a-a)(207a-b)(1つはペルチェ素子に対応し、1つは加熱クランプに対応する)をインスタンス化し得る。次いで、これらのモジュールは、様々なモジュールのコンストラクタを使用して上記で作成された可能性があるような、互いへの参照を使用してコマンドを渡すことによって通信し得る。
【0055】
次に図3を参照すると、この図は、モジュールが、着信コマンドをキューに記憶し、シャットダウンされるまで専用スレッド上のループ内で実行される状態機械として実装されるときに、パブリックにアクセス可能なProceedOperation方法を介して受信され得るようなコマンドを実行するためにモジュールによって使用され得る例示的な方法を例解する。図3に示されるような方法では、モジュールのループの各反復において、モジュールは、その状態を設定(及び潜在的に変更)すべきかどうかに関して判定ブロック(301)において判定し得る。これは、例えば、モジュールが既に占有されているかどうかをチェックすることによって(例えば、前の反復で受信されたがまだ完了していなかったコマンドを実行することを用いて)行われ得る。モジュールが既に占有されていた場合、占有していたプロセスが何であれ、モジュールはブロック(302)においてそのプロセスを継続し得る。そうでない場合、キューの先頭にコマンドがあれば、そのコマンドに基づいてモジュールの状態を設定し得る。
【0056】
図3に示されるように、状態機械ベースのモジュールは、モジュールが遷移し得る(又は維持し得る)様々な状態を有し得る。例えば、コマンドキューにコマンドが存在しない場合、モジュールの状態は、ブロック(303)においてIDLE(アイドル)として設定(又は維持)され得る。IDLE状態は、モジュールがアクションを行わない状態であり得るが、他のコマンドが受信されていないときにバックグラウンドタスクが実施される状態であり得る。例えば、熱制御部(113)に対応する機能モジュールでは、IDLE状態の間、モジュールは、温度測定を行い、記録し得る。代替的に、キュー内にコマンドが存在する場合、コマンドは、モジュールをそのコマンドに対応する状態に切り替えさせ得る。図3の図において、これはブロック(304)に表され、アプリケーションコマンド(例えば、ユーザインターフェース又はスクリプトから発行され得るコマンドに対応するn個のコマンドを実行するように適合されたモジュールにおいて、これはコマンド1~nのいずれかであり得る)を受信することに応答して、モジュールは、そのコマンドに対応する状態に置かれ得る。
【0057】
ブロック(304)の状態設定を例解するために、熱制御部(113)に対応する機能モジュールの例を検討する。そのようなモジュールを含むアプリケーションは、温度設定コマンド(TC_SETTEMP)をそのモジュールに送信し得、モジュールは、そのようなコマンドが受信されたときに温度設定(TC_SETTEMP)状態に入るように構成され得る。その状態では、モジュールは、コマンドによって示されるように温度を設定するために必要であろうようなアクションを実施するようにプログラムされ得る。これは、以下を含み得る。
1)(例えば、この情報をTC_SETTEMPコマンドのパラメータとして受信することによって)温度が設定されるべき物理デバイス(例えば、ペルチェ加熱器、又は加熱クランプ)を決定し、
2)その物理デバイスに対応するデバイスオブジェクトに、そのデバイスの温度を指定された温度に設定するように命令するコマンドを(例えば、そのデバイスオブジェクトが作られたときに作成された参照を使用して、TC_SETTEMPコマンドにパラメータとして含まれる温度を適切なデバイスオブジェクトに渡すことによって)送信し、
3)デバイスオブジェクトがコマンドを受信したことを確認するのを、(例えば、コマンドを送信するときにデバイスオブジェクトがその応答を送信するためのアドレスを含み、受信確認が受信されるまで、又は予め設定されたタイムアウトが満了するまで、そのアドレスを監視することによって)待機し、かつ
4)コマンドが成功裏に実行されたことをデバイスオブジェクトが確認するのを、(例えば、成功コンホーメーションが受信されるまで、又は予め設定されたタイムアウトが満了するまで、コマンドとともに送信されたアドレスを監視することによって)待機する。
【0058】
デバイス動作(例えば、温度を設定すること)のためのコマンドに対応する状態に加えて、状態機械ベースのモジュールはまた、STOP(停止)及び/又はSHUTDOWN(シャットダウン)などの制御コマンドに対応する状態を含み得る。(モジュールが、STOPコマンドを受信した後にブロック(305)に入り得る)STOP状態にあるとき、モジュールは、モジュールが別段に制御する可能性のあるデバイスの動作を止めるためのアクションを取り得る。例えば、熱制御部(113)に対応する機能モジュールの場合、STOP状態にあるとき、モジュールは、制御されているシステム(100)内の加熱要素への通電を停止するコマンドを(例えば、これらの加熱要素に対応するデバイスオブジェクトに追加のSTOPコマンドを送信することによって)実行し得る。同様に、(モジュールが、SHUTDOWNコマンドを受信した後にブロック(306)に入り得る)SHUTDOWN状態にあるとき、モジュールは、モジュールが別段に制御する可能性のあるデバイスの動作を止めるだけでなく、これらのデバイスの動作が止められると、ブロック(307)において、以前に割り当てられていたメモリの割り当て解除すること(これにはモジュールが以前にインスタンス化した任意のオブジェクトの割り当て解除することが含まれる)によって、モジュールをシャットダウンし得る。
【0059】
図3に関連して説明されるような状態機械ベースの実装形態の変形形態もまた可能であり得る。例えば、モジュールの状態を設定するかどうかを判定するときに、上で考察したもの以外の分析が実施され得るシステムが、本開示に基づいて実装され得る。例解するために、状態機械の状態を設定すべきかどうかを判定するために、場合によっては状態機械の各サイクルで実施され得る例示的なプロセスを描示する、図4を検討する。最初に、ブロック(401)において、図4に示されるようなプロセスを実行するモジュールは、モジュールのコマンドキューをチェックしてコマンドを受信したかどうかを見得る。受信していた場合、かつコマンドがSTOP又はSHUTDOWNコマンドである場合、ブロック(402)において、既に実行されていた任意のコマンドは、打ち切られ得、プロセスはブロック(403)に継続して、モジュールの状態を(例えば、図3に示されるようなプロセスを使用してモジュールをSTOP又はSHUTDOWN状態に設定することによって)設定し得る。同様に、重要優先度を有するキュー内に非STOPコマンド、非SHUTDOWNコマンドがあった場合、ブロック(402)において、既に実行されていた任意のコマンドは打ち切られ得、ブロック(403)において、重要優先度コマンドを実行するために、状態が設定され得る。
【0060】
図4のプロセスにおいて、現在実行中のコマンドを打ち切らせ得るコマンドがキュー内に存在しなかった場合に、モジュールがビジーであった場合は、ブロック(404)において、キュー内の任意のコマンドを破棄し得る。これには、キューをクリアし、コマンドを発行したモジュールに、コマンドが実行されることなく破棄されたことを示す応答を送り返すことが含まれ得る。代替的に、モジュールがビジーでなかった場合は、ブロック(403)において、単にキュー内に存在したコマンドが何であれそれを使用して状態を設定することに進み得る(又は、キュー内にコマンドが存在しなかった場合には、IDLEに進み得る)。
【0061】
図4に関連して上で説明されるもの以外の更なる変形形態もまた可能であり得る。例えば、場合によっては、ブロック(402)においてコマンドが破棄されたときに応答を送信することに加えて、又はその代替として、図4に示されるようなプロセスを実行するモジュールは、コマンドが実行されたとき(例えば、ブロック(403)においてモジュールの状態が設定された後)、及び/又は(例えば、ブロック(402)におけるSTOP又はSHUTDOWNコマンドの結果として)コマンドが打ち切られた場合に、コマンドの発信元にメッセージを送信し得る。同様に、場合によっては、命令は、重要優先度以外の優先度(例えば、高優先度、通常優先度)で識別され得、そのようなコマンドを受信するモジュールは、(例えば、優先度に基づいてその着信コマンドキューをソートすることによって)厳密にそれらが受信された順序でなかったとしても、それらを優先順序で実行し得る。
【0062】
図4に示されるタイプのロジックの利用を容易にするために、又は本開示に基づいて作成されたアプリケーションにおける他の機能をサポートするために、いくつかの例は、ベースクラスが様々なモジュールを介してフローダウンする要件及び機能を定義するクラス階層を使用して、図2に示されるようなモジュールを実装し得る。例えば、図4に関連して説明されるような関数(例えば、ReceiveCmd())符号化ロジックを含むモジュールクラスが存在し得る可能性があり、モジュールマネージャ(201)及び図2においてそれから派生するように示された各モジュール又はアプリケーションは、モジュールクラスを実装し得るか、又はモジュールクラスを継承し得る。このようにして、図2に示されるような様々なモジュールは、オブジェクトごとに再符号化される必要なく、ReceiveCmd()機能を利用し得る。
【0063】
クラス階層はまた、図2に例解されるモジュールマネージャ及びその子以外の項目も含み得る。例えば、場合によっては、モジュールマネージャとしてインスタンス化され得るようなモジュールクラスは、それ自体がより汎用的なオブジェクトクラスの子であり得る。それは、このタイプの汎用オブジェクトクラスが存在する例では、状態機械ベースのモジュールに有用であり得るだけでなく、他のタイプのエンティティにも有用であり得る機能を提供し得る。このタイプの基本機能は、エラーに関する情報(例えば、ステータスコード及びエラーの記述)をカプセル化し、それをパブリックに利用可能なエラーキューにポストするであろう方法を含むことによってサポートされ得るエラーロギングを含み得る。オブジェクトクラスはまた、若しくは代替的に、オブジェクト自体を追跡するための機能、例えばオブジェクトクラスを継承するクラスのインスタンスが作成されたときに、そのインスタンスの一意の識別子、そのインスタンスの名前、及びそのインスタンスが作成されたときのタイムスタンプを自動的に生成し得るコンストラクタを含み得る。
【0064】
このタイプの追跡機能がどのように適用され得るかを例解するために、図3に示されるような状態機械の実装形態に従うアプリケーションによるスクリプトからのデバイス動作に対応するアプリケーションコマンドの実行を追跡する例を検討する。場合によっては、このタイプの追跡をサポートするために、自動化マネージャ(206)などのモジュールは、図5に示されるようなプロセスを使用して、デバイス動作(例えば、加熱されたクランプに通電すること、その温度を特定の値に設定すること)を含むスクリプトを、一連の一意に識別可能なアプリケーションコマンドに変換し得る。この図を参照すると、ブロック(501)において、スクリプトは、スクリプトの作成時に可読性及び保守性の目的で含まれた可能性のある空白ライン若しくはコメントを削除することによって、かつ/又は単一ラインに含まれていた可能性があるデバイス動作を複数ラインに分割することなどによってスクリプトをライン単位の表現に変換することなどによって、最初に前処理され得る。ブロック(502)において、前処理されたスクリプト内のデバイス動作は、アプリケーションがライン単位で実行し得るコマンドに関連付けられ得る。例えば、スクリプトがデバイス動作SETTEMPを含んでいた場合、このコマンドは、SETTEMPデバイス動作がアプリケーション内でTC_SETTEMPコマンドによって内部的に表されるであろうことを示すデータに対してチェックされ得る。
【0065】
図5のプロセスでは、スクリプトからのデバイス動作がコマンドに関連付けられると、ブロック(503)において、その関連付け情報を使用して、関連付けられたコマンドのシンタックスに対して動作をチェックし得る。例えば、アプリケーションは、2つのパラメータ、すなわち温度が設定されるべきであったデバイスの名前、及びデバイスに設定されるべき温度、を有するTC_SETTEMPコマンドを実行するように定義される場合がある。そのような場合、スクリプト内のSETTEMPコマンドが、単一のパラメータのみ(例えば、温度はあるが、デバイス名はない)に関連付けられた場合、これによりそのスクリプトは、ブロック(503)のシンタックスチェックで失敗する可能性がある。場合によっては、このタイプのチェックは、アプリケーションが実行し得るコマンドの各タイプを定義するデータを提供することによってサポートされ得、データは、以下の表1で指定されるデータを含み得る。
【0066】
【表1】
【0067】
場合によっては、上で説明されるようなパラメータシーケンスは、同じライン上の配列されたパラメータ及び配列されていないパラメータを許容し得る。例えば、「x,x,[x,x]」のようなシーケンスが許容可能であり得、最初の2つのパラメータが読み取られ、次いでN2個のパラメータがスクリプトラインの最後まで読み取られ得るパラメータシーケンスに変換され得る。
【0068】
ブロック(503)のシンタックスチェックに続いて、図5に示されるようなプロセスは、ブロック(504)においてコマンドのセマンティクスをチェックすることによって継続し得る。これは、各デバイス動作について、スクリプトからの情報を使用してアプリケーションコマンドオブジェクトを作成し、そのオブジェクトを、それを実行する責任を果たすであろうモジュール(例えば、スクリプトからのデバイス動作によって制御されるであろう物理オブジェクトに対応するデバイスオブジェクト)に送信することによって行われ得る。次いで、このモジュールは、コマンドが実際に実行し得るものであったこと(例えば、コマンドに対応する状態に対する命令を実際にモジュールが有していたこと)、及びそのプライベートデータが、コマンドが実行されるのを妨げ得る何らかの環境又は他の要因(例えば、動作が不可能であろう条件を示すデバイス読み取り値)を示さなかったことをチェックし得る。
【0069】
ブロック(501)~(504)の動作のいずれかにおいてエラーがトリガされた場合、図5のプロセスは、発生したエラーを反映するエラーメッセージを生成することによって、ブロック(506)において打ち切られ得る。代替的に、ブロック(501)~(504)の動作の全てがエラーなしで完了した場合、ブロック(505)において、スクリプトのデバイス動作の各々に対してライン単位で新たなコマンドオブジェクトを作成し、実行のために適切なモジュールに送信することによって、スクリプトを実行し得る。例えば、自動化マネージャ(206)は、各動作に対するコマンドを作成し、それをモジュールマネージャ(201)に送信し得る。次に、モジュールマネージャ(201)は、コマンドを適切な機能モジュール(205a)~(205n)にルーティングし得、次いで、機能モジュールは、コマンドを、デバイス動作の実行によって制御されるであろう物理デバイスに対応するデバイスオブジェクト(207a-a)~(207a-n)にルーティングし得る。次に、デバイスオブジェクトは、適切な入力を生成して、その対応する物理デバイスのインターフェースに提供して、デバイス動作を有効にし得る。このタイプのシナリオでは、アプリケーションは、スクリプトからの各デバイス動作が、上で説明される通信の各々、並びにそれらの通信に関連する任意のエラー(例えば、アプリケーションコマンドがモジュールに送信されたときにモジュールがビジーであり、コマンドが実行されずにタイムアウトした、デバイスオブジェクトがコマンドを実装するその入力を送信したときにハードウェアエラーがあった、など)を、プロセスロガー(202)などのオブジェクトによって公開されたパブリックインターフェースを使用してロギングすることによって、一意に識別可能なアプリケーションコマンドに変換されるという事実を活用し得る。したがって、スクリプトが同じタイプの複数のコマンドを含む場合であっても、特定のエラーは、それをトリガした特定のコマンドまで容易に追跡可能であり得る。
【0070】
いくつかの例では、アプリケーションコマンドをコマンドクラスのインスタンスとして通信することに加えて、又はその代替として、上で説明されるような継承ツリーの一部であり得る応答クラスのインスタンスとしてそのようなアプリケーションコマンドに対する応答が生成され得る。そのようなコマンド応答クラスは、ベースクラスを継承する情報及び/又は機能(例えば、一意の識別子、クラスのインスタンスが生成された時間を示すデータなど)を含み得、コマンドに応答することに特化した追加の情報も含み得る。そのような情報は、例えば、ロギングされ、必要に応じてアプリケーションの動作を追跡するために後で使用され得る状態情報を含み得る。そのような状態として、以下の表2に記載されるものが挙げられ得る。
【0071】
【表2】
【0072】
動作中、上で説明されるようなコマンド応答クラスは、先で説明されるようなコマンドクラスと相乗的に作用し得る。例えば、場合によっては、モジュールクラスは、それらを実行するであろうモジュールにコマンドを送信するための関数(例えば、SendCmd関数)を含み得る。この関数は、コマンドオブジェクトを、コマンドに対する応答が向けられるべき場所への参照(例えば、送信モジュールによって維持される応答キューへの参照)とともに、入力として取り得る。コマンド送信関数は、この情報を使用して、(例えば、ProceedOperation方法を使用して)受信モジュールのコマンドキューにコマンドをエンキューし得、戻り値としてコマンド応答オブジェクトを提供し得、このようにして、コマンドが受信モジュールに肯定応答されなかった場合でも、送信モジュールが応答を受信することを可能にする。このタイプの実装形態では、成功したコマンドは、2つの応答を生成し得、1つは受信モジュールがコマンドを受信したときであり、1つはコマンドの実行が完了したときである。場合によっては、これを開発者が使用して、第1のモジュールが第2のモジュールにコマンドを送信し、その後、後続の動作に進む前に正しいスケジューリングのためにその第2のモジュールがコマンドを完了するのを待機するような場合に、モジュールにわたるプロセス間の関係を組み込む論理を作成し得る。
【0073】
上記の例は、アプリケーションがスクリプトからのデバイス動作に対応するコマンドをどのように実行し得るかを説明したが、開示される技術の実装形態は、そのタイプのコマンド実行に限定されない場合があることを理解されたい。例えば、いくつかの事例では、本開示に基づいて実装されるアプリケーションは、グラフィカルユーザインターフェース(GUI)を公開し、ユーザが、スクリプト内のデバイス動作に関して上で説明されるものと同様の様式で実行され得る入力を提供することを可能にし得る。このタイプの機能を提供するアプリケーションにおいて、GUIは、図6に示されるような方法を使用して生成され、維持され、動作し得る。図6に示されるような方法では、モジュール(例えば、熱制御部(113)を制御するための機能モジュール(205a))は、オブジェクトとしてGUIを作成し、そのオブジェクトへの参照を、その(すなわち、モジュールの)プライベートデータに記憶することによって、ブロック(601)においてGUIを初期化し得る。次に、このオブジェクトは、ブロック(602)と(603)とを含む制御ループ、並びにブロック(604)を含むインジケータループである、(例えば、別々のスレッド上で実行することによって)並列に連続的に実行されるであろう2つのwhileループを起動し得る。
【0074】
図6に示される特定のループを参照すると、制御ループでは、ブロック(602)において、ユーザが、制御されているシステム内の動作をトリガする入力をGUIに提供したかどうかについてチェックが行われ得る。提供していた場合、ブロック(603)において、その動作に対応するコマンドが生成され、図3に関連して先で説明されるような実行のために適切なモジュールにディスパッチされる。インジケータループでは、ブロック(604)において、GUI上に表示されたデータは、GUIを実行していたモジュールのプライベートデータからそれを伝搬することなどによって更新され得る。どちらの場合も、ループは、(例えば、GUIを実行しているモジュールがSHUTDOWNコマンドを受信したために)GUIが閉じるまで継続し得、その場合、プロセスはブロック(605)で打ち切られる。
【0075】
GUIを生成し、動作させ、維持するための図6に示されるような方法は、システムの特定の態様を制御するための責任も果たすであろうモジュールによって実施され得るが、場合によっては、他のモジュールもGUIの生成、動作、及び/又は維持に関与し得ることに留意されたい。例えば、場合によっては、GUIマネージャ(204)は、アプリケーション内の複数の個々のモジュールによって生成されたGUIの統一ビューを提示し得る。例えば、GUIマネージャは、様々な機能モジュールによって生成されたGUIを符号化するデータオブジェクトへの参照を取得し得、次いで、それらの参照を使用して、組み合わされたGUIをユーザに表示し得る。場合によっては、他のアプローチもまた実装され得る。例えば、場合によっては、モジュールマネージャ(201)は、その個々の機能モジュール(205a)~(205n)の各々に対するGUIへの参照を収集し、それらの参照を表示のためにGUIマネージャ(204)に渡し得る。したがって、上記の説明は、GUIを実装するためのアプローチの単なる例解として理解されるべきであり、限定として扱われるべきではない。
【0076】
本開示に基づいて実装されるアプリケーションによって提供され得る潜在的なタイプの機能の別の例として、アプリケーションによって捕捉されたデータのロギングを検討する。上記のように、場合によっては、プロセスロガー(202)は、様々なオブジェクト(例えば、コマンド、応答)がいつ作成されたか、それらのオブジェクトの一意の識別子、及びそれらのオブジェクトによって生成された任意のエラーなどの情報を記録し得るパブリックインターフェースを提供し得る。同様に、場合によっては、データロガー(203)は、アプリケーションの動作中に捕捉されたデータを記録するための同様のパブリックインターフェースを提供し得る。例えば、いくつかの事例では、制御されているシステムからモジュールが測定値を捕捉するときに、モジュールは、以下の表3に示されるような情報を有するオブジェクト内にその測定値をカプセル化し得る。
【0077】
【表3】
【0078】
次いで、この情報は、モジュールが方法(例えば、DataLog())をコールすることによってデータロガー(203)に提供され得、この方法は、データロガー(203)によって維持されるキューに追加するために、そのベースクラスを継承している場合がある。
【0079】
ここで図7を参照すると、この図は、本開示に基づいて実装されるアプリケーションにおいてモジュールを作成するために使用され得る例示的な方法を例解する。この方法では、ブロック(701)において、モジュールに対して制御状態のセットを定義し得る。これには、例えば、モジュールがSHUTDOWN又はSTOP状態に入るときに取られるべきアクションを定義することが含まれ得る。例えば、モジュールが機能モジュールである場合、これには、機能モジュールが以前にインスタンス化されたデバイスオブジェクトの各々にSHUTDOWNコマンド又はSTOPコマンドを送信することが含まれ得、SHUTDOWNモジュールの場合、デストラクタを呼び出すこと、又は以前にインスタンス化されたデバイスオブジェクトに対してメモリを割り当て解除するために必要な他のアクション(もしあれば)を取ることが含まれ得る。同様に、モジュールが特定の物理デバイスに対応するデバイスオブジェクトであった場合、アクションには、対応する物理デバイスによって公開されるインターフェースに特定の入力を提供して、その結果そのデバイスが非アクティブ化される(又はそうでなければ静止状態に置かれる)ようにすることが含まれ得る。
【0080】
STOP状態及び/又はSHUTDOWN状態に加えて、又はその代替として、他のタイプの制御状態が、ブロック(701)において定義され得る。例えば、いくつかの事例では、モジュールは、そのコンストラクタがコールされたとき、又はアプリケーションの実行中にリセットされる必要がある場合に、BOOTUP(ブートアップ)状態に入り得る。そのような場合、BOOTUP状態を定義することには、様々な下位レベルモジュールへの参照をインスタンス化し、作成し、記憶すること、特定の物理デバイスとの接続を確立すること、モジュールによって記憶されるべき、若しくは開始時にその対応する物理デバイスに提供されるべき様々なデフォルト値を定義すること、及び/又はブートアッププロセス中に生じ得る例外を捕らえるためのエラー論理を定義することが含まれ得る。
【0081】
ブロック(701)において制御状態が定義された後、図7の方法は、ブロック(702)において、モジュールのIDLE状態を定義することに進み得る。先で説明されるように、このIDLE状態は、スクリプト又はユーザ入力からのデバイス動作をGUIに変換することによって生成された可能性があるような、何らかの明示的なコマンドをモジュールが処理していなかったときに実施され得る動作を含み得る。このタイプのIDLE状態を含むいくつかの実装形態では、ブロック(702)においてIDLE状態を定義することには、先で説明されるように、制御されているシステムから情報を捕捉し、データロガー(203)のパブリックインターフェースを使用してその情報をロギングすることが含まれ得る。場合によっては、作成されるモジュールに応じて、他のタイプのアクションがIDLE状態に含まれる場合があるか、又はアクションが全く含まれない場合があり、したがって、上記のIDLE状態を定義することの説明は、例解であるに過ぎないとして理解されるべきであり、本文書又は任意の関連文書によって提供される保護に対する限定を暗示するものとして扱われるべきではない。
【0082】
図7のプロセスはまた、ブロック(703)において、コマンド状態を定義することを含む。これは、モジュールが受信することが予期され得る様々なコマンドを実装するために実行されるであろう、1つ以上のアクション及び/又は論理的動作を定義することによって実施され得る。例えば、場合によっては、これには、図3に示されるような状態機械の実装形態に従うモジュールが状態機械の動作ループの単一の反復で実施し得る1つ以上の動作を定義し、それに続いて、次の反復でコマンドを処理する(又はコマンドが受信されなかった場合はIDLE状態に対して定義された動作を実施する)目的で、モジュールの状態をIDLEに設定することが含まれ得る。場合によっては、これには、任意の種類のループ(例えば、forループ)を含む範囲で、それらのループが決定論的終了を有し、whileループ又は潜在的に非決定論的な他のタイプのルーピング構造を含まないように実施される動作を定義することなどによって、状態機械を非ブロッキングであるように設計することが含まれ得る。同様に、エラーロギングの目的で、場合によっては、任意のコマンド状態の最終動作は、コマンドの実施中に検出された任意のエラーをプロセスロガー(202)に通信する関数を、(例えば、ベースクラスを継承する専用ERRLog()方法をコールすることによって)コールすることであり得る。スクリプトに含まれ得るデバイス動作に対応する全てのコマンド状態が、より高いレベルのモジュール(例えば、モジュールマネージャ(201)又は機能モジュール(205a)~(205n))に含まれ得る一方で、全てのより低いレベルのモジュール(例えば、デバイスオブジェクト(207a-a)~(207a-n)は、それらをインスタンス化した機能モジュールからコマンドを受信するのみであることを要求するなど、他のタイプのプログラミング実践もまた、コマンド状態を定義する際に利用され得る。したがって、ブロック(703)においてコマンド状態がどのように定義され得るかについての上の説明は、単に例解的であるとして理解されるべきであり、限定するものとして扱われるべきではない。
【0083】
ブロック(703)においてコマンド状態を定義する際に異なるプログラミング手法が利用され得るのと同様に、ブロック(703)におけるコマンド状態の定義には、状態機械の動作ループの単一の反復に含まれ得るよりも複雑な動作の定義が含まれ得ることを理解されたい。これらのタイプのより複雑な動作がどのように定義され得るかについての方法の例は、図8に提供される。その方法では、状態機械がコマンドに対応する状態にあるときに実施され得る動作は、(例えば、ブロック(703)に関連して先で説明されるようなプログラミング手法を使用して)ブロック(801)において定義され得る。追加的に、ブロック(802)において、モジュールが次にIDLE状態にあるときに実施され得る追加の動作が定義され得る。これは、ループ反復にわたって実行されるであろうバッファ内にそれらの動作を置くことなどによって、モジュールの動作ループの将来の反復時にそれらの動作が実行され、IDLE状態に関連付けられ得る論理を定義することを含み得る。図8の方法はまた、ブロック(803)において、エラー論理を定義することを含む。この論理は、ブロック(801)及び/又は(802)において定義されたアクションが実施されるのを妨げる可能性があり、その結果、先で説明されるようにプロセスロガー(202)を使用してエラーがロギングされる可能性がある状況を検出するために使用され得る。図8の方法はまた、ブロック(804)において、コマンドを受信した後の反復においてモジュールが入るべき状態をIDLE状態として定義することを含む。その後、モジュールがそのIDLE状態に入ると、ブロック(802)において定義された動作を実行し得、これは、コマンドに関連付けられた動作の全てが完了するまで継続し得る。このようにして、コマンドに対する動作は、複数の状態機械ループにわたって拡張し得る。追加的に、場合によっては、後続のIDLE状態において動作が実施されることを可能にする実装形態は、バッファに追加された動作が、別のコマンドがその同じバッファにそれ自体のコマンドを追加する前に完了していなかった場合などに、複数のコマンドの同時IDLE処理を可能にし得る。このようにして、前のコマンドが進行中であっても、新たなコマンドが受信され得る。
【0084】
場合によっては、複数のループにわたって拡張する動作を用いてコマンドを扱う他のアプローチもまた可能であり得る。例えば、図9は、コマンドの完了専用の新たな状態を使用して、マルチ反復コマンドがどのように実行され得るかを定義するための方法を例解す。その方法では、モジュールがその初期状態(例えば、複数のループ反復にわたって実行されるコマンドに対応する状態)にあったときに実施され得るアクションが、ブロック(901)において定義される。ブロック(902)において、ブロック(901)において定義されたアクションの実施の際に発生し得るエラーを識別するために、エラー論理が定義され得る。ブロック(901)で定義されたアクションが、コマンドを実装するために必要とされた全てのアクションを表していた場合、コードが追加されて、ブロック(903)及び(904)において、それぞれ、コマンドが終わったことを報告し、次の状態をIDLEに設定する。代替的に、コマンドを実装するために必要とされるアクションが全て定義されているわけではない場合、ブロック(905)において、新たな状態が作成され、遷移する次の状態として定義され得る。この新たな状態は、スクリプトに含まれるか又はGUIから受信されるであろう任意のコマンドに対応しない場合があり、代わりに、次のループ反復においてプロセスを継続するようにトリガされるのみである場合がある。次に、ブロック(901)及び(902)において、この新たな状態に対してアクション及びエラー論理を定義し得、これは、コマンドの完了に必要な全てのアクションが定義されるまで継続し得、その時点で、コマンドは終わってモジュールはIDLE状態に遷移する可能性がある。
【0085】
性能が複数の反復にわたって拡張し得るコマンドの状態を定義するアプローチの更なる別の例が図10に提供されており、これは、コマンドがモジュール間のインタラクションを必要とし得る場合に使用され得る。図10の方法では、ブロック(1001)において、外部モジュールとインタラクションする必要がある前にモジュールが実施し得るアクションが定義され得る。次に、ブロック(1002)において、モジュールと外部モジュールとの間のインタラクションが定義され得る。これは、例えば、モジュールベースクラス(例えば、WaitForCommandToFinish())に対して定義された方法へのコールを含み、外部モジュールによって実施される必要があるであろうコマンドと、モジュールがどれだけ待機すべきかを示すタイムアウト値とを含むパラメータを提供することによって行われ得る。外部インタラクションが定義された後、ブロック(1003)において、外部モジュールがその実行を終えた後に行われるであろう任意の動作が定義され得る。次に、図8及び図9について説明されるものと同様の様式で、モジュールの次の状態をIDLEに設定するコードが追加され得る。動作中、図10に示されるような方法を使用して作成されたモジュールは、モジュールをその状態に駆動したコマンドが完了する(又は打ち切られる、又はエラーを伴って退出するなど)まで、図10の方法を使用して定義されたアクションに対応する状態に留まり得る。このようにして、外部インタラクションを必要としたコマンドを実行するモジュールは、新たな重要コマンド又は待機状態を無効にするであろうコマンドが必要に応じて依然として実行され得るように、そのインタラクションがブロックすることなく完了するのを待機し得る。
【0086】
図8図10は、複数のループ反復にわたってコマンドを実行するために状態機械ベースのモジュールを定義するための方法の例を提供したが、これらの例は、例解的であるに過ぎず、他の変形形態が、本開示に照らして、当業者によって実装され得、また当業者には直ちに明らかになることを理解されたい。例えば、場合によっては、動作が図10で説明されているような外部インタラクションを含み、外部インタラクションの前及び後に実施される動作(例えば、ブロック(1001)及び(1003)で定義された動作)が、図8及び図9に関連して説明されたような技法を使用して複数のループ反復にわたって拡張し得る状態を作成するなど、上で説明されるアプローチの組み合わせが実装され得る。他の変形形態もまた可能であり得、本開示に基づいて過度の実験を行うことなく当業者によって実装され得る。したがって、ブロック(703)においてコマンド状態を定義する際に含まれ得るアクションについての上の説明は、単に例解的なものとしてのみ理解されるべきであり、限定的なものとして扱われるべきではない。
【0087】
図7の考察を続けると、ブロック(703)においてモジュールのコマンド状態の全てが定義された後、例解されたプロセスは、ブロック(704)においてモジュールのGUI(もしあれば)を定義することを継続し得る。これには、例えば、図6に関連して先で説明されるようなインジケータ及び制御ループを定義すること、並びにGUIの外観及びGUIによってサポートされ得る潜在的なインタラクションを定義することが含まれ得る。最後に、GUI及び全ての必要な状態が定義されると、図7に示されるような方法を使用して作成されたモジュールは、完全なものとして扱われ、図2に例解されるような、かつ図1に示されるようなシステム(100)を制御するための先で説明されるアプリケーションに組み込まれ得る。
【0088】
上で説明される例の変形形態もまた可能であり、本開示に基づいて過度の実験を行うことなく当業者には明らかであり、当業者によって実施され得る。例えば、本明細書で説明されるようなアプリケーションは、図2に示されるようなアーキテクチャを使用して実装され得るが、場合によっては、本開示に基づいて実装されるアプリケーションは、代わりに図11に示されるようなアーキテクチャを使用し得る。図11に示されるように、そのような代替アーキテクチャは、図2に関連して上で考察されるものと同様のモジュールを含み得るが、それらを異なる様式で編成し得る。例えば、場合によっては、プロセスロガー(202)及びデータロガー(203)がモジュールマネージャ(201)と並行してインスタンス化されるのではなく、モジュールマネージャ(201)がインスタンス化され得、次いで、機能モジュール(205a)~(205n)によってアクセスすることができる機能を提供し得る自動化マネージャ(206)及び/又は他のモジュールとともに、プロセスロガー(202)及びデータロガー(203)がインスタンス化され得る。
【0089】
いくつかの実施形態(例えば、図11のアーキテクチャに従う実施形態)では、機能モジュールによって使用され得る機能を提供するであろうモジュールをインスタンス化した後、モジュールマネージャ(201)は、機能モジュール(205a)~(205n)をインスタンス化し、先で説明されるようなパブリックインターフェースを使用することの代替として機能モジュールがそれらの機能にアクセスするために使用し得る、以前にインスタンス化されたモジュール(例えば、プロセスロガー(202)、データロガー(203))へのポインタを提供し得る。いくつかの実装形態では、ポインタを介したこのタイプの代替アクセスは、パブリックにアクセス可能なインターフェースの代わりに利用可能であり得るが、他の実装形態では、機能にアクセスするポインタベースの方法は、パブリックインターフェースと並行して利用可能にされ得、それによって、機能モジュール(205a)~(205n)の開発者に、別のモジュールの機能にアクセスするどの様式が所与の状況において最も適切であり得るかに応じて複数の選択肢を与える。
【0090】
図11に示されるように、全てのモジュールがモジュールマネージャ(201)によってインスタンス化される異なる階層を有することに加えて、場合によっては、クラウドマネージャモジュール(1101)など、先で説明されるものに加えたモジュールが存在し得る。そのようなクラウドマネージャモジュール(1101)が存在するアプリケーションでは、クラウドマネージャモジュール(1101)は、他のモジュール(例えば、機能モジュール(205a)~(205n))に、ファイルのアップロード又はダウンロードなどのクラウド動作のための機能を提供するために使用され得る。これは、例えば、プロセスロガー(202)モジュール及びデータロガー(203)モジュールについて先で説明されるものと同様の様式で、参照(例えば、SendCloudData関数)又はパブリックインターフェースを介してアクセスされる関数を使用して行われ得る。図2及び図11に関連して上で考察されるものに追加の、又はそれとは異なるモジュールを提供することなどの他の変形形態もまた可能であり、本開示に照らして当業者には直ちに明らかになるであろう。したがって、変形形態についての上の考察は、それに先行する説明及び例と同様に、例解的なものとしてのみ理解されるべきであり、本文書又は任意の関連文書によって提供される保護に対する限定を暗示するものとして扱われるべきではない。
【0091】
IV.その他
前述の説明は、当業者が本明細書に説明される様々な構成を実践することを可能にするために提供される。主題の技術は、様々な図及び構成を参照して具体的に説明されてきたが、これらは例解目的のみのためであり、主題の技術の範囲を限定するものとして解釈されるべきではないことを理解されたい。
【0092】
主題の技術を実装するための多くの他の方法が存在し得る。本明細書に説明される様々な機能及び要素は、主題の技術の範囲から逸脱することなく、示されるものとは異なって区分され得る。これらの実装形態への様々な修正は、当業者には容易に明らかであり得、本明細書で定義される一般原理は、他の実装形態に適用され得る。したがって、多くの変更及び修正が、主題の技術の範囲から逸脱することなく、当業者によって本技術に対して行われ得る。例えば、異なる数の所与のモジュール又はユニットが用いられ得るか、1つ若しくは複数の異なるタイプの所与のモジュール若しくはユニットが用いられ得るか、所与のモジュール若しくはユニットが追加され得るか、又は所与のモジュール若しくはユニットが省略され得る。
【0093】
本明細書に説明される例のいくつかのバージョンは、コンピュータシステムの一部であり、かつバスサブシステムを介していくつかの周辺デバイスと通信する、プロセッサを使用して実装され得る。コンピュータシステムを使用して実装される本明細書に説明される例のバージョンは、本明細書に説明される方法を実施するようにプログラムされた汎用コンピュータを使用して実装され得る。代替的に、コンピュータシステムを使用して実装される本明細書に説明される例のバージョンは、本明細書に説明される方法を実施するように配置されたハードウェアを用いて構築される特定目的コンピュータを使用して実装され得る。本明細書に説明される例のバージョンはまた、少なくとも1つの汎用コンピュータと少なくとも1つの特定目的コンピュータとの組み合わせを使用して実装され得る。
【0094】
コンピュータシステムを使用して実装されるバージョンでは、各プロセッサは、コンピュータシステムの中央処理装置(central processing unit、CPU)、マイクロプロセッサ、特定用途向け集積回路(application-specific integrated circuit、ASIC)、他の種類のハードウェア構成要素、及びそれらの組み合わせを含み得る。コンピュータシステムは、複数のタイプのプロセッサを含み得る。コンピュータシステムの周辺デバイスは、例えば、メモリデバイス及びファイル記憶サブシステムを含む記憶サブシステム、ユーザインターフェース入力デバイス、ユーザインターフェース出力デバイス、並びにネットワークインターフェースサブシステムを含み得る。入力及び出力デバイスは、コンピュータシステムとのユーザインタラクションを可能にし得る。ネットワークインターフェースサブシステムは、他のコンピュータシステム内の対応するインターフェースデバイスへのインターフェースを含む、外部ネットワークへのインターフェースを提供し得る。ユーザインターフェース入力デバイスは、キーボード、マウス、トラックボール、タッチパッド、又はグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム及びマイクロフォンなどのオーディオ入力デバイス、並びに他のタイプの入力デバイスを含み得る。概して、「入力デバイス」という用語の使用は、コンピュータシステムに情報を入力するための全ての可能なタイプのデバイス及び方法を含むことを意図している。
【0095】
コンピュータシステムを使用して実装されるバージョンでは、ユーザインターフェース出力デバイスは、ディスプレイサブシステム、プリンタ、ファックス機、又はオーディオ出力デバイスなどの非視覚ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(cathode ray tube、CRT)、液晶ディスプレイ(liquid crystal display、LCD)などのフラットパネルデバイス、投影デバイス、又は可視画像を作成するための何らかの他の機構を含み得る。ディスプレイサブシステムはまた、オーディオ出力デバイスなどの非視覚ディスプレイを提供し得る。概して、「出力デバイス」という用語の使用は、コンピュータシステムからユーザ又は別の機械若しくはコンピュータシステムに情報を出力するための全ての可能なタイプのデバイス及び方法を含むことが意図される。
【0096】
コンピュータシステムを使用して実装されるバージョンでは、記憶サブシステムは、本明細書に説明されるモジュール及び方法の一部又は全部の機能を提供するプログラミング及びデータ構造を記憶し得る。これらのソフトウェアモジュールは、概して、コンピュータシステムのプロセッサによって単独で、又は他のプロセッサと組み合わせて実行され得る。記憶サブシステムで使用されるメモリは、プログラム実行中に命令及びデータを記憶するためのメインランダムアクセスメモリ(random-access memory、RAM)と、固定命令が記憶される読み取り専用メモリ(read only memory、ROM)と、を含む、いくつかのメモリを含み得る。ファイル記憶サブシステムは、プログラム及びデータファイルのための永続的記憶域を提供し得、ハードディスクドライブ、関連する取り外し可能媒体を有するフロッピーディスクドライブ、CD-ROMドライブ、光ドライブ、又は取り外し可能媒体カートリッジを含み得る。特定の実装形態の機能性を実装するモジュールは、記憶サブシステム内のファイル記憶サブシステムによって、又はプロセッサによってアクセス可能な他のマシン内に記憶され得る。
【0097】
コンピュータシステムを使用して実装されるバージョンでは、コンピュータシステム自体は、パーソナルコンピュータ、ポータブルコンピュータ、ワークステーション、コンピュータ端末、ネットワークコンピュータ、テレビ、メインフレーム、サーバファーム、広く分散された1組の疎にネットワーク化されたコンピュータ、又は任意の他のデータ処理システム若しくはユーザデバイスを含む様々なタイプのものであり得る。コンピュータ及びネットワークの絶えず変化する性質に起因して、本明細書において説明されるコンピュータシステムの例は、開示される技術を例解する目的のための具体的な例としてのみ意図される。本明細書に説明されるコンピュータシステムよりも多い又は少ない構成要素を有するコンピュータシステムの多くの他の構成が可能である。
【0098】
方法ではなく製造物品として、非一時的コンピュータ可読媒体(computer readable medium、CRM)に、プロセッサによって実行可能なプログラム命令がロードされ得る。プログラム命令は、実行されたときに、上で説明されるコンピュータ実装方法のうちの1つ以上を実装する。代替的に、プログラム命令は、非一時的CRMにロードされ得、適切なハードウェアと組み合わされたときに、開示された方法を実践するコンピュータ実装システムのうちの1つ以上の構成要素になり得る。
【0099】
下線付き及び/又はイタリック体の見出し及び小見出しは、便宜上使用されているに過ぎず、主題技術を限定するものではなく、主題技術の説明の解釈に関連して言及されていない。当業者に既知である、又は後に既知となるようになる、本開示全体にわたって説明される様々な実装形態の要素に対する全ての構造的及び機能的等価物は、参照により本明細書に明示的に組み込まれ、本主題技術によって包含されることが意図される。更に、本明細書で開示されるものは、そのような開示が上の説明において明示的に述べられているかどうかにかかわらず、公衆に提供されることを意図していない。
【0100】
前述の概念及び以下でより詳細に考察される追加の概念の全ての組み合わせ(そのような概念が相互に矛盾しないことを条件として)は、本明細書で開示される本発明の主題の一部であると企図されることを理解されたい。具体的には、本開示の最後に現れる特許請求される主題の全ての組み合わせは、本明細書で開示される本発明の主題の一部であると企図される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【国際調査報告】