JP2005055961A - タスク間通信プログラム及びタスク間通信方法 - Google Patents
タスク間通信プログラム及びタスク間通信方法 Download PDFInfo
- Publication number
- JP2005055961A JP2005055961A JP2003205985A JP2003205985A JP2005055961A JP 2005055961 A JP2005055961 A JP 2005055961A JP 2003205985 A JP2003205985 A JP 2003205985A JP 2003205985 A JP2003205985 A JP 2003205985A JP 2005055961 A JP2005055961 A JP 2005055961A
- Authority
- JP
- Japan
- Prior art keywords
- task
- scheduler
- event
- transmission
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 26
- 230000005540 biological transmission Effects 0.000 claims description 118
- 238000004891 communication Methods 0.000 claims description 59
- 230000006870 function Effects 0.000 claims description 33
- 230000004913 activation Effects 0.000 claims description 13
- 238000001514 detection method Methods 0.000 claims description 4
- 230000003213 activating effect Effects 0.000 claims 3
- 230000008569 process Effects 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 20
- 230000004044 response Effects 0.000 description 11
- 239000004065 semiconductor Substances 0.000 description 11
- 238000012217 deletion Methods 0.000 description 10
- 230000037430 deletion Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 4
- 238000012508 change request Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Abstract
【課題】タスクの追加・削除に容易に対処でき、しかもイベントデータの受信側で当該データを適切に処理できるようにする。
【解決手段】汎用OSが動作する計算機において、当該汎用OSが起動されると、スケジューラサービス12が起動される。スケジューラサービス12は、グローバル設定ファイル26に設定されているスケジューラリストに従い、当該リストの示すスケジューラ11−1〜11−nを起動する。起動されたスケジューラ11−1〜11−nはタスクからの接続待ち状態となる。ここで、例えばスケジューラ11−1がスケジューラAPI13を介してタスクから接続され、しかる後に当該タスクからのイベントデータを受信したものとすると、当該スケジューラ11−1は、イベント処理のトリガとなるトリガ情報が設定されたシナリオファイル23に従って当該受信イベントデータを処理する。
【選択図】 図1
【解決手段】汎用OSが動作する計算機において、当該汎用OSが起動されると、スケジューラサービス12が起動される。スケジューラサービス12は、グローバル設定ファイル26に設定されているスケジューラリストに従い、当該リストの示すスケジューラ11−1〜11−nを起動する。起動されたスケジューラ11−1〜11−nはタスクからの接続待ち状態となる。ここで、例えばスケジューラ11−1がスケジューラAPI13を介してタスクから接続され、しかる後に当該タスクからのイベントデータを受信したものとすると、当該スケジューラ11−1は、イベント処理のトリガとなるトリガ情報が設定されたシナリオファイル23に従って当該受信イベントデータを処理する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、汎用オペレーティングシステム環境でのタスク間通信に好適なタスク間通信プログラム及びタスク間通信方法に関する。
【0002】
【従来の技術】
近年、マルチタスクオペレーティングシステム(OS)の普及に伴い、アプリケーションプログラムによって実現されるタスク間での通信を主とするタスク間制御が新たな課題となってきている。またシステム運用後、当該システムで実現する機能の変更・拡張のために、新規タスクの追加、既存タスクの削除が発生する可能性もある。
【0003】
そこで、タスクの追加・削除に容易に対処し得るタスク間通信を実現するために、タスク間の通信を制御するシステム制御タスクを用意し、当該システム制御タスクを除く一般のタスク(以下、単にタスクと称する場合には、システム制御タスクを除く一般のタスクを表すものとする)は、当該システム制御タスクとの間でのみ通信を行い、他のタスクへの通信は当該システム制御タスクが代わって行うタスク処理システムが提案されている(例えば、特許文献1参照)。
【0004】
特許文献1に記載されたタスク処理システム(タスク間通信システム)では、システム制御タスクはシステム制御テーブルを有している。このシステム制御テーブルには、各タスクから送信されるメッセージの種類(メッセージ番号、つまりメッセージ識別子)に対応付けて当該メッセージの出力先タスクを指定する情報が設定されている。システム制御タスクは、タスクから受信したメッセージのメッセージ種類によりシステム制御テーブルを参照し、当該メッセージ種類に対応して設定されている出力先の情報の指定するタスクに対し、当該受信メッセージに対応する出力メッセージを送信する。このようなシステムでは、システム制御テーブル上で、メッセージ種類と出力先との関係を追加・変更するだけで、タスクの追加・削除に容易に対処できる。
【0005】
【特許文献1】
特開平6−95896号公報(段落0008〜0014,0022、図4、図8)
【0006】
【発明が解決しようとする課題】
上記したように、システム制御テーブルに従ってシステム制御タスクがタスク間の通信を制御する従来技術では、システム制御テーブル上で、メッセージ種類と出力先との関係を追加・変更することにより、タスクの追加・削除に対処できる。つまり、タスクの追加・削除が発生しても、システム制御テーブルを操作するだけで、あるタスクからのメッセージ(イベントデータ)を目的のタスクに送信できる。
【0007】
しかし、上記従来技術では、あるタスクからのメッセージ(イベントデータ)を、複数のタスクに対し、当該複数のタスクがそれぞれ理解可能なメッセージ種類(イベント識別子)のメッセージ(イベントデータ)として送信することは考慮されていない。このため従来技術では、あるタスクからの例えば第1の種類(イベント識別子)のメッセージ(イベントデータ)を、システム制御タスクが他の複数のタスクに送信したとしても、送信先のタスクの中に新規タスクが存在し、且つ当該新規タスクが第2の種類(イベント識別子)のメッセージ(イベントデータ)しか処理できない場合には、当該新規タスクではメッセージを適切に処理できない。また、このような新規タスクに対して、複数のタスクからのメッセージ(イベントデータ)をシステム制御タスクが送信した場合、当該メッセージ(イベントデータ)の種類(イベント識別子)によっては、適切に処理できないこともある。
【0008】
本発明は上記事情を考慮してなされたものでその目的は、タスクの追加・削除に容易に対処でき、しかもイベントデータの受信側で当該データを適切に処理できるタスク間通信プログラム及びタスク間通信方法を提供することにある。
【0009】
【課題を解決するための手段】
本発明の1つの観点によれば、汎用オペレーティングシステム(OS)が動作する計算機を、タスクとの間でイベントデータによる通信が可能な少なくとも1つのスケジューラとして機能させるためのタスク間通信プログラムが提供される。上記スケジューラは、タスクからのイベントデータの受信時には、受信イベント識別子が設定されると共に当該受信イベント識別子に対応付けて送信イベント識別子及びイベントデータの送信先となるタスクを指定する送信先アプリケーション識別子が設定可能な、イベント処理のトリガとなるトリガ情報が記録されたシナリオファイルを参照して、受信イベントデータのイベント識別子に一致する受信イベント識別子を含むトリガ情報を全て検出する手段と、この検出手段によって検出されたトリガ情報をもとに、当該トリガ情報に少なくとも上記送信先アプリケーション識別子が設定されていることを受信イベントデータの送信条件として、当該条件の成立または不成立を判定する手段と、この判定手段により送信条件成立が判定された場合に、上記検出手段によって検出されたトリガ情報に設定されている送信先アプリケーション識別子の示すタスクへ上記受信イベントデータを送信し、その際に当該イベントデータのイベント識別子を、当該トリガ情報に送信イベント識別子が設定されているか否かに応じて当該送信イベント識別子に置き換える送信手段とを備えている。
【0010】
このような構成のタスク間通信プログラムによれば、汎用オペレーティングシステムの起動時に自動的に起動されるスケジューラにより、イベント処理のトリガとなるトリガ情報が設定されたシナリオファイルに従って受信イベントが処理されるため、タスク間通信を非同期で容易に行うことが可能となる。また、タスクの機能追加・削除(新規タスクの追加・既存タスクの削除)が必要な場合でも、シナリオファイルを書き換えるだけで容易に対応可能である。特に、シナリオファイルの中から検出されたトリガ情報に送信イベント識別子が設定されている場合には、当該トリガ情報に設定されている送信先アプリケーション識別子の示すタスクへ受信イベントデータを送信する際に、当該イベントデータのイベント識別子が当該送信イベント識別子に置き換えられる。このため、イベントデータの送信側のタスク(特に新規タスク)は、送信先のタスクだけでなく、当該送信先タスクが処理可能なイベント識別子をも意識する必要がない。また、送信先(受信側)のタスク(特に新規タスク)には、シナリオファイルに従って、スケジューラから当該タスクで処理可能なイベント識別子のイベントデータを送ることが可能なため、当該イベントデータを適切に処理することが可能となる。
【0011】
また、上記トリガ情報に、受信イベント識別子に対応付けて起動すべきタスクを指定する起動タスク情報が設定可能な構成とし、上記検出されたトリガ情報に起動タスク情報が設定されている場合には、当該トリガ情報に送信先アプリケーション識別子が設定されているか否かと無関係に、送信条件不成立として処理し、当該起動タスク情報で指定されるタスクを起動するとよい。このようにすると、シナリオファイルの設定により、所望のタスクからのイベントデータをトリガとして所望の1つまたは複数のタスクを起動することができる。
【0012】
また、上記タスク間通信プログラムにより、上記計算機を、上記汎用OSの起動時に、上記少なくとも1つのスケジューラを指定するリスト(スケジューラリスト)が設定されたグローバル設定ファイルに従って当該スケジューラを起動するスケジューラサービス手段として更に機能させる構成とするとよい。このようにすると、汎用OSの起動時に少なくとも1つのスケジューラ(つまり1つまたは複数のスケジューラ)を自動的に起動できる。
【0013】
また、上記タスク間通信プログラムにより、上記計算機を、タスクからの要求により上記スケジューラと汎用通信プロトコルにより接続する特定アプリケーションプログラムインタフェースとして更に機能させる構成とするとよい。このようにすると、ユーザはタスクの機能追加・削除等が必要な場合、汎用通信プロトコルの知識等がなくても容易に対応可能である。またタスクの改造期間も短縮できる。特に、上記特定アプリケーションプログラムインタフェースが、タスクからの要求に従ってスケジューラとの接続のための汎用のオブジェクト間通信インタフェースを当該タスクに提供し、当該タスクにより生成される汎用の通信オブジェクトに応じて上記スケジューラとの接続または上記スケジューラからの切断を行う構成とするならば、タスクは、汎用オブジェクト間通信インタフェースを介して共通の仕様の上で通信を行うことが可能である。特に、種類の異なる複数の汎用のオブジェクト間通信インタフェースを提供するならば、タスクの開発環境や開発言語に依存せずにスケジューラを利用可能となる。
【0014】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るタスク間通信システムのソフトウェア構成を示すブロック図である。図1のシステムは、汎用のマルチタスクオペレーティングシステム(以下、汎用OSと称する)が動作するパーソナルコンピュータ(以下、PCと称する)上に実現されるものとする。
【0015】
図1において、スケジューラ11−1(#1),11−2(#2),…11−n(#n)は、複数のタスクと通信を行うスケジューラ部を構成する。この通信には、例えばTCP(Transmission Control Protocol)/IP(Internet Protocol)と呼ばれる汎用通信プロトコルが使用される。スケジューラ11−i(i=1〜n)は後述するスケジューラサービス12により起動され、タスクの接続待ち状態に遷移する。スケジューラ11−iは当該スケジューラ11−iと接続されたたとえば複数のタスク(アプリケーションプログラム)との間で、後述する各種の設定ファイル(アプリケーション登録ファイル21、スケジューラ設定ファイル22、シナリオファイル23、共有変数定義ファイル24及びセマフォ定義ファイル25)を利用して非同期に通信する。ここで、TCP/IPを用いたスケジューラ11−iとタスクとの間の通信は、スケジューラ側をサーバモード、タスク側をクライアントモードで使用する、クライアント/サーバ接続形態で行われる。
【0016】
図1では、スケジューラ11−1(#1)の通信相手となるタスクがタスク20−1(#1)〜20−3(#3)であることが示されている。タスク20−j(j=1〜3)は、スケジューラ11−1と同一PC上に存在しても、当該PCとネットワークを介して接続された他のPC上に存在しても、スケジューラ11−1と通信(送受信)可能である。
【0017】
スケジューラサービス12は、当該スケジューラサービス12が存在するPCへのインストール時に当該PC上で動作する汎用OS10(図2参照)のサービス機能に登録される。このサービス機能とは、当該サービス機能に登録されたソフトウェアを、汎用OS10の立ち上がり時に自動的に起動する機能である。したがって、スケジューラサービス12が汎用OS10のサービス機能に登録されることにより、当該スケジューラサービス12は、PC(上の汎用OS10)の次回起動時からは、自動的に起動される。
【0018】
スケジューラサービス12は起動後、ユーザの入力操作により設定された、少なくとも1つのスケジューラを(スケジューラ名により)指定するスケジューラリスト(スケジューラ名リスト)を含むグローバル設定ファイル26に従い、当該スケジューラリストで指定される全てのスケジューラ(図1ではスケジューラ11−1〜11−n)を認識し、当該スケジューラの起動/停止/リセットを管理する機能を有する。スケジューラサービス12はまた、汎用OS10のシステムツールであるイベントビューアへのログを出力する機能を有する。
【0019】
図2は、スケジューラサービス12の起動と、それに伴うスケジューラ11−1〜11−nの起動とを説明するための図である。図2に示すように、スケジューラサービス12は、汎用OS10の立ち上がり時に起動される(ステップS1)。スケジューラサービス12が起動すると、当該スケジューラサービス12によりスケジューラ11−1〜11−nが起動される(ステップS2−1〜2−n)。
【0020】
スケジューラAPI(Application Program Interface:アプリケーションプログラムインタフェース)13は、スケジューラ11−i(図1ではスケジューラ11−1)を使用してタスク間通信を実現するためのインタフェースである。スケジューラAPI13は、タスクがソケット等を直接操作することなくスケジューラ11−iの機能を容易に使用可能とするために用意される。
【0021】
そのため、スケジューラAPI13は、DLL(Dynamic Link Library)として作成され、スケジューラ11−iとの接続のための汎用のオブジェクト間通信インタフェースをタスクに提供する。ここでは特に、タスクの開発環境や開発言語に依存せずにスケジューラ11−iの機能が利用できるように、複数種類、例えば2種類の汎用オブジェクト間通信インタフェースがタスクに提供される。汎用のオブジェクト間通信インタフェースとしては、例えば、米国マイクロソフト社が策定したオブジェクト間通信規約に従うC++言語向けCOM(Component Object Model)オブジェクト、或いは当該マイクロソフト社が開発したVB(Visual Basic)言語向けActiveXオブジェクトが知られている。タスクは汎用オブジェクト間通信インタフェースに適合する複数のスケジューラオブジェクト(通信オブジェクト)を生成することにより同時に複数のスケジューラ11−iと通信することができる。つまりタスクは、汎用オブジェクト間通信インタフェースを介して共通の仕様の上で通信を行うことが可能である。このため、タスクの機能追加・削除(新規タスクの追加・既存タスクの削除)が必要となった場合でも、汎用オブジェクト間通信インタフェースの仕様を理解すれば、後述するデータフォーマットのアプリケーション登録ファイル21(図15参照)を変更するだけで、容易に対応可能となる。ここではユーザ(タスクの開発者)は、TCP/IPの知識等は不要である。またタスクの改造期間の短縮を図ることも可能である。
【0022】
タスクは、上記したようにクライアントとして位置付けられる。タスクは、スケジューラAPI13が用意するプロパティに当該タスクのアプリケーションIDを設定することで、当該タスクをスケジューラ11−iに認識させる。
【0023】
スケジューラAPI13は以下の機能を有する。
【0024】
a)起動時にスケジューラ11−iの制御のもとで、シナリオファイル23により指定される、自身に接続されるクライアント(タスク)の設定を行う機能。
【0025】
b)スケジューラ11−iとの接続と切断をスケジューラオブジェクトにより行う機能、当該スケジューラ11−iと通信するタスクのアプリケーションIDの認証処理を行う機能。ここでは、TCP/IPの直接の操作をタスクが考慮する必要はない。また、タスク間通信にTCP/IPプロトコル(汎用通信プロトコル)を適用することにより、送信エラーやリトライをタスクレベルで考慮する必要がない。その理由は、TCP/IPプロトコルを搭載しているPCが自動で制御を行うためである。
【0026】
c)イベント(イベントデータ)の送受信を行う機能。このイベントの送受信により、イベントデータオブジェクト(スケジューラオブジェクト)を介してタスクとの通信が行われる。タスクがコールバックを設定することによりイベント受信時に非同期通知イベントを発生させることが可能である。
【0027】
d)スケジューラ11−iが生成した共有変数を参照または更新する機能(共有変数アクセス機能)
e)スケジューラ11−iにより生成されたセマフォを使用してタスク間の排他制御(セマフォ操作)を行う機能。
【0028】
f)シナリオファイル23の設定に従うスケジューラ11−iの制御にもとで他のタスクを起動させる機能。この機能により起動されたタスクは自身が起動されるトリガとなったイベントデータを取得する手段を提供する。
【0029】
g)クライアント設定ファイル27に従って、スナップ(ログ)を作成し、後述するクライアントログファイル32(図3参照)に出力する機能。
【0030】
スケジューラ11−iはスケジューラ管理ツール14により管理される。スケジューラ管理ツール14は、スケジューラ11−iの運用を支援する目的で用意されるGUI(Graphical User Interface)アプリケーションである。スケジューラ管理ツール14は、当該管理ツール14が存在するPC上のスケジューラ11−iだけでなく、当該PCとネットワーク接続される他のPC上のスケジューラも管理可能である。スケジューラ管理ツール14は、
a)スケジューラサービス12の起動と停止
b)各スケジューラ11−iの運用状態の監視
c)各スケジューラ11−iの起動と停止とリセット
d)各タスクのスケジューラ11−iとの接続状況の監視
e)各タスクのスナップレベルの設定
の各機能を有する。スケジューラ管理ツール14によるスケジューラ11−iのリセット処理は、当該スケジューラ11−iに(スケジューラAPI13を介して)接続されている全てのタスクへのリセット通知を行い、接続中のTCP/IPを切断することにより実現される。この場合、スケジューラ管理ツール14は、スケジューラ11−iにより生成されているセマフォを解放し、当該スケジューラ11−iを終了した後に、再度起動を行う。
【0031】
タスク20−jはアプリケーションプログラムであり、スケジューラAPI13を使用してスケジューラ11−i(例えばスケジューラ11−1)との接続を行う。タスク20−jは、スケジューラ11−iとの接続後、当該スケジューラ11−iを介して他のタスクとイベントの通信を行う。タスク20−jは、他のタスクとの通信終了後は切断要求を発行してスケジューラ11−iとの通信を終了する。
【0032】
図3は上記スケジューラ11−1〜11−nが存在するPCにおけるディレクトリ構成の一例を示す。図3において、ログ格納ディレクトリ30により管理されるスケジューラログファイル31−1,31−2は、例えば図1中のスケジューラ11−1,11−2で行った処理のログを書き込むのに用いられる。同様に、クライアントログファイル32は、スケジューラAPI13で行った処理のログを書き込むのに用いられる。このログファイル31−1,31−2,32等へのスナップあるいはイベントログの収集により、トラブル発生時の対応や原因究明が速やかに行える。
【0033】
図4は図1の構成のソフトウェア及び各ファイルが存在するPCのハードウェア構成を示すブロック図である。図4のPCは、CPU41、主メモリ42、ディスク装置43及びネットワークインタフェース44を含む周知のハードウェア構成を有している。CPU41、主メモリ42、ディスク装置43及びネットワークインタフェース44はバス45により相互接続されている。
【0034】
主メモリ42には、汎用OS10、スケジューラ11−1〜11−n、スケジューラサービス12、スケジューラAPI13及びタスク20−1〜20−3を含むタスク群(アプリケーション群)が、CPU41により実行可能なように、例えばディスク装置43からロードされている。スケジューラ11−1〜11−n、スケジューラサービス12及びスケジューラAPI13は、例えばCD−ROM、フレキシブルディスクまたはメモリカード等の記憶媒体により提供され、当該記憶媒体を図4のPCに設けられたCD−ROM装置、フレキシブルディスク装置、カードスロット等に装着して、当該記憶媒体から読み取ってディスク装置43に転送することにより当該ディスク装置43に記録される。また、上記スケジューラ11−1〜11−n、スケジューラサービス12及びスケジューラAPI13をネットワークを介して図1のPCに転送することも可能である。
【0035】
ディスク装置43には、アプリケーション登録ファイル21、スケジューラ設定ファイル22、シナリオファイル23、共有変数定義ファイル24、セマフォ定義ファイル25、グローバル設定ファイル26及びクライアント設定ファイル27を含むファイル群が記録されている。これらのファイル群は少なくとも1つの記憶媒体により提供され、当該記憶媒体が装着される読み取り装置を介してディスク装置43に記録(保存)される。また、上記ファイル群をユーザの入力操作で他のPC上で作成し、当該ファイル群を図1のPCにネットワークを介して転送することにより、ディスク装置43に記録することも可能である。
【0036】
図5はスケジューラサービス12により使用されるグローバル設定ファイル26(ファイル名:global.ini)のデータフォーマットを示す。図5において、斜体文字の部分はユーザの入力操作により設定可能な箇所である。グローバル設定ファイル26には、スケジューラサービス12が管理するスケジューラ11−iのスケジューラ名のリスト(SchedulerList)51と、当該リスト51中のスケジューラ名で指定されるスケジューラ11−iに割り当てるTCPポート番号(TcpPort)52とが設定可能である。グローバル設定ファイル26の一例を図6に示す。
【0037】
図7はスケジューラ11−iにより使用されるスケジューラ設定ファイル22(ファイル名:Scheduler.ini)のデータフォーマットを示す。図7において、斜体文字の部分はユーザの入力操作により設定可能な箇所である。スケジューラ設定ファイル22には、運用ログに書き込むべきログ事象(スナップ内容)を指定するためのログ書き込みレベル(LogLevel)71と、運用ログへのデータダンプの書き込み方法を示す書き込み制御値(LogData)72とが設定可能である。
【0038】
各ログ事象にはその重要度に応じてレベル(0〜4294967295)が予め設定されている。ここでは、重要度が高いログ事象ほど、高レベルとなっており、スケジューラ設定ファイル22に設定されたログ書き込みレベル71以上のレベルのログ事象だけが運用ログへの書き込みの対象となる。ログ書き込みレベル71が0の場合は全てのログ事象が書き込まれる。ログ書き込みレベル71は省略可能であり、省略時は0として扱われる。書き込み制御値72には0〜2のいずれかが適用可能であり、それぞれ次の書き込み方法
0:データダンプは書き込まない
1:全データ書き込む
2:データ長が所定バイト(例えば512バイト)より大きい場合は最初と最後のそれぞれ所定バイトの半分(256バイト)のみを書き込む
を定義する。書き込み制御値72は省略可能であり、省略時は1として扱われる。スケジューラ設定ファイル22の一例を図8に示す。
【0039】
図9はスケジューラ11−iにより使用されるシナリオファイル23(ファイル名:scenario.csv)の1レコードのデータフォーマットを示す。シナリオファイル23は少なくとも1つのレコードを有する。このシナリオファイル23中のレコードには、桁#1(A)〜#9(I)の各項目が設定可能である。具体的には、シナリオファイル23中のレコードには、スケジューラ11−iにおけるイベント処理のトリガとなるトリガ情報として、先頭桁から順に、受信イベントID、受信サブイベントID、送信元アプリケーションID、送信元アプリケーションマシンアドレス、送信イベントID、送信サブイベントID、送信先アプリケーションID、送信先アプリケーションマシンアドレス及び起動アプリケーション(起動アプリケーションの実行ファイル名)がそれぞれユーザの入力操作により設定可能である。本実施形態においてシナリオファイル23はCSV(Comma Separated Value)ファイル形式であり、桁と桁との間はカンマで区切られる。
【0040】
シナリオファイル23中のレコードの桁#1には、スケジューラ11−iのイベント処理のトリガとなる受信イベントID(識別子)が設定される。設定可能な受信イベントID値の範囲は0〜4294967295とする。スケジューラ11−iは、受信したイベントのイベントID及びサブイベントIDが、それぞれ上記桁#1の設定値及び次に述べる桁#2の設定値と一致した場合、対応するレコードを処理対象と見なす。シナリオファイル23内に、同じ受信イベントに対する指示が複数レコード存在する場合、スケジューラ11−iは、当該複数のレコードを順次処理する。シナリオファイル23中のレコードの桁#2には、スケジューラ11−iのイベント処理のトリガとなる受信サブイベントIDが設定される。
【0041】
シナリオファイル23中のレコードの桁#3には、イベント送信元のアプリケーションIDが設定される。この桁#3の項目は省略可能である。スケジューラ11−iは、桁#3の項目が設定されている場合、上記受信イベントID及び受信サブイベントIDが桁#1及び#2の設定値と一致し、且つイベントを送信したアプリケーション(送信元タスク)のアプリケーションID(送信元アプリケーションID)が桁3の設定値と一致した場合のみ、対応するレコードを処理対象と見なす。もし、桁#3の項目の設定が省略されている場合、スケジューラ11−iは受信イベントID及び受信サブイベントIDが桁#1及び#2の設定値と一致していれば送信元のタスクに拘わらずに、対応するレコードを処理対象とする。
【0042】
シナリオファイル23中のレコードの桁#4には、イベント送信元タスクが、スケジューラ11−iが動作するマシン(PC)とは別のマシン上に存在する場合、当該別のマシンのIPアドレス、またはIPアドレスに名前解決可能なマシン名が、送信元アプリケーションマシンアドレスとして設定される。この桁#4の項目は省略可能である。この桁#4の項目の設定がない場合、スケジューラ11−iは、イベント送信元タスクが当該スケジューラ11−iと同じマシン上にあるものと見なす。
【0043】
シナリオファイル23中のレコードの桁#5には、送信イベントIDが設定される。この桁#5の項目が設定されている場合、スケジューラ11−iは、受信したイベントIDの代わりに、当該桁#5に設定されているイベントIDを送信先に通知する。この桁#5の項目は省略可能であり、当該桁#5の項目の設定がない場合、スケジューラ11−iは受信イベントIDをそのまま送信先に通知する。
【0044】
シナリオファイル23中のレコードの桁#6には、送信サブイベントIDが設定される。この桁#6の項目が設定されている場合、スケジューラ11−iは、受信したサブイベントIDの代わりに、当該桁#6に設定されているサブイベントIDを送信先に通知する。この桁#6の項目は省略可能であり、当該桁#6の項目の設定がない場合、スケジューラ11−iは受信サブイベントIDをそのまま送信先に通知する。
【0045】
シナリオファイル23中のレコードの桁#7には、イベント送信先となるアプリケーション(タスク)のアプリケーションIDが送信先アプリケーションIDとして設定される。この桁#7の項目は省略可能である。スケジューラ11−iは、桁#7の項目の設定がない場合、あるいは当該桁#7に設定されているアプリケーションIDで指定されるタスクが存在しない(スケジューラ11−iと接続されていない)場合、受信イベントを送信しない。
【0046】
シナリオファイル23中のレコードの桁#8には、イベント送信先タスクが、スケジューラ11−iが動作するマシン(PC)とは別のマシン上に存在する場合、当該別のマシンのIPアドレス、またはIPアドレスに名前解決可能なマシン名が、送信先アプリケーションマシンアドレスとして設定される。この桁#8の項目は省略可能であり、当該桁#8の項目の設定がない場合、スケジューラ11−iは、イベント送信先タスクが当該スケジューラ11−iと同じマシン上にあるものと見なす。
【0047】
シナリオファイル23中のレコードの桁#9には、イベント受信によって所望のアプリケーション(タスク)を起動したい場合に、そのアプリケーション(タスク)を指定する起動アプリケーション(タスク)情報を設定(記述)することが可能である。起動アプリケーション(タスク)情報には、起動すべきタスクの例えば実行ファイル名が用いられる。この桁#9の項目が設定されている場合、スケジューラ11−iは、桁#5乃至#8の各項目、即ち送信イベントID、送信サブイベントID、送信先アプリケーションID及び送信先アプリケーションマシンアドレスの各項目を無視する。
【0048】
スケジューラ11−iが特定のアプリケーション(タスク)を起動するのに用いられるコマンドライン(命令入力行)は、例えば
“桁#9の項目の設定値(実行ファイル名) スケジューラ名
イベントID サブイベントID イベントデータトークン”
のような形式で表される。上記コマンドライン中のイベントデータトークンは、当該コマンドラインに付される一種のラベル(名前)であり、桁#9の項目の設定値(実行ファイル名)で指定されるアプリケーションを起動するときに必要な引数として用いられる。つまり、桁#9の項目の設定値で指定されるアプリケーション(タスク)は、引数として渡されるイベントデータトークンをスケジューラAPI13(中の関数)に渡すことにより、スケジューラ11−iで受信されたイベントデータを当該スケジューラAPI13を介して取得することができる。なお、コマンドラインにユーザ指定の引数を含めたい場合、当該引数は桁#9の項目中で実行ファイル名の後ろに記述される。例えば、実行ファイル名が“a.exe”で、ユーザ指定の引数が“1 2”の場合、桁#9の項目には“a.exe 1 2”を設定すればよい。実行ファイル名にはパスを含めることが可能である。
【0049】
シナリオファイル23の一例を図10に示す。図10の例では、シナリオファイル23は7つのレコード231〜237から構成される。レコード231〜235は、桁#4〜#6,#8,#9の項目が設定されていないレコードの例である。レコード236は、受信したイベントID及びサブイベントIDの代わりに、#5,#6に設定されているイベントID=202,サブイベントID=1を送信先に通知することを指示するレコードの例である。レコード237は、桁#9の項目により実行ファイル名が“notepad.exe”のアプリケーションの起動が指定されているレコードの例である。
【0050】
図11はスケジューラ11−iにより使用される共有変数定義ファイル24(ファイル名:variable.csv)の1レコードのデータフォーマットを示す。共有変数定義ファイル24は少なくとも1つのレコードを有する。共有変数定義ファイル24中のレコードには、桁#1(A)〜#4(D)の各項目がユーザの入力操作により設定可能である。本実施形態において共有変数定義ファイル24はCSVファイル形式であり、桁と桁との間はカンマで区切られる。
【0051】
共有変数定義ファイル24中のレコードの桁#1には、作成する変数の名称(変数名)が設定される。ここで、変数名として使用できる文字とサイズ(変数名長)については制約があるが、本実施形態とは直接関係しないため説明を省略する。
【0052】
共有変数定義ファイル24中のレコードの桁#2には、作成する変数の型が設定される。変数型は“DWORD”“ASCII”“BIN”の3種類であり、“DWORD”は32ビット整数値を、“ASCII”は文字列を、“BIN”は任意のバイナリデータを、それぞれ示す。この桁#2の項目は省略可能であり、当該桁#2の項目の設定がない場合、変数型は“DWORD”であると見なされる。
【0053】
共有変数定義ファイル24中のレコードの桁#3には、2以上の値が設定される。この桁#3の項目への2以上の値の設定により、配列型の変数(配列数)を作成することが可能である。タスクが配列の各要素にアクセスするにはインデックス(0〜)を使用する。共有変数定義ファイル24において、桁#3の項目は省略可能である。この桁#3の項目の設定がない場合、配列数=1と見なされ、桁#1に設定されている変数名で指定される変数が配列型の変数でないとして扱われる。
【0054】
共有変数定義ファイル24中のレコードの桁#4には変数の初期値が設定される。変数は、この桁#4に設定された値で初期化される。桁#4の項目は省略可能である。この桁#4の項目の設定がない場合、変数は変数型に基づいて次のように初期化される。即ち、“DWORD”の場合は“0”に、“ASCII”の場合は“空”(””)に、“BIN”の場合は“空”(サイズ=0)に初期化される。ここでは、文字列型変数(“ASCII”)の初期化には、初期値を””で囲む必要がある。また、配列型変数を初期化するには各要素をカンマで区切って設定する。この場合、桁区切りのカンマと区別するために初期値全体を””で囲む必要がある。
【0055】
共有変数定義ファイル24の一例を図12に示す。図12の例では、共有変数定義ファイル24は6つのレコード241〜246から構成される。
【0056】
図13はスケジューラ11−iにより使用されるセマフォ定義ファイル25(ファイル名:semaphore.csv)の1レコードのデータフォーマットを示す。セマフォ定義ファイル25は少なくとも1つのレコードを有する。セマフォ定義ファイル25中のレコードには、桁#1(A),#2(B)の各項目がユーザの入力操作により設定可能である。本実施形態においてセマフォ定義ファイル25はCSVファイル形式であり、桁と桁との間はカンマで区切られる。
【0057】
セマフォ定義ファイル25中のレコードの桁#1には、作成するセマフォの名称(セマフォ名)が設定される。ここで、セマフォ名として使用できる文字とサイズについては制約があるが、本実施形態とは直接関係しないため説明を省略する。
【0058】
セマフォ定義ファイル25名のレコードの桁#2には、セマフォの初期カウントが設定される。この桁#2の項目は省略可能であり、当該桁#2の項目の設定がない場合、初期カウント=1と見なされる。
【0059】
セマフォ定義ファイル25の一例を図14に示す。図14の例では、セマフォ定義ファイル25は2つのレコード251,252から構成される。
【0060】
図15はスケジューラ11−iにより使用されるアプリケーション登録ファイル21(ファイル名:application.csv)の1レコードのデータフォーマットを示す。アプリケーション登録ファイル21は少なくとも1つのレコードを有する。このアプリケーション登録ファイル21中のレコードには、桁#1(A),#2(B)の各項目がユーザの入力操作により設定可能である。本実施形態においてアプリケーション登録ファイル21はCSVファイル形式であり、桁と桁との間はカンマで区切られる。スケジューラ11−iは、アプリケーション登録ファイル21を読み込むことにより、当該スケジューラ11−iにスケジューラAPI13を介して接続されるタスクを認識する。
【0061】
アプリケーション登録ファイル21中のレコードの桁#1には、スケジューラ11−iに接続されるアプリケーション(タスク)のアプリケーションIDが設定される。この桁#2には、桁#1の項目の設定値で指定されるアプリケーションが、スケジューラ11−iが動作するマシン(PC)とは別のマシン上に存在する場合に、当該別のマシンのIPアドレス、またはIPアドレスに名前解決可能なマシン名が、マシンアドレスとして設定される。桁#2の項目は省略可能である。この桁#2の項目の設定がない場合、スケジューラ11−iは、当該スケジューラ11−iに接続されるアプリケーション(タスク)が当該スケジューラ11−iと同じマシン上にあるものと見なす。
【0062】
アプリケーション登録ファイル21の一例を図16に示す。図16の例では、アプリケーション登録ファイル21は3つのレコード211〜213から構成される。
【0063】
図17はスケジューラAPI13により使用されるクライアント設定ファイル27(ファイル名:client.ini)のデータフォーマットを示す。図17において、斜体文字の部分はユーザの入力操作により設定可能な箇所である。クライアント設定ファイル27には、図7に示したスケジューラ設定ファイル22と同様に、運用ログに書き込まれるログ事象毎のログ書き込みレベル(LogLevel=0〜4294967295)171と、運用ログへのデータダンプの書き込み方法を示す書き込み制御値(LogData=0〜2)172とが設定可能である。ログ書き込みレベル171は省略可能であり、省略時は0として扱われる。クライアント設定ファイル27には更に、スケジューラAPI13がネットワーク上の別のマシン(PC)上で動作するスケジューラと接続する必要がある場合に、そのスケジューラと接続するためのスケジューラ接続情報173が設定される。スケジューラ接続情報173は、接続の対象となるスケジューラを示すスケジューラ名、当該スケジューラが動作するマシンのマシンアドレス、及び当該スケジューラに割り当てるTCPポート番号が設定される。ここで、マシンアドレスには、IPアドレス、またはIPアドレスに名前解決可能なマシン名を用いる必要がある。クライアント設定ファイル27の一例を図18に示す。
【0064】
次に、本発明の一実施形態における、主としてスケジューラサービス12及びスケジューラ11−1の動作について、図2のスケジューラ起動説明図、及び図19乃至図22のフローチャートを適宜参照して説明する。
【0065】
まず、図4のPCにおいて汎用OS10が立ち上がると、図2のステップS1に示したように、スケジューラサービス12が起動される。するとスケジューラサービス12は、ディスク装置43に保存されている、図5のフォーマットのグローバル設定ファイル26を主メモリ42に読み込む(ステップS11)。そしてスケジューラサービス12は、グローバル設定ファイル26に設定されているスケジューラリスト(SchedulerList)51に従い、管理すべきスケジューラ11−iを認識する(ステップS12)。ここでは、スケジューラ11−1〜11−nが認識されたものとする。この場合、スケジューラサービス12は、認識したスケジューラ11−1〜11−n毎に、グローバル設定ファイル26に設定されているTCPポート番号(TcpPort)52を割り当てて、当該スケジューラ11−1〜11−nを図2のステップS2−1〜S2−nに示したように起動する(ステップS13)。
【0066】
以下、スケジューラ11−1〜11−nの動作について、スケジューラ11−1を例に説明する。スケジューラ11−1はスケジューラサービス12により起動されると、当該スケジューラ11−1のスケジューラ名に対応付けてディスク装置43に保存されている、当該スケジューラ11−1に固有の、アプリケーション登録ファイル21、スケジューラ設定ファイル22、シナリオファイル23、共有変数定義ファイル24及びセマフォ定義ファイル25の各設定ファイルの内容を主メモリ42に読み込む(ステップS21)。
【0067】
次にスケジューラ11−1は、主メモリ42に読み込んだアプリケーション登録ファイル21(の内容)に従って、当該スケジューラ11−1に接続されるタスク(アプリケーション)を認識する(ステップS22)。またスケジューラ11−1は、共有変数定義ファイル24(の内容)に従い、共有変数の領域を主メモリ42上に確保する(ステップS23)。この領域は、スケジューラ11−1に接続されるタスクに開放される。またスケジューラ11−1は、セマフォ定義ファイル2(の内容)5に従い、当該ファイル25で指定されたセマフォ名のセマフォを主メモリ42上に全て作成する(ステップS24)。このとき作成されたセマフォのカウント値は、セマフォ定義ファイル25で指定された初期カウント値に初期設定される。
【0068】
作成されたセマフォは、スケジューラAPI13によるタスク間通信の排他制御に用いられる。セマフォのカウント値は、タスクにより使用される都度1だけデクリメントされ、使用が終了する都度1だけインクリメントされる。セマフォのカウント値が初期値に一致する状態、つまりセマフォが使用されていない状態では、タスクは当該セマフォのセマフォ名をスケジューラAPI13に対して指定するだけで、当該スケジューラAPI13の排他制御を受けて、任意のリソースを使用できる。もし、セマフォの初期カウント値がN(Nは1以上の整数)である場合、当該セマフォの使用権を獲得したタスクは、最大N個のリソースを並行して使用できる。
【0069】
スケジューラ11−1は、ステップS22乃至S24を実行すると、ステップS22で認識したタスクから(スケジューラAPI13を介して)接続されるのを待つ状態(タスク接続待ち状態)に遷移する(ステップS25)。この状態で、スケジューラ11−1はタスクから接続されると(ステップS26)、シナリオファイル23に従ってイベントの送受信処理(ステップS27)を次のように行う。
【0070】
まずスケジューラ11−1が、タスクとの接続状態において、当該タスクからスケジューラAPI13を介してイベントを受信したものとする(ステップS31)。ここで、イベントはイベントID及びサブイベントIDで識別され、タスクはアプリケーションIDで識別される。
【0071】
スケジューラ11−1は、タスクからイベントを受信するとシナリオファイル23を参照し、当該受信したイベントのイベントID及びサブイベントIDに一致する受信イベントID及び受信サブイベントIDが設定されているレコード(以下、目的レコードと称する)がシナリオファイル23中に存在するか否かを調べる(ステップS32)。もし、目的レコードが存在しないならば、つまり目的レコードが見つからなかったならば、スケジューラ11−1は受信したイベントはイベント送受信処理の対象外であるとして、当該イベントの受信前の状態に戻る。
【0072】
これに対し、目的レコードが存在するならば、つまり目的レコードが見つかったならば、スケジューラ11−1は当該レコード中に起動アプリケーションの設定がされているか否かを調べる(ステップS33)。もし、起動アプリケーションの設定がされているならば、スケジューラ11−1は目的レコードの他の設定項目(送信イベントID、送信サブイベントID、送信先アプリケーションID及び送信先アプリケーションマシンアドレスの各設定項目)の内容に無関係に、指定のアプリケーションをスケジューラAPI13を介して新たに起動する(ステップS34)。そしてスケジューラ11−1は、受信したイベントのイベントID及びサブイベントIDに一致する受信イベントID及び受信サブイベントIDが設定されている他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。
【0073】
一方、目的レコード中に起動アプリケーションの設定がされていない場合(ステップS33)、スケジューラ11−1は当該レコード中に送信元アプリケーションIDが設定されているか否かを調べる(ステップS35)。もし、送信元アプリケーションIDが設定されているならば、スケジューラ11−1は、当該設定されている送信元アプリケーションIDに、受信したイベントを送信したタスクのアプリケーションIDが一致しているか否かを調べる(ステップS36)。もし、一致しないならば、スケジューラ11−1は、受信したイベントの送信条件の不成立を判断して、目的レコードを処理対象外とする。この場合、スケジューラ11−1は、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。
【0074】
これに対し、目的レコードに設定されている送信元アプリケーションIDに、受信したイベントを送信したタスクのアプリケーションIDが一致しているならば(ステップS36)、スケジューラ11−1はステップS37に進む。またスケジューラ11−1は、目的レコードに送信元アプリケーションIDが設定されていない場合にも(ステップS35)、ステップS37に進む。
【0075】
ステップS37において、スケジューラ11−1は、目的レコードに送信元アプリケーションマシンアドレスが設定されているか否かを調べる。もし、設定されていないならば、スケジューラ11−1は、受信したイベントを送信したタスク(イベント送信元タスク)が、自身と同一マシン上に存在すると判断する(ステップS38)。一方、目的レコードに送信元アプリケーションマシンアドレスが設定されているならば(ステップS37)、スケジューラ11−1はイベント送信元タスクが、自身が動作するマシンとは別の、当該マシンアドレス(IPアドレスまたは名前解決可能なマシン名)で指定されるマシン上に存在するものと判断する。
【0076】
次にスケジューラ11−1は、目的レコード中に送信先アプリケーションIDが設定されているか否かを調べる(ステップS39)。もし、送信先アプリケーションIDが設定されていないならば、スケジューラ11−1は、受信したイベントの送信条件の不成立を判断して、現在の目的レコードを処理対象外とする。この場合、スケジューラ11−1は、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。これに対し、目的レコード中に送信先アプリケーションIDが設定されているならば(ステップS39)、スケジューラ11−1は、目的レコードに設定されている送信先アプリケーションIDを持つタスクが存在する(自身と接続されている)か否かを調べる(ステップS40)。
【0077】
もし、該当するタスクが存在しないならば(ステップS40)、スケジューラ11−1は受信したイベントの送信条件の不成立を判断して現在の目的レコードを処理対象外とし、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。これに対し、該当するタスクが存在するならば(ステップS40)、スケジューラ11−1は受信したイベントの送信条件の成立を判断して目的レコードに送信先アプリケーションマシンアドレスが設定されているか否かを調べる(ステップS41)。もし、設定されていならば、スケジューラ11−1は、受信したイベントの送信先となるタスク(イベント送信先タスク)が、自身と同一マシン上に存在するものと判断する(ステップS42)。一方、目的レコードに送信先アプリケーションマシンアドレスが設定されているならば(ステップS41)、スケジューラ11−1はイベント送信先タスクが、自身が動作するマシンとは別の、当該マシンアドレス(IPアドレスまたは名前解決可能なマシン名)で指定されるマシン上に存在するものと判断する。
【0078】
次にスケジューラ11−1は、目的レコード中に送信イベントID及び送信サブイベントIDが設定されているか否かを調べる(ステップS43)。もし、目的レコード中に送信イベントID及び送信サブイベントIDが設定されているならば、スケジューラ11−1は、受信したイベントの送信時に、当該イベントのイベントID及びサブイベントIDを、当該レコード中の送信イベントID及び送信サブイベントIDに置き換えて、その置き換え後のイベントを送信先アプリケーション(タスク)に送信する(ステップS44)。つまりスケジューラ11−1は、受信イベントのイベントID及びサブイベントIDに代えて、目的レコード中の送信イベントID及び送信サブイベントIDを送信先に通知する。これにより、シナリオファイル23内に、同一の受信イベントID/サブイベントIDを含む複数のレコードを用意して、その複数のレコードに、それぞれ異なる送信イベントID及び送信サブイベントID並びに送信先アプリケーションIDを設定しておくならば、あるタスクからスケジューラ11−1に対し、上記受信イベントID/サブイベントIDに一致するイベントID/サブイベントIDのイベントが送信された場合に、当該イベントを、複数のタスクに対してそれぞれ異なるイベントID/サブイベントIDで送信できる。
【0079】
一方、目的レコード中に送信イベントID及び送信サブイベントIDが設定されていないならば、スケジューラ11−1は、受信イベントのイベントID及びサブイベントIDをそのまま用いて、当該イベントを送信先アプリケーション(タスク)に通知する(ステップS45)。つまりスケジューラ11−1は、受信イベントのイベントID及びサブイベントIDをそのまま送信先に通知する。
【0080】
その後、スケジューラ11−1は、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。そして、受信したイベントのイベントID及びサブイベントIDに一致する受信イベントID及び受信サブイベントIDが設定されている全ての目的レコードを処理すると、スケジューラ11−1は当該イベントの受信前の状態に戻る。
【0081】
次に、図1に示したタスク間通信システムのソフトウェア構成の具体例について、半導体製造装置に適用されるソフトウェア構成を例に説明する。図23は半導体製造装置に適用されるタスク間通信システムのソフトウェア構成を示すブロック図である。同図に示すように、この半導体製造装置上では、スケジューラ110と、タスク201,202,203とが動作する。
【0082】
タスク201は、半導体製造装置の例えば前面のパネルの表示を制御するGUI(Graphical User Interface)を実現するアプリケーションである。以下、タスク201をGUIタスク201と称する。
【0083】
タスク202は、半導体製造装置内部の機器を制御するコントロール機構(CONTROL)を実現するアプリケーションである。以下、タスク202を機器制御タスク(CONTROLタスク)201と称する。タスク203は、半導体製造装置外部と通信する通信機構(COMMUNICATION)を実現するアプリケーションである。以下、タスク203を外部通信用タスク(COMMUNICATIONタスク)203と称する。
【0084】
図24は、図23のソフトウェア構成により、半導体装置前面のパネルから当該装置の状態を、例えばOFFLINE状態(つまり外部との通信を行わない状態)から、ONLINE状態(つまり外部と通信を行う状態)に変化させるのに必要なシナリオファイル23の一例を示す。また、図24の構成のシナリオファイル23を適用すると共に、GUIによりONLINEへ変更し、イベントID=100(サブイベントID=1)のイベントがGUIタスク201からスケジューラ110に対して送信される場合の処理手順を、図25のフローチャートに示す。なお、図25のフローチャート中の“X,Y”の表現は、イベントID=X、サブイベントID=Yを表す。
【0085】
以下、図25のフローチャートに従う処理手順について、図26に示すスケジューラ110と各タスク201〜203との間の通信手順を説明するための図を併用して説明する。
【0086】
まず、GUIタスク201からスケジューラ110に対し、ONLINE変更を要求するイベントID=100、サブイベントID=1のイベント(ONLINE変更要求100,1)が送信されると、スケジューラ110は当該イベント、つまり「ONLINE変更要求100,1」を受信する(図25ステップS51、図26ステップS61)。するとスケジューラ110から外部通信用タスク(COMMUNICATIONタスク)203に対して「ONLINE問い合わせ200,1」が送信される(図25ステップS52、図26ステップS62)。そしてスケジューラ110は、「ONLINE問い合わせ200,1」に対する「応答200.2」を待つ。
【0087】
この状態で、外部通信用タスク203からスケジューラ110に対して「ONLINE問い合わせ200,1」に対する「応答200.2」が送信されると、スケジューラ110は当該「応答200.2」を受信する(図25ステップS53、図26ステップS63)。するとスケジューラ110は、機器制御タスク(CONTROLタスク)202に対して半導体製造装置の状態を問い合わせるための「状態問い合わせ300.1」を送信する(図25ステップS54、図26ステップS64)。そしてスケジューラ110は、「状態問い合わせ300.1」に対する「応答300.2」を待つ。
【0088】
この状態で、機器制御タスク202からスケジューラ110に対して「状態問い合わせ300.1」に対する「応答300.2」が送信されると、スケジューラ110は当該「応答300.2」を受信する(図25ステップS55、図26ステップS65)。するとスケジューラ110は、外部通信用タスク203に対して半導体製造装置の状態を通知するための「装置状態報告400.1」を送信する(図25ステップS56、図26ステップS66)。そしてスケジューラ110は、「装置状態報告400.1」に対する「応答400.2」を待つ。
【0089】
この状態で、外部通信用タスク203からスケジューラ110に対して「装置状態報告400.1」に対する「応答400.2」が送信されると、スケジューラ110は当該「応答400.2」を受信する(図25ステップS57、図26ステップS67)。するとスケジューラ110は、「ONLINE変更要求100,1」を発したGUIタスク201に対し、総合的な「応答100,2」を送信する(図25ステップS58、図26ステップS68)。
【0090】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【0091】
【発明の効果】
以上詳述したように本発明によれば、タスクから独立に設けられたスケジューラにより、イベント処理のトリガとなるトリガ情報が設定されたシナリオファイルに従って受信イベントを処理するようにしたので、タスク間通信を非同期で容易に行うことができ、タスクの機能追加・削除(新規タスクの追加・既存タスクの削除)が必要な場合でも、シナリオファイルを書き換えるだけで容易に対応できる。また本発明によれば、シナリオファイルの中から検出されたトリガ情報に送信イベント識別子が設定されている場合には、当該トリガ情報に設定されている送信先アプリケーション識別子の示すタスクに受信イベントデータを送信する際に、当該イベントデータのイベント識別子を当該送信イベント識別子に置き換えるようにしたので、タスクの追加・削除が発生しても、イベントデータの受信側で当該データを適切に処理できる
【図面の簡単な説明】
【図1】本発明の一実施形態に係るタスク間通信システムのソフトウェア構成を示すブロック図。
【図2】スケジューラサービス12の起動と、それに伴うスケジューラ11−1〜11−nの起動とを説明するための図。
【図3】上記スケジューラ11−1〜11−nが存在するPC(パーソナルコンピュータ)におけるディレクトリ構成の一例を示す図。
【図4】図1の構成のソフトウェア及び各ファイルが存在するPCのハードウェア構成を示すブロック図。
【図5】グローバル設定ファイル26のデータフォーマットを示す図。
【図6】上記グローバル設定ファイル26の一例を示す図。
【図7】スケジューラ設定ファイル22のデータフォーマットを示す図。
【図8】上記スケジューラ設定ファイル22の一例を示す図。
【図9】シナリオファイル23の1レコードのデータフォーマットを示す図。
【図10】上記シナリオファイル23の一例を示す図。
【図11】共有変数定義ファイル24の1レコードのデータフォーマットを示す図。
【図12】上記共有変数定義ファイル24の一例を示す図。
【図13】セマフォ定義ファイル25の1レコードのデータフォーマットを示す図。
【図14】上記セマフォ定義ファイル25の一例を示す図。
【図15】アプリケーション登録ファイル21の1レコードのデータフォーマットを示す図。
【図16】上記アプリケーション登録ファイル21の一例を示す図。
【図17】クライアント設定ファイル27のデータフォーマットを示す図。
【図18】上記クライアント設定ファイル27の一例を示す図。
【図19】同実施形態におけるスケジューラサービス12の起動時の動作を説明するためのフローチャート。
【図20】スケジューラサービス12により起動されたスケジューラ11−1の動作を説明するためのフローチャート。
【図21】上記スケジューラ11−1のイベント送受信処理を説明するためのフローチャート。
【図22】上記スケジューラ11−1のイベント送受信処理を説明するためのフローチャート。
【図23】半導体製造装置に適用されるタスク間通信システムのソフトウェア構成を示すブロック図。
【図24】図23のソフトウェア構成により、半導体装置前面のパネルから当該装置の状態をOFFLINEからONLINEに変化させるのに必要なシナリオファイル23の一例を示す図。
【図25】図24の構成のシナリオファイル23を適用すると共に、イベントID=100(サブイベントID=1)のイベントがGUIタスク201からスケジューラ110に対して送信される場合の処理手順を示すフローチャート。
【図26】図25のフローチャートに従う処理手順が実行される際の、スケジューラ110と各タスク201〜203との間の通信手順を説明するための図。
【符号の説明】
11−1〜11−n,110…スケジューラ、12…スケジューラサービス、13…スケジューラAPI(特定アプリケーションプログラムインタフェース)、20−1〜20−3,201〜203…タスク、21…アプリケーション登録ファイル、22…スケジューラ設定ファイル、23…シナリオファイル、24…共有変数定義ファイル、25…セマフォ定義ファイル、26…グローバル設定ファイル、41…CPU、42…主メモリ、43…ディスク装置
【発明の属する技術分野】
本発明は、汎用オペレーティングシステム環境でのタスク間通信に好適なタスク間通信プログラム及びタスク間通信方法に関する。
【0002】
【従来の技術】
近年、マルチタスクオペレーティングシステム(OS)の普及に伴い、アプリケーションプログラムによって実現されるタスク間での通信を主とするタスク間制御が新たな課題となってきている。またシステム運用後、当該システムで実現する機能の変更・拡張のために、新規タスクの追加、既存タスクの削除が発生する可能性もある。
【0003】
そこで、タスクの追加・削除に容易に対処し得るタスク間通信を実現するために、タスク間の通信を制御するシステム制御タスクを用意し、当該システム制御タスクを除く一般のタスク(以下、単にタスクと称する場合には、システム制御タスクを除く一般のタスクを表すものとする)は、当該システム制御タスクとの間でのみ通信を行い、他のタスクへの通信は当該システム制御タスクが代わって行うタスク処理システムが提案されている(例えば、特許文献1参照)。
【0004】
特許文献1に記載されたタスク処理システム(タスク間通信システム)では、システム制御タスクはシステム制御テーブルを有している。このシステム制御テーブルには、各タスクから送信されるメッセージの種類(メッセージ番号、つまりメッセージ識別子)に対応付けて当該メッセージの出力先タスクを指定する情報が設定されている。システム制御タスクは、タスクから受信したメッセージのメッセージ種類によりシステム制御テーブルを参照し、当該メッセージ種類に対応して設定されている出力先の情報の指定するタスクに対し、当該受信メッセージに対応する出力メッセージを送信する。このようなシステムでは、システム制御テーブル上で、メッセージ種類と出力先との関係を追加・変更するだけで、タスクの追加・削除に容易に対処できる。
【0005】
【特許文献1】
特開平6−95896号公報(段落0008〜0014,0022、図4、図8)
【0006】
【発明が解決しようとする課題】
上記したように、システム制御テーブルに従ってシステム制御タスクがタスク間の通信を制御する従来技術では、システム制御テーブル上で、メッセージ種類と出力先との関係を追加・変更することにより、タスクの追加・削除に対処できる。つまり、タスクの追加・削除が発生しても、システム制御テーブルを操作するだけで、あるタスクからのメッセージ(イベントデータ)を目的のタスクに送信できる。
【0007】
しかし、上記従来技術では、あるタスクからのメッセージ(イベントデータ)を、複数のタスクに対し、当該複数のタスクがそれぞれ理解可能なメッセージ種類(イベント識別子)のメッセージ(イベントデータ)として送信することは考慮されていない。このため従来技術では、あるタスクからの例えば第1の種類(イベント識別子)のメッセージ(イベントデータ)を、システム制御タスクが他の複数のタスクに送信したとしても、送信先のタスクの中に新規タスクが存在し、且つ当該新規タスクが第2の種類(イベント識別子)のメッセージ(イベントデータ)しか処理できない場合には、当該新規タスクではメッセージを適切に処理できない。また、このような新規タスクに対して、複数のタスクからのメッセージ(イベントデータ)をシステム制御タスクが送信した場合、当該メッセージ(イベントデータ)の種類(イベント識別子)によっては、適切に処理できないこともある。
【0008】
本発明は上記事情を考慮してなされたものでその目的は、タスクの追加・削除に容易に対処でき、しかもイベントデータの受信側で当該データを適切に処理できるタスク間通信プログラム及びタスク間通信方法を提供することにある。
【0009】
【課題を解決するための手段】
本発明の1つの観点によれば、汎用オペレーティングシステム(OS)が動作する計算機を、タスクとの間でイベントデータによる通信が可能な少なくとも1つのスケジューラとして機能させるためのタスク間通信プログラムが提供される。上記スケジューラは、タスクからのイベントデータの受信時には、受信イベント識別子が設定されると共に当該受信イベント識別子に対応付けて送信イベント識別子及びイベントデータの送信先となるタスクを指定する送信先アプリケーション識別子が設定可能な、イベント処理のトリガとなるトリガ情報が記録されたシナリオファイルを参照して、受信イベントデータのイベント識別子に一致する受信イベント識別子を含むトリガ情報を全て検出する手段と、この検出手段によって検出されたトリガ情報をもとに、当該トリガ情報に少なくとも上記送信先アプリケーション識別子が設定されていることを受信イベントデータの送信条件として、当該条件の成立または不成立を判定する手段と、この判定手段により送信条件成立が判定された場合に、上記検出手段によって検出されたトリガ情報に設定されている送信先アプリケーション識別子の示すタスクへ上記受信イベントデータを送信し、その際に当該イベントデータのイベント識別子を、当該トリガ情報に送信イベント識別子が設定されているか否かに応じて当該送信イベント識別子に置き換える送信手段とを備えている。
【0010】
このような構成のタスク間通信プログラムによれば、汎用オペレーティングシステムの起動時に自動的に起動されるスケジューラにより、イベント処理のトリガとなるトリガ情報が設定されたシナリオファイルに従って受信イベントが処理されるため、タスク間通信を非同期で容易に行うことが可能となる。また、タスクの機能追加・削除(新規タスクの追加・既存タスクの削除)が必要な場合でも、シナリオファイルを書き換えるだけで容易に対応可能である。特に、シナリオファイルの中から検出されたトリガ情報に送信イベント識別子が設定されている場合には、当該トリガ情報に設定されている送信先アプリケーション識別子の示すタスクへ受信イベントデータを送信する際に、当該イベントデータのイベント識別子が当該送信イベント識別子に置き換えられる。このため、イベントデータの送信側のタスク(特に新規タスク)は、送信先のタスクだけでなく、当該送信先タスクが処理可能なイベント識別子をも意識する必要がない。また、送信先(受信側)のタスク(特に新規タスク)には、シナリオファイルに従って、スケジューラから当該タスクで処理可能なイベント識別子のイベントデータを送ることが可能なため、当該イベントデータを適切に処理することが可能となる。
【0011】
また、上記トリガ情報に、受信イベント識別子に対応付けて起動すべきタスクを指定する起動タスク情報が設定可能な構成とし、上記検出されたトリガ情報に起動タスク情報が設定されている場合には、当該トリガ情報に送信先アプリケーション識別子が設定されているか否かと無関係に、送信条件不成立として処理し、当該起動タスク情報で指定されるタスクを起動するとよい。このようにすると、シナリオファイルの設定により、所望のタスクからのイベントデータをトリガとして所望の1つまたは複数のタスクを起動することができる。
【0012】
また、上記タスク間通信プログラムにより、上記計算機を、上記汎用OSの起動時に、上記少なくとも1つのスケジューラを指定するリスト(スケジューラリスト)が設定されたグローバル設定ファイルに従って当該スケジューラを起動するスケジューラサービス手段として更に機能させる構成とするとよい。このようにすると、汎用OSの起動時に少なくとも1つのスケジューラ(つまり1つまたは複数のスケジューラ)を自動的に起動できる。
【0013】
また、上記タスク間通信プログラムにより、上記計算機を、タスクからの要求により上記スケジューラと汎用通信プロトコルにより接続する特定アプリケーションプログラムインタフェースとして更に機能させる構成とするとよい。このようにすると、ユーザはタスクの機能追加・削除等が必要な場合、汎用通信プロトコルの知識等がなくても容易に対応可能である。またタスクの改造期間も短縮できる。特に、上記特定アプリケーションプログラムインタフェースが、タスクからの要求に従ってスケジューラとの接続のための汎用のオブジェクト間通信インタフェースを当該タスクに提供し、当該タスクにより生成される汎用の通信オブジェクトに応じて上記スケジューラとの接続または上記スケジューラからの切断を行う構成とするならば、タスクは、汎用オブジェクト間通信インタフェースを介して共通の仕様の上で通信を行うことが可能である。特に、種類の異なる複数の汎用のオブジェクト間通信インタフェースを提供するならば、タスクの開発環境や開発言語に依存せずにスケジューラを利用可能となる。
【0014】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るタスク間通信システムのソフトウェア構成を示すブロック図である。図1のシステムは、汎用のマルチタスクオペレーティングシステム(以下、汎用OSと称する)が動作するパーソナルコンピュータ(以下、PCと称する)上に実現されるものとする。
【0015】
図1において、スケジューラ11−1(#1),11−2(#2),…11−n(#n)は、複数のタスクと通信を行うスケジューラ部を構成する。この通信には、例えばTCP(Transmission Control Protocol)/IP(Internet Protocol)と呼ばれる汎用通信プロトコルが使用される。スケジューラ11−i(i=1〜n)は後述するスケジューラサービス12により起動され、タスクの接続待ち状態に遷移する。スケジューラ11−iは当該スケジューラ11−iと接続されたたとえば複数のタスク(アプリケーションプログラム)との間で、後述する各種の設定ファイル(アプリケーション登録ファイル21、スケジューラ設定ファイル22、シナリオファイル23、共有変数定義ファイル24及びセマフォ定義ファイル25)を利用して非同期に通信する。ここで、TCP/IPを用いたスケジューラ11−iとタスクとの間の通信は、スケジューラ側をサーバモード、タスク側をクライアントモードで使用する、クライアント/サーバ接続形態で行われる。
【0016】
図1では、スケジューラ11−1(#1)の通信相手となるタスクがタスク20−1(#1)〜20−3(#3)であることが示されている。タスク20−j(j=1〜3)は、スケジューラ11−1と同一PC上に存在しても、当該PCとネットワークを介して接続された他のPC上に存在しても、スケジューラ11−1と通信(送受信)可能である。
【0017】
スケジューラサービス12は、当該スケジューラサービス12が存在するPCへのインストール時に当該PC上で動作する汎用OS10(図2参照)のサービス機能に登録される。このサービス機能とは、当該サービス機能に登録されたソフトウェアを、汎用OS10の立ち上がり時に自動的に起動する機能である。したがって、スケジューラサービス12が汎用OS10のサービス機能に登録されることにより、当該スケジューラサービス12は、PC(上の汎用OS10)の次回起動時からは、自動的に起動される。
【0018】
スケジューラサービス12は起動後、ユーザの入力操作により設定された、少なくとも1つのスケジューラを(スケジューラ名により)指定するスケジューラリスト(スケジューラ名リスト)を含むグローバル設定ファイル26に従い、当該スケジューラリストで指定される全てのスケジューラ(図1ではスケジューラ11−1〜11−n)を認識し、当該スケジューラの起動/停止/リセットを管理する機能を有する。スケジューラサービス12はまた、汎用OS10のシステムツールであるイベントビューアへのログを出力する機能を有する。
【0019】
図2は、スケジューラサービス12の起動と、それに伴うスケジューラ11−1〜11−nの起動とを説明するための図である。図2に示すように、スケジューラサービス12は、汎用OS10の立ち上がり時に起動される(ステップS1)。スケジューラサービス12が起動すると、当該スケジューラサービス12によりスケジューラ11−1〜11−nが起動される(ステップS2−1〜2−n)。
【0020】
スケジューラAPI(Application Program Interface:アプリケーションプログラムインタフェース)13は、スケジューラ11−i(図1ではスケジューラ11−1)を使用してタスク間通信を実現するためのインタフェースである。スケジューラAPI13は、タスクがソケット等を直接操作することなくスケジューラ11−iの機能を容易に使用可能とするために用意される。
【0021】
そのため、スケジューラAPI13は、DLL(Dynamic Link Library)として作成され、スケジューラ11−iとの接続のための汎用のオブジェクト間通信インタフェースをタスクに提供する。ここでは特に、タスクの開発環境や開発言語に依存せずにスケジューラ11−iの機能が利用できるように、複数種類、例えば2種類の汎用オブジェクト間通信インタフェースがタスクに提供される。汎用のオブジェクト間通信インタフェースとしては、例えば、米国マイクロソフト社が策定したオブジェクト間通信規約に従うC++言語向けCOM(Component Object Model)オブジェクト、或いは当該マイクロソフト社が開発したVB(Visual Basic)言語向けActiveXオブジェクトが知られている。タスクは汎用オブジェクト間通信インタフェースに適合する複数のスケジューラオブジェクト(通信オブジェクト)を生成することにより同時に複数のスケジューラ11−iと通信することができる。つまりタスクは、汎用オブジェクト間通信インタフェースを介して共通の仕様の上で通信を行うことが可能である。このため、タスクの機能追加・削除(新規タスクの追加・既存タスクの削除)が必要となった場合でも、汎用オブジェクト間通信インタフェースの仕様を理解すれば、後述するデータフォーマットのアプリケーション登録ファイル21(図15参照)を変更するだけで、容易に対応可能となる。ここではユーザ(タスクの開発者)は、TCP/IPの知識等は不要である。またタスクの改造期間の短縮を図ることも可能である。
【0022】
タスクは、上記したようにクライアントとして位置付けられる。タスクは、スケジューラAPI13が用意するプロパティに当該タスクのアプリケーションIDを設定することで、当該タスクをスケジューラ11−iに認識させる。
【0023】
スケジューラAPI13は以下の機能を有する。
【0024】
a)起動時にスケジューラ11−iの制御のもとで、シナリオファイル23により指定される、自身に接続されるクライアント(タスク)の設定を行う機能。
【0025】
b)スケジューラ11−iとの接続と切断をスケジューラオブジェクトにより行う機能、当該スケジューラ11−iと通信するタスクのアプリケーションIDの認証処理を行う機能。ここでは、TCP/IPの直接の操作をタスクが考慮する必要はない。また、タスク間通信にTCP/IPプロトコル(汎用通信プロトコル)を適用することにより、送信エラーやリトライをタスクレベルで考慮する必要がない。その理由は、TCP/IPプロトコルを搭載しているPCが自動で制御を行うためである。
【0026】
c)イベント(イベントデータ)の送受信を行う機能。このイベントの送受信により、イベントデータオブジェクト(スケジューラオブジェクト)を介してタスクとの通信が行われる。タスクがコールバックを設定することによりイベント受信時に非同期通知イベントを発生させることが可能である。
【0027】
d)スケジューラ11−iが生成した共有変数を参照または更新する機能(共有変数アクセス機能)
e)スケジューラ11−iにより生成されたセマフォを使用してタスク間の排他制御(セマフォ操作)を行う機能。
【0028】
f)シナリオファイル23の設定に従うスケジューラ11−iの制御にもとで他のタスクを起動させる機能。この機能により起動されたタスクは自身が起動されるトリガとなったイベントデータを取得する手段を提供する。
【0029】
g)クライアント設定ファイル27に従って、スナップ(ログ)を作成し、後述するクライアントログファイル32(図3参照)に出力する機能。
【0030】
スケジューラ11−iはスケジューラ管理ツール14により管理される。スケジューラ管理ツール14は、スケジューラ11−iの運用を支援する目的で用意されるGUI(Graphical User Interface)アプリケーションである。スケジューラ管理ツール14は、当該管理ツール14が存在するPC上のスケジューラ11−iだけでなく、当該PCとネットワーク接続される他のPC上のスケジューラも管理可能である。スケジューラ管理ツール14は、
a)スケジューラサービス12の起動と停止
b)各スケジューラ11−iの運用状態の監視
c)各スケジューラ11−iの起動と停止とリセット
d)各タスクのスケジューラ11−iとの接続状況の監視
e)各タスクのスナップレベルの設定
の各機能を有する。スケジューラ管理ツール14によるスケジューラ11−iのリセット処理は、当該スケジューラ11−iに(スケジューラAPI13を介して)接続されている全てのタスクへのリセット通知を行い、接続中のTCP/IPを切断することにより実現される。この場合、スケジューラ管理ツール14は、スケジューラ11−iにより生成されているセマフォを解放し、当該スケジューラ11−iを終了した後に、再度起動を行う。
【0031】
タスク20−jはアプリケーションプログラムであり、スケジューラAPI13を使用してスケジューラ11−i(例えばスケジューラ11−1)との接続を行う。タスク20−jは、スケジューラ11−iとの接続後、当該スケジューラ11−iを介して他のタスクとイベントの通信を行う。タスク20−jは、他のタスクとの通信終了後は切断要求を発行してスケジューラ11−iとの通信を終了する。
【0032】
図3は上記スケジューラ11−1〜11−nが存在するPCにおけるディレクトリ構成の一例を示す。図3において、ログ格納ディレクトリ30により管理されるスケジューラログファイル31−1,31−2は、例えば図1中のスケジューラ11−1,11−2で行った処理のログを書き込むのに用いられる。同様に、クライアントログファイル32は、スケジューラAPI13で行った処理のログを書き込むのに用いられる。このログファイル31−1,31−2,32等へのスナップあるいはイベントログの収集により、トラブル発生時の対応や原因究明が速やかに行える。
【0033】
図4は図1の構成のソフトウェア及び各ファイルが存在するPCのハードウェア構成を示すブロック図である。図4のPCは、CPU41、主メモリ42、ディスク装置43及びネットワークインタフェース44を含む周知のハードウェア構成を有している。CPU41、主メモリ42、ディスク装置43及びネットワークインタフェース44はバス45により相互接続されている。
【0034】
主メモリ42には、汎用OS10、スケジューラ11−1〜11−n、スケジューラサービス12、スケジューラAPI13及びタスク20−1〜20−3を含むタスク群(アプリケーション群)が、CPU41により実行可能なように、例えばディスク装置43からロードされている。スケジューラ11−1〜11−n、スケジューラサービス12及びスケジューラAPI13は、例えばCD−ROM、フレキシブルディスクまたはメモリカード等の記憶媒体により提供され、当該記憶媒体を図4のPCに設けられたCD−ROM装置、フレキシブルディスク装置、カードスロット等に装着して、当該記憶媒体から読み取ってディスク装置43に転送することにより当該ディスク装置43に記録される。また、上記スケジューラ11−1〜11−n、スケジューラサービス12及びスケジューラAPI13をネットワークを介して図1のPCに転送することも可能である。
【0035】
ディスク装置43には、アプリケーション登録ファイル21、スケジューラ設定ファイル22、シナリオファイル23、共有変数定義ファイル24、セマフォ定義ファイル25、グローバル設定ファイル26及びクライアント設定ファイル27を含むファイル群が記録されている。これらのファイル群は少なくとも1つの記憶媒体により提供され、当該記憶媒体が装着される読み取り装置を介してディスク装置43に記録(保存)される。また、上記ファイル群をユーザの入力操作で他のPC上で作成し、当該ファイル群を図1のPCにネットワークを介して転送することにより、ディスク装置43に記録することも可能である。
【0036】
図5はスケジューラサービス12により使用されるグローバル設定ファイル26(ファイル名:global.ini)のデータフォーマットを示す。図5において、斜体文字の部分はユーザの入力操作により設定可能な箇所である。グローバル設定ファイル26には、スケジューラサービス12が管理するスケジューラ11−iのスケジューラ名のリスト(SchedulerList)51と、当該リスト51中のスケジューラ名で指定されるスケジューラ11−iに割り当てるTCPポート番号(TcpPort)52とが設定可能である。グローバル設定ファイル26の一例を図6に示す。
【0037】
図7はスケジューラ11−iにより使用されるスケジューラ設定ファイル22(ファイル名:Scheduler.ini)のデータフォーマットを示す。図7において、斜体文字の部分はユーザの入力操作により設定可能な箇所である。スケジューラ設定ファイル22には、運用ログに書き込むべきログ事象(スナップ内容)を指定するためのログ書き込みレベル(LogLevel)71と、運用ログへのデータダンプの書き込み方法を示す書き込み制御値(LogData)72とが設定可能である。
【0038】
各ログ事象にはその重要度に応じてレベル(0〜4294967295)が予め設定されている。ここでは、重要度が高いログ事象ほど、高レベルとなっており、スケジューラ設定ファイル22に設定されたログ書き込みレベル71以上のレベルのログ事象だけが運用ログへの書き込みの対象となる。ログ書き込みレベル71が0の場合は全てのログ事象が書き込まれる。ログ書き込みレベル71は省略可能であり、省略時は0として扱われる。書き込み制御値72には0〜2のいずれかが適用可能であり、それぞれ次の書き込み方法
0:データダンプは書き込まない
1:全データ書き込む
2:データ長が所定バイト(例えば512バイト)より大きい場合は最初と最後のそれぞれ所定バイトの半分(256バイト)のみを書き込む
を定義する。書き込み制御値72は省略可能であり、省略時は1として扱われる。スケジューラ設定ファイル22の一例を図8に示す。
【0039】
図9はスケジューラ11−iにより使用されるシナリオファイル23(ファイル名:scenario.csv)の1レコードのデータフォーマットを示す。シナリオファイル23は少なくとも1つのレコードを有する。このシナリオファイル23中のレコードには、桁#1(A)〜#9(I)の各項目が設定可能である。具体的には、シナリオファイル23中のレコードには、スケジューラ11−iにおけるイベント処理のトリガとなるトリガ情報として、先頭桁から順に、受信イベントID、受信サブイベントID、送信元アプリケーションID、送信元アプリケーションマシンアドレス、送信イベントID、送信サブイベントID、送信先アプリケーションID、送信先アプリケーションマシンアドレス及び起動アプリケーション(起動アプリケーションの実行ファイル名)がそれぞれユーザの入力操作により設定可能である。本実施形態においてシナリオファイル23はCSV(Comma Separated Value)ファイル形式であり、桁と桁との間はカンマで区切られる。
【0040】
シナリオファイル23中のレコードの桁#1には、スケジューラ11−iのイベント処理のトリガとなる受信イベントID(識別子)が設定される。設定可能な受信イベントID値の範囲は0〜4294967295とする。スケジューラ11−iは、受信したイベントのイベントID及びサブイベントIDが、それぞれ上記桁#1の設定値及び次に述べる桁#2の設定値と一致した場合、対応するレコードを処理対象と見なす。シナリオファイル23内に、同じ受信イベントに対する指示が複数レコード存在する場合、スケジューラ11−iは、当該複数のレコードを順次処理する。シナリオファイル23中のレコードの桁#2には、スケジューラ11−iのイベント処理のトリガとなる受信サブイベントIDが設定される。
【0041】
シナリオファイル23中のレコードの桁#3には、イベント送信元のアプリケーションIDが設定される。この桁#3の項目は省略可能である。スケジューラ11−iは、桁#3の項目が設定されている場合、上記受信イベントID及び受信サブイベントIDが桁#1及び#2の設定値と一致し、且つイベントを送信したアプリケーション(送信元タスク)のアプリケーションID(送信元アプリケーションID)が桁3の設定値と一致した場合のみ、対応するレコードを処理対象と見なす。もし、桁#3の項目の設定が省略されている場合、スケジューラ11−iは受信イベントID及び受信サブイベントIDが桁#1及び#2の設定値と一致していれば送信元のタスクに拘わらずに、対応するレコードを処理対象とする。
【0042】
シナリオファイル23中のレコードの桁#4には、イベント送信元タスクが、スケジューラ11−iが動作するマシン(PC)とは別のマシン上に存在する場合、当該別のマシンのIPアドレス、またはIPアドレスに名前解決可能なマシン名が、送信元アプリケーションマシンアドレスとして設定される。この桁#4の項目は省略可能である。この桁#4の項目の設定がない場合、スケジューラ11−iは、イベント送信元タスクが当該スケジューラ11−iと同じマシン上にあるものと見なす。
【0043】
シナリオファイル23中のレコードの桁#5には、送信イベントIDが設定される。この桁#5の項目が設定されている場合、スケジューラ11−iは、受信したイベントIDの代わりに、当該桁#5に設定されているイベントIDを送信先に通知する。この桁#5の項目は省略可能であり、当該桁#5の項目の設定がない場合、スケジューラ11−iは受信イベントIDをそのまま送信先に通知する。
【0044】
シナリオファイル23中のレコードの桁#6には、送信サブイベントIDが設定される。この桁#6の項目が設定されている場合、スケジューラ11−iは、受信したサブイベントIDの代わりに、当該桁#6に設定されているサブイベントIDを送信先に通知する。この桁#6の項目は省略可能であり、当該桁#6の項目の設定がない場合、スケジューラ11−iは受信サブイベントIDをそのまま送信先に通知する。
【0045】
シナリオファイル23中のレコードの桁#7には、イベント送信先となるアプリケーション(タスク)のアプリケーションIDが送信先アプリケーションIDとして設定される。この桁#7の項目は省略可能である。スケジューラ11−iは、桁#7の項目の設定がない場合、あるいは当該桁#7に設定されているアプリケーションIDで指定されるタスクが存在しない(スケジューラ11−iと接続されていない)場合、受信イベントを送信しない。
【0046】
シナリオファイル23中のレコードの桁#8には、イベント送信先タスクが、スケジューラ11−iが動作するマシン(PC)とは別のマシン上に存在する場合、当該別のマシンのIPアドレス、またはIPアドレスに名前解決可能なマシン名が、送信先アプリケーションマシンアドレスとして設定される。この桁#8の項目は省略可能であり、当該桁#8の項目の設定がない場合、スケジューラ11−iは、イベント送信先タスクが当該スケジューラ11−iと同じマシン上にあるものと見なす。
【0047】
シナリオファイル23中のレコードの桁#9には、イベント受信によって所望のアプリケーション(タスク)を起動したい場合に、そのアプリケーション(タスク)を指定する起動アプリケーション(タスク)情報を設定(記述)することが可能である。起動アプリケーション(タスク)情報には、起動すべきタスクの例えば実行ファイル名が用いられる。この桁#9の項目が設定されている場合、スケジューラ11−iは、桁#5乃至#8の各項目、即ち送信イベントID、送信サブイベントID、送信先アプリケーションID及び送信先アプリケーションマシンアドレスの各項目を無視する。
【0048】
スケジューラ11−iが特定のアプリケーション(タスク)を起動するのに用いられるコマンドライン(命令入力行)は、例えば
“桁#9の項目の設定値(実行ファイル名) スケジューラ名
イベントID サブイベントID イベントデータトークン”
のような形式で表される。上記コマンドライン中のイベントデータトークンは、当該コマンドラインに付される一種のラベル(名前)であり、桁#9の項目の設定値(実行ファイル名)で指定されるアプリケーションを起動するときに必要な引数として用いられる。つまり、桁#9の項目の設定値で指定されるアプリケーション(タスク)は、引数として渡されるイベントデータトークンをスケジューラAPI13(中の関数)に渡すことにより、スケジューラ11−iで受信されたイベントデータを当該スケジューラAPI13を介して取得することができる。なお、コマンドラインにユーザ指定の引数を含めたい場合、当該引数は桁#9の項目中で実行ファイル名の後ろに記述される。例えば、実行ファイル名が“a.exe”で、ユーザ指定の引数が“1 2”の場合、桁#9の項目には“a.exe 1 2”を設定すればよい。実行ファイル名にはパスを含めることが可能である。
【0049】
シナリオファイル23の一例を図10に示す。図10の例では、シナリオファイル23は7つのレコード231〜237から構成される。レコード231〜235は、桁#4〜#6,#8,#9の項目が設定されていないレコードの例である。レコード236は、受信したイベントID及びサブイベントIDの代わりに、#5,#6に設定されているイベントID=202,サブイベントID=1を送信先に通知することを指示するレコードの例である。レコード237は、桁#9の項目により実行ファイル名が“notepad.exe”のアプリケーションの起動が指定されているレコードの例である。
【0050】
図11はスケジューラ11−iにより使用される共有変数定義ファイル24(ファイル名:variable.csv)の1レコードのデータフォーマットを示す。共有変数定義ファイル24は少なくとも1つのレコードを有する。共有変数定義ファイル24中のレコードには、桁#1(A)〜#4(D)の各項目がユーザの入力操作により設定可能である。本実施形態において共有変数定義ファイル24はCSVファイル形式であり、桁と桁との間はカンマで区切られる。
【0051】
共有変数定義ファイル24中のレコードの桁#1には、作成する変数の名称(変数名)が設定される。ここで、変数名として使用できる文字とサイズ(変数名長)については制約があるが、本実施形態とは直接関係しないため説明を省略する。
【0052】
共有変数定義ファイル24中のレコードの桁#2には、作成する変数の型が設定される。変数型は“DWORD”“ASCII”“BIN”の3種類であり、“DWORD”は32ビット整数値を、“ASCII”は文字列を、“BIN”は任意のバイナリデータを、それぞれ示す。この桁#2の項目は省略可能であり、当該桁#2の項目の設定がない場合、変数型は“DWORD”であると見なされる。
【0053】
共有変数定義ファイル24中のレコードの桁#3には、2以上の値が設定される。この桁#3の項目への2以上の値の設定により、配列型の変数(配列数)を作成することが可能である。タスクが配列の各要素にアクセスするにはインデックス(0〜)を使用する。共有変数定義ファイル24において、桁#3の項目は省略可能である。この桁#3の項目の設定がない場合、配列数=1と見なされ、桁#1に設定されている変数名で指定される変数が配列型の変数でないとして扱われる。
【0054】
共有変数定義ファイル24中のレコードの桁#4には変数の初期値が設定される。変数は、この桁#4に設定された値で初期化される。桁#4の項目は省略可能である。この桁#4の項目の設定がない場合、変数は変数型に基づいて次のように初期化される。即ち、“DWORD”の場合は“0”に、“ASCII”の場合は“空”(””)に、“BIN”の場合は“空”(サイズ=0)に初期化される。ここでは、文字列型変数(“ASCII”)の初期化には、初期値を””で囲む必要がある。また、配列型変数を初期化するには各要素をカンマで区切って設定する。この場合、桁区切りのカンマと区別するために初期値全体を””で囲む必要がある。
【0055】
共有変数定義ファイル24の一例を図12に示す。図12の例では、共有変数定義ファイル24は6つのレコード241〜246から構成される。
【0056】
図13はスケジューラ11−iにより使用されるセマフォ定義ファイル25(ファイル名:semaphore.csv)の1レコードのデータフォーマットを示す。セマフォ定義ファイル25は少なくとも1つのレコードを有する。セマフォ定義ファイル25中のレコードには、桁#1(A),#2(B)の各項目がユーザの入力操作により設定可能である。本実施形態においてセマフォ定義ファイル25はCSVファイル形式であり、桁と桁との間はカンマで区切られる。
【0057】
セマフォ定義ファイル25中のレコードの桁#1には、作成するセマフォの名称(セマフォ名)が設定される。ここで、セマフォ名として使用できる文字とサイズについては制約があるが、本実施形態とは直接関係しないため説明を省略する。
【0058】
セマフォ定義ファイル25名のレコードの桁#2には、セマフォの初期カウントが設定される。この桁#2の項目は省略可能であり、当該桁#2の項目の設定がない場合、初期カウント=1と見なされる。
【0059】
セマフォ定義ファイル25の一例を図14に示す。図14の例では、セマフォ定義ファイル25は2つのレコード251,252から構成される。
【0060】
図15はスケジューラ11−iにより使用されるアプリケーション登録ファイル21(ファイル名:application.csv)の1レコードのデータフォーマットを示す。アプリケーション登録ファイル21は少なくとも1つのレコードを有する。このアプリケーション登録ファイル21中のレコードには、桁#1(A),#2(B)の各項目がユーザの入力操作により設定可能である。本実施形態においてアプリケーション登録ファイル21はCSVファイル形式であり、桁と桁との間はカンマで区切られる。スケジューラ11−iは、アプリケーション登録ファイル21を読み込むことにより、当該スケジューラ11−iにスケジューラAPI13を介して接続されるタスクを認識する。
【0061】
アプリケーション登録ファイル21中のレコードの桁#1には、スケジューラ11−iに接続されるアプリケーション(タスク)のアプリケーションIDが設定される。この桁#2には、桁#1の項目の設定値で指定されるアプリケーションが、スケジューラ11−iが動作するマシン(PC)とは別のマシン上に存在する場合に、当該別のマシンのIPアドレス、またはIPアドレスに名前解決可能なマシン名が、マシンアドレスとして設定される。桁#2の項目は省略可能である。この桁#2の項目の設定がない場合、スケジューラ11−iは、当該スケジューラ11−iに接続されるアプリケーション(タスク)が当該スケジューラ11−iと同じマシン上にあるものと見なす。
【0062】
アプリケーション登録ファイル21の一例を図16に示す。図16の例では、アプリケーション登録ファイル21は3つのレコード211〜213から構成される。
【0063】
図17はスケジューラAPI13により使用されるクライアント設定ファイル27(ファイル名:client.ini)のデータフォーマットを示す。図17において、斜体文字の部分はユーザの入力操作により設定可能な箇所である。クライアント設定ファイル27には、図7に示したスケジューラ設定ファイル22と同様に、運用ログに書き込まれるログ事象毎のログ書き込みレベル(LogLevel=0〜4294967295)171と、運用ログへのデータダンプの書き込み方法を示す書き込み制御値(LogData=0〜2)172とが設定可能である。ログ書き込みレベル171は省略可能であり、省略時は0として扱われる。クライアント設定ファイル27には更に、スケジューラAPI13がネットワーク上の別のマシン(PC)上で動作するスケジューラと接続する必要がある場合に、そのスケジューラと接続するためのスケジューラ接続情報173が設定される。スケジューラ接続情報173は、接続の対象となるスケジューラを示すスケジューラ名、当該スケジューラが動作するマシンのマシンアドレス、及び当該スケジューラに割り当てるTCPポート番号が設定される。ここで、マシンアドレスには、IPアドレス、またはIPアドレスに名前解決可能なマシン名を用いる必要がある。クライアント設定ファイル27の一例を図18に示す。
【0064】
次に、本発明の一実施形態における、主としてスケジューラサービス12及びスケジューラ11−1の動作について、図2のスケジューラ起動説明図、及び図19乃至図22のフローチャートを適宜参照して説明する。
【0065】
まず、図4のPCにおいて汎用OS10が立ち上がると、図2のステップS1に示したように、スケジューラサービス12が起動される。するとスケジューラサービス12は、ディスク装置43に保存されている、図5のフォーマットのグローバル設定ファイル26を主メモリ42に読み込む(ステップS11)。そしてスケジューラサービス12は、グローバル設定ファイル26に設定されているスケジューラリスト(SchedulerList)51に従い、管理すべきスケジューラ11−iを認識する(ステップS12)。ここでは、スケジューラ11−1〜11−nが認識されたものとする。この場合、スケジューラサービス12は、認識したスケジューラ11−1〜11−n毎に、グローバル設定ファイル26に設定されているTCPポート番号(TcpPort)52を割り当てて、当該スケジューラ11−1〜11−nを図2のステップS2−1〜S2−nに示したように起動する(ステップS13)。
【0066】
以下、スケジューラ11−1〜11−nの動作について、スケジューラ11−1を例に説明する。スケジューラ11−1はスケジューラサービス12により起動されると、当該スケジューラ11−1のスケジューラ名に対応付けてディスク装置43に保存されている、当該スケジューラ11−1に固有の、アプリケーション登録ファイル21、スケジューラ設定ファイル22、シナリオファイル23、共有変数定義ファイル24及びセマフォ定義ファイル25の各設定ファイルの内容を主メモリ42に読み込む(ステップS21)。
【0067】
次にスケジューラ11−1は、主メモリ42に読み込んだアプリケーション登録ファイル21(の内容)に従って、当該スケジューラ11−1に接続されるタスク(アプリケーション)を認識する(ステップS22)。またスケジューラ11−1は、共有変数定義ファイル24(の内容)に従い、共有変数の領域を主メモリ42上に確保する(ステップS23)。この領域は、スケジューラ11−1に接続されるタスクに開放される。またスケジューラ11−1は、セマフォ定義ファイル2(の内容)5に従い、当該ファイル25で指定されたセマフォ名のセマフォを主メモリ42上に全て作成する(ステップS24)。このとき作成されたセマフォのカウント値は、セマフォ定義ファイル25で指定された初期カウント値に初期設定される。
【0068】
作成されたセマフォは、スケジューラAPI13によるタスク間通信の排他制御に用いられる。セマフォのカウント値は、タスクにより使用される都度1だけデクリメントされ、使用が終了する都度1だけインクリメントされる。セマフォのカウント値が初期値に一致する状態、つまりセマフォが使用されていない状態では、タスクは当該セマフォのセマフォ名をスケジューラAPI13に対して指定するだけで、当該スケジューラAPI13の排他制御を受けて、任意のリソースを使用できる。もし、セマフォの初期カウント値がN(Nは1以上の整数)である場合、当該セマフォの使用権を獲得したタスクは、最大N個のリソースを並行して使用できる。
【0069】
スケジューラ11−1は、ステップS22乃至S24を実行すると、ステップS22で認識したタスクから(スケジューラAPI13を介して)接続されるのを待つ状態(タスク接続待ち状態)に遷移する(ステップS25)。この状態で、スケジューラ11−1はタスクから接続されると(ステップS26)、シナリオファイル23に従ってイベントの送受信処理(ステップS27)を次のように行う。
【0070】
まずスケジューラ11−1が、タスクとの接続状態において、当該タスクからスケジューラAPI13を介してイベントを受信したものとする(ステップS31)。ここで、イベントはイベントID及びサブイベントIDで識別され、タスクはアプリケーションIDで識別される。
【0071】
スケジューラ11−1は、タスクからイベントを受信するとシナリオファイル23を参照し、当該受信したイベントのイベントID及びサブイベントIDに一致する受信イベントID及び受信サブイベントIDが設定されているレコード(以下、目的レコードと称する)がシナリオファイル23中に存在するか否かを調べる(ステップS32)。もし、目的レコードが存在しないならば、つまり目的レコードが見つからなかったならば、スケジューラ11−1は受信したイベントはイベント送受信処理の対象外であるとして、当該イベントの受信前の状態に戻る。
【0072】
これに対し、目的レコードが存在するならば、つまり目的レコードが見つかったならば、スケジューラ11−1は当該レコード中に起動アプリケーションの設定がされているか否かを調べる(ステップS33)。もし、起動アプリケーションの設定がされているならば、スケジューラ11−1は目的レコードの他の設定項目(送信イベントID、送信サブイベントID、送信先アプリケーションID及び送信先アプリケーションマシンアドレスの各設定項目)の内容に無関係に、指定のアプリケーションをスケジューラAPI13を介して新たに起動する(ステップS34)。そしてスケジューラ11−1は、受信したイベントのイベントID及びサブイベントIDに一致する受信イベントID及び受信サブイベントIDが設定されている他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。
【0073】
一方、目的レコード中に起動アプリケーションの設定がされていない場合(ステップS33)、スケジューラ11−1は当該レコード中に送信元アプリケーションIDが設定されているか否かを調べる(ステップS35)。もし、送信元アプリケーションIDが設定されているならば、スケジューラ11−1は、当該設定されている送信元アプリケーションIDに、受信したイベントを送信したタスクのアプリケーションIDが一致しているか否かを調べる(ステップS36)。もし、一致しないならば、スケジューラ11−1は、受信したイベントの送信条件の不成立を判断して、目的レコードを処理対象外とする。この場合、スケジューラ11−1は、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。
【0074】
これに対し、目的レコードに設定されている送信元アプリケーションIDに、受信したイベントを送信したタスクのアプリケーションIDが一致しているならば(ステップS36)、スケジューラ11−1はステップS37に進む。またスケジューラ11−1は、目的レコードに送信元アプリケーションIDが設定されていない場合にも(ステップS35)、ステップS37に進む。
【0075】
ステップS37において、スケジューラ11−1は、目的レコードに送信元アプリケーションマシンアドレスが設定されているか否かを調べる。もし、設定されていないならば、スケジューラ11−1は、受信したイベントを送信したタスク(イベント送信元タスク)が、自身と同一マシン上に存在すると判断する(ステップS38)。一方、目的レコードに送信元アプリケーションマシンアドレスが設定されているならば(ステップS37)、スケジューラ11−1はイベント送信元タスクが、自身が動作するマシンとは別の、当該マシンアドレス(IPアドレスまたは名前解決可能なマシン名)で指定されるマシン上に存在するものと判断する。
【0076】
次にスケジューラ11−1は、目的レコード中に送信先アプリケーションIDが設定されているか否かを調べる(ステップS39)。もし、送信先アプリケーションIDが設定されていないならば、スケジューラ11−1は、受信したイベントの送信条件の不成立を判断して、現在の目的レコードを処理対象外とする。この場合、スケジューラ11−1は、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。これに対し、目的レコード中に送信先アプリケーションIDが設定されているならば(ステップS39)、スケジューラ11−1は、目的レコードに設定されている送信先アプリケーションIDを持つタスクが存在する(自身と接続されている)か否かを調べる(ステップS40)。
【0077】
もし、該当するタスクが存在しないならば(ステップS40)、スケジューラ11−1は受信したイベントの送信条件の不成立を判断して現在の目的レコードを処理対象外とし、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。これに対し、該当するタスクが存在するならば(ステップS40)、スケジューラ11−1は受信したイベントの送信条件の成立を判断して目的レコードに送信先アプリケーションマシンアドレスが設定されているか否かを調べる(ステップS41)。もし、設定されていならば、スケジューラ11−1は、受信したイベントの送信先となるタスク(イベント送信先タスク)が、自身と同一マシン上に存在するものと判断する(ステップS42)。一方、目的レコードに送信先アプリケーションマシンアドレスが設定されているならば(ステップS41)、スケジューラ11−1はイベント送信先タスクが、自身が動作するマシンとは別の、当該マシンアドレス(IPアドレスまたは名前解決可能なマシン名)で指定されるマシン上に存在するものと判断する。
【0078】
次にスケジューラ11−1は、目的レコード中に送信イベントID及び送信サブイベントIDが設定されているか否かを調べる(ステップS43)。もし、目的レコード中に送信イベントID及び送信サブイベントIDが設定されているならば、スケジューラ11−1は、受信したイベントの送信時に、当該イベントのイベントID及びサブイベントIDを、当該レコード中の送信イベントID及び送信サブイベントIDに置き換えて、その置き換え後のイベントを送信先アプリケーション(タスク)に送信する(ステップS44)。つまりスケジューラ11−1は、受信イベントのイベントID及びサブイベントIDに代えて、目的レコード中の送信イベントID及び送信サブイベントIDを送信先に通知する。これにより、シナリオファイル23内に、同一の受信イベントID/サブイベントIDを含む複数のレコードを用意して、その複数のレコードに、それぞれ異なる送信イベントID及び送信サブイベントID並びに送信先アプリケーションIDを設定しておくならば、あるタスクからスケジューラ11−1に対し、上記受信イベントID/サブイベントIDに一致するイベントID/サブイベントIDのイベントが送信された場合に、当該イベントを、複数のタスクに対してそれぞれ異なるイベントID/サブイベントIDで送信できる。
【0079】
一方、目的レコード中に送信イベントID及び送信サブイベントIDが設定されていないならば、スケジューラ11−1は、受信イベントのイベントID及びサブイベントIDをそのまま用いて、当該イベントを送信先アプリケーション(タスク)に通知する(ステップS45)。つまりスケジューラ11−1は、受信イベントのイベントID及びサブイベントIDをそのまま送信先に通知する。
【0080】
その後、スケジューラ11−1は、他の目的レコードがシナリオファイル23中に存在するか調べるために、ステップS32に戻る。そして、受信したイベントのイベントID及びサブイベントIDに一致する受信イベントID及び受信サブイベントIDが設定されている全ての目的レコードを処理すると、スケジューラ11−1は当該イベントの受信前の状態に戻る。
【0081】
次に、図1に示したタスク間通信システムのソフトウェア構成の具体例について、半導体製造装置に適用されるソフトウェア構成を例に説明する。図23は半導体製造装置に適用されるタスク間通信システムのソフトウェア構成を示すブロック図である。同図に示すように、この半導体製造装置上では、スケジューラ110と、タスク201,202,203とが動作する。
【0082】
タスク201は、半導体製造装置の例えば前面のパネルの表示を制御するGUI(Graphical User Interface)を実現するアプリケーションである。以下、タスク201をGUIタスク201と称する。
【0083】
タスク202は、半導体製造装置内部の機器を制御するコントロール機構(CONTROL)を実現するアプリケーションである。以下、タスク202を機器制御タスク(CONTROLタスク)201と称する。タスク203は、半導体製造装置外部と通信する通信機構(COMMUNICATION)を実現するアプリケーションである。以下、タスク203を外部通信用タスク(COMMUNICATIONタスク)203と称する。
【0084】
図24は、図23のソフトウェア構成により、半導体装置前面のパネルから当該装置の状態を、例えばOFFLINE状態(つまり外部との通信を行わない状態)から、ONLINE状態(つまり外部と通信を行う状態)に変化させるのに必要なシナリオファイル23の一例を示す。また、図24の構成のシナリオファイル23を適用すると共に、GUIによりONLINEへ変更し、イベントID=100(サブイベントID=1)のイベントがGUIタスク201からスケジューラ110に対して送信される場合の処理手順を、図25のフローチャートに示す。なお、図25のフローチャート中の“X,Y”の表現は、イベントID=X、サブイベントID=Yを表す。
【0085】
以下、図25のフローチャートに従う処理手順について、図26に示すスケジューラ110と各タスク201〜203との間の通信手順を説明するための図を併用して説明する。
【0086】
まず、GUIタスク201からスケジューラ110に対し、ONLINE変更を要求するイベントID=100、サブイベントID=1のイベント(ONLINE変更要求100,1)が送信されると、スケジューラ110は当該イベント、つまり「ONLINE変更要求100,1」を受信する(図25ステップS51、図26ステップS61)。するとスケジューラ110から外部通信用タスク(COMMUNICATIONタスク)203に対して「ONLINE問い合わせ200,1」が送信される(図25ステップS52、図26ステップS62)。そしてスケジューラ110は、「ONLINE問い合わせ200,1」に対する「応答200.2」を待つ。
【0087】
この状態で、外部通信用タスク203からスケジューラ110に対して「ONLINE問い合わせ200,1」に対する「応答200.2」が送信されると、スケジューラ110は当該「応答200.2」を受信する(図25ステップS53、図26ステップS63)。するとスケジューラ110は、機器制御タスク(CONTROLタスク)202に対して半導体製造装置の状態を問い合わせるための「状態問い合わせ300.1」を送信する(図25ステップS54、図26ステップS64)。そしてスケジューラ110は、「状態問い合わせ300.1」に対する「応答300.2」を待つ。
【0088】
この状態で、機器制御タスク202からスケジューラ110に対して「状態問い合わせ300.1」に対する「応答300.2」が送信されると、スケジューラ110は当該「応答300.2」を受信する(図25ステップS55、図26ステップS65)。するとスケジューラ110は、外部通信用タスク203に対して半導体製造装置の状態を通知するための「装置状態報告400.1」を送信する(図25ステップS56、図26ステップS66)。そしてスケジューラ110は、「装置状態報告400.1」に対する「応答400.2」を待つ。
【0089】
この状態で、外部通信用タスク203からスケジューラ110に対して「装置状態報告400.1」に対する「応答400.2」が送信されると、スケジューラ110は当該「応答400.2」を受信する(図25ステップS57、図26ステップS67)。するとスケジューラ110は、「ONLINE変更要求100,1」を発したGUIタスク201に対し、総合的な「応答100,2」を送信する(図25ステップS58、図26ステップS68)。
【0090】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【0091】
【発明の効果】
以上詳述したように本発明によれば、タスクから独立に設けられたスケジューラにより、イベント処理のトリガとなるトリガ情報が設定されたシナリオファイルに従って受信イベントを処理するようにしたので、タスク間通信を非同期で容易に行うことができ、タスクの機能追加・削除(新規タスクの追加・既存タスクの削除)が必要な場合でも、シナリオファイルを書き換えるだけで容易に対応できる。また本発明によれば、シナリオファイルの中から検出されたトリガ情報に送信イベント識別子が設定されている場合には、当該トリガ情報に設定されている送信先アプリケーション識別子の示すタスクに受信イベントデータを送信する際に、当該イベントデータのイベント識別子を当該送信イベント識別子に置き換えるようにしたので、タスクの追加・削除が発生しても、イベントデータの受信側で当該データを適切に処理できる
【図面の簡単な説明】
【図1】本発明の一実施形態に係るタスク間通信システムのソフトウェア構成を示すブロック図。
【図2】スケジューラサービス12の起動と、それに伴うスケジューラ11−1〜11−nの起動とを説明するための図。
【図3】上記スケジューラ11−1〜11−nが存在するPC(パーソナルコンピュータ)におけるディレクトリ構成の一例を示す図。
【図4】図1の構成のソフトウェア及び各ファイルが存在するPCのハードウェア構成を示すブロック図。
【図5】グローバル設定ファイル26のデータフォーマットを示す図。
【図6】上記グローバル設定ファイル26の一例を示す図。
【図7】スケジューラ設定ファイル22のデータフォーマットを示す図。
【図8】上記スケジューラ設定ファイル22の一例を示す図。
【図9】シナリオファイル23の1レコードのデータフォーマットを示す図。
【図10】上記シナリオファイル23の一例を示す図。
【図11】共有変数定義ファイル24の1レコードのデータフォーマットを示す図。
【図12】上記共有変数定義ファイル24の一例を示す図。
【図13】セマフォ定義ファイル25の1レコードのデータフォーマットを示す図。
【図14】上記セマフォ定義ファイル25の一例を示す図。
【図15】アプリケーション登録ファイル21の1レコードのデータフォーマットを示す図。
【図16】上記アプリケーション登録ファイル21の一例を示す図。
【図17】クライアント設定ファイル27のデータフォーマットを示す図。
【図18】上記クライアント設定ファイル27の一例を示す図。
【図19】同実施形態におけるスケジューラサービス12の起動時の動作を説明するためのフローチャート。
【図20】スケジューラサービス12により起動されたスケジューラ11−1の動作を説明するためのフローチャート。
【図21】上記スケジューラ11−1のイベント送受信処理を説明するためのフローチャート。
【図22】上記スケジューラ11−1のイベント送受信処理を説明するためのフローチャート。
【図23】半導体製造装置に適用されるタスク間通信システムのソフトウェア構成を示すブロック図。
【図24】図23のソフトウェア構成により、半導体装置前面のパネルから当該装置の状態をOFFLINEからONLINEに変化させるのに必要なシナリオファイル23の一例を示す図。
【図25】図24の構成のシナリオファイル23を適用すると共に、イベントID=100(サブイベントID=1)のイベントがGUIタスク201からスケジューラ110に対して送信される場合の処理手順を示すフローチャート。
【図26】図25のフローチャートに従う処理手順が実行される際の、スケジューラ110と各タスク201〜203との間の通信手順を説明するための図。
【符号の説明】
11−1〜11−n,110…スケジューラ、12…スケジューラサービス、13…スケジューラAPI(特定アプリケーションプログラムインタフェース)、20−1〜20−3,201〜203…タスク、21…アプリケーション登録ファイル、22…スケジューラ設定ファイル、23…シナリオファイル、24…共有変数定義ファイル、25…セマフォ定義ファイル、26…グローバル設定ファイル、41…CPU、42…主メモリ、43…ディスク装置
Claims (9)
- 汎用オペレーティングシステムが動作する計算機を、タスクとの間でイベントデータによる通信が可能な少なくとも1つのスケジューラとして機能させるためのタスク間通信プログラムであって、
前記スケジューラが、
タスクからのイベントデータの受信時には、受信イベント識別子が設定されると共に当該受信イベント識別子に対応付けて送信イベント識別子及びイベントデータの送信先となるタスクを指定する送信先アプリケーション識別子が設定可能な、イベント処理のトリガとなるトリガ情報が記録されたシナリオファイルを参照して、受信イベントデータのイベント識別子に一致する受信イベント識別子を含むトリガ情報を全て検出する手段と、
前記検出手段によって検出されたトリガ情報をもとに、当該トリガ情報に少なくとも前記送信先アプリケーション識別子が設定されていることを前記受信イベントデータの送信条件として、当該条件の成立または不成立を判定する手段と、
前記判定手段により送信条件成立が判定された場合に、前記検出手段によって検出されたトリガ情報に設定されている送信先アプリケーション識別子の示すタスクへ前記受信イベントデータを送信し、その際に当該イベントデータのイベント識別子を、当該トリガ情報に前記送信イベント識別子が設定されているか否かに応じて当該送信イベント識別子に置き換える送信手段とを備えている
ことを特徴とするタスク間通信プログラム。 - 前記トリガ情報には前記受信イベント識別子に対応付けて起動すべきタスクを指定する起動タスク情報が設定可能であり、
前記スケジューラは、前記検出手段によって検出されたトリガ情報に前記起動タスク情報が設定されている場合に、当該起動タスク情報で指定されるタスクを起動するタスク起動手段を更に備え、
前記判定手段は、前記検出手段によって検出されたトリガ情報に前記起動タスク情報が設定されている場合には、当該トリガ情報に前記送信先アプリケーション識別子が設定されているか否かと無関係に、前記送信条件の不成立を判定する
ことを特徴とする請求項1記載のタスク間通信プログラム。 - 前記トリガ情報には前記受信イベント識別子に対応付けて送信元アプリケーション識別子が設定可能であり、
前記判定手段は、前記検出手段によって検出されたトリガ情報に前記受信イベントデータを送信したタスクのアプリケーション識別子とは異なる前記送信元アプリケーション識別子が設定されている場合には、当該トリガ情報に前記送信先アプリケーション識別子が設定されているか否かと無関係に、前記送信条件の不成立を判定する
ことを特徴とする請求項1記載のタスク間通信プログラム。 - 前記計算機を、
前記汎用オペレーティングシステムの起動時に、前記少なくとも1つのスケジューラを指定するリストが設定されたグローバル設定ファイルに従って当該スケジューラを起動するスケジューラサービス手段として更に機能させるための請求項1記載のタスク間通信プログラム。 - 前記計算機を、
タスクからの要求に従って前記スケジューラと汎用通信プロトコルにより接続する特定アプリケーションプログラムインタフェースとして更に機能させるための請求項1記載のタスク間通信プログラム。 - 前記特定アプリケーションプログラムインタフェースは、タスクからの要求によりスケジューラとの接続のための汎用のオブジェクト間通信インタフェースを当該タスクに提供し、当該タスクにより生成される汎用の通信オブジェクトに応じて前記スケジューラとの接続または前記スケジューラからの切断を行う請求項5記載のタスク間通信プログラム。
- 汎用オペレーティングシステムが動作する計算機において、当該計算機上のタスク間の通信、あるいは当該計算機上のタスク及び当該計算機とネットワーク接続された別の計算機上のタスクとの間の通信を行うタスク間通信方法であって、
前記汎用オペレーティングシステムの起動時に、タスクとの間でイベントデータによる通信が可能な少なくとも1つのスケジューラを起動するステップと、
起動されたスケジューラの実行により、当該スケジューラと接続されたタスクからのイベントデータを受信した場合に、受信イベント識別子が設定されると共に当該受信イベント識別子に対応付けて送信イベント識別子及びイベントデータの送信先となるタスクを指定する送信先アプリケーション識別子が設定可能な、イベント処理のトリガとなるトリガ情報が記録されたシナリオファイルを参照して、受信イベントデータのイベント識別子に一致する受信イベント識別子を含むトリガ情報を検出するステップと、
前記受信イベントデータのイベント識別子に一致する受信イベント識別子を含むトリガ情報が検出される都度、当該トリガ情報に少なくとも前記送信先アプリケーション識別子が設定されていることを前記受信イベントデータの送信条件として、当該条件の成立または不成立を判定するステップと、
前記送信条件の成立が判定された場合に、前記検出されたトリガ情報に設定されている送信先アプリケーション識別子の示すタスクへ前記受信イベントデータを送信し、その際に当該イベントデータのイベント識別子を、当該トリガ情報に前記送信イベント識別子が設定されているか否かに応じて当該送信イベント識別子に置き換えるステップと
を具備することを特徴とするタスク間通信方法。 - 前記検出されたトリガ情報に前記受信イベント識別子に対応付けて起動すべきタスクを指定する起動タスク情報が設定されているか否かを判定するステップと、
前記起動タスク情報が設定されている場合に、前記受信イベントデータの送信に代えて当該起動タスク情報で指定されるタスクを起動するステップと
を更に具備することを特徴とする請求項7記載のタスク間通信方法。 - 前記汎用オペレーティングシステムの起動時に、少なくとも1つのスケジューラを指定するリストが設定されたグローバル設定ファイルに従って、当該リストにより示されるスケジューラを起動するステップを更に具備することを特徴とする請求項7記載のタスク間通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003205985A JP2005055961A (ja) | 2003-08-05 | 2003-08-05 | タスク間通信プログラム及びタスク間通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003205985A JP2005055961A (ja) | 2003-08-05 | 2003-08-05 | タスク間通信プログラム及びタスク間通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005055961A true JP2005055961A (ja) | 2005-03-03 |
Family
ID=34362999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003205985A Pending JP2005055961A (ja) | 2003-08-05 | 2003-08-05 | タスク間通信プログラム及びタスク間通信方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005055961A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193362A (ja) * | 2008-02-14 | 2009-08-27 | Hitachi Ltd | 情報処理システム及びそのファイルのジョブ間排他制御方法 |
JP7381895B2 (ja) | 2020-04-15 | 2023-11-16 | 富士通株式会社 | イベントストリーム処理システム、イベントムストリーム処理方法及びイベントストリーム処理プログラム |
-
2003
- 2003-08-05 JP JP2003205985A patent/JP2005055961A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193362A (ja) * | 2008-02-14 | 2009-08-27 | Hitachi Ltd | 情報処理システム及びそのファイルのジョブ間排他制御方法 |
JP7381895B2 (ja) | 2020-04-15 | 2023-11-16 | 富士通株式会社 | イベントストリーム処理システム、イベントムストリーム処理方法及びイベントストリーム処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099918B (zh) | 容器化环境中的集群的实时迁移 | |
JP3759410B2 (ja) | クラスタ化された計算処理環境において実行する分散ネットワークアプリケーションの管理用リクエストを処理するための方法および装置 | |
US9189303B2 (en) | Shadow queues for recovery of messages | |
US20080222617A1 (en) | Server side application integration framework | |
US8433772B2 (en) | Automated tape drive sharing in a heterogeneous server and application environment | |
US11327816B2 (en) | Monitoring components in a service framework | |
WO2012000999A1 (en) | Configuring a computer system for a software package installation | |
KR101913346B1 (ko) | 클라우드 환경에서의 클라우드 서버 관리 방법 및 장치 | |
CN110520844A (zh) | 云管理平台、虚拟机管理方法及其系统 | |
US7444629B2 (en) | Autonomic self-healing of java resources | |
US20080002694A1 (en) | Method to accelerate NDMP based virtual tape library operations | |
WO2017190663A1 (zh) | 一种基于Linux的注册表服务系统、方法及金融自助设备 | |
US10824486B1 (en) | Two-way clipboard exchange in virtual console | |
US7996524B2 (en) | Controlling external communication of embedded device using proxy server | |
EP1061445A2 (en) | Web-based enterprise management with transport neutral client interface | |
JP5884566B2 (ja) | バッチ処理システム、進捗状況確認装置、進捗状況確認方法、及びプログラム | |
JP2005055961A (ja) | タスク間通信プログラム及びタスク間通信方法 | |
CN102378964B (zh) | 创建虚拟进程的进程内中介 | |
CN114827177A (zh) | 一种分布式文件系统的部署方法、装置及电子设备 | |
CN113672334A (zh) | 一种容器管理方法及装置 | |
CN111385334A (zh) | 一种数据配送方法、装置、设备及存储介质 | |
JP3884239B2 (ja) | サーバ計算機 | |
CN114731326B (zh) | 区块链系统、程序及网络连接装置 | |
CN116466973B (zh) | 一种多并发固件升级方法、系统、计算机设备及存储介质 | |
KR20110068302A (ko) | 유닉스/리눅스 시스템에서의 셸 기반의 접근제어시스템 및 접근제어방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060704 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080218 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080311 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080715 |