(57)【要約】【課題】対象物が企業の運営を通じて移動する際にそれらの対象物を追跡管理することができる複数の分散自動ＩＤノードを備える自動識別システムを提供すること。【解決手段】自動ＩＤノードは、ネットワークの複数の現場にわたって分散し、企業向けアプリケーションシステム、および／またはデータ取得システムと通信状態にある。これらの自動ＩＤノードは、各々の現場に集中することにより、各々の企業向けアプリケーションによって追跡管理されるデータの量を最小限に抑える。自動ＩＤノードはコンポーネントマネージャを備えることができ、コンポーネントマネージャは、自動ＩＤノードの動作に影響を及ぼすことなく、自動ＩＤノード内で使用するためのコンポーネントを動的にロードする。【選択図】図９
2006244497.tif 000002
【特許請求の範囲】
【請求項１】
アイテムを追跡管理するための自動ＩＤ追跡システムに関連してアイテムデータを受信する機能を有する自動ＩＤノードと、
データ処理モジュールの動作中および前記自動ＩＤノードの動作中に前記アイテムデータを処理するための処理コンポーネントを実装する機能を有する前記自動ＩＤノード内のデータ処理モジュールと、
前記アイテムデータに基づいて、複数のコンポーネントから前記処理コンポーネントを決定する機能を有するコンポーネントマネージャと、
前記データ処理モジュールの前記動作中および前記自動ＩＤノードの前記動作中に前記処理コンポーネントを前記データ処理モジュールへロードする機能を有するコンポーネントローダと
を備えたことを特徴とするシステム。
【請求項２】
前記データ処理モジュールは、前記自動ＩＤ追跡システムにおいて前記アイテムデータを処理する機能を有するコアサービスモジュールを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記コンポーネントローダは、前記処理コンポーネントに関連付けられている構成設定に基づいて前記処理コンポーネントを決定するための命令を前記コンポーネントマネージャへ出力する機能を有する構成ファイルを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記データ処理モジュールは、前記自動ＩＤノードと、前記自動ＩＤ追跡システムのその他の要素との間の通信を処理する機能を有する統合モジュールを含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記処理コンポーネントは、前記自動ＩＤ追跡システムの指定された要素と通信するように適合されているアダプタを含むことを特徴とする請求項４に記載のシステム。
【請求項６】
前記アダプタは、
指定された通信プロトコルを含む前記指定された要素との間におけるデータ伝送を管理する機能を有するコミュニケータと、
前記処理コンポーネントによって使用される第１のデータフォーマットと、前記指定された要素によって使用される第２のデータフォーマットとの間におけるデータ変換を管理する機能を有するデータコンバータと
を含むことを特徴とする請求項５に記載のシステム。
【請求項７】
前記処理コンポーネントは、アクティブに実施されている第１の処理タスクを実行するためのアクティブインスタンスと、アクティブに実施されていない第２の処理タスクを実行するためのパッシブインスタンスとに関連付けられていることを特徴とする請求項１に記載のシステム。
【請求項８】
前記複数の処理コンポーネントのうちの１つまたは複数のその他のパッシブインスタンスと共に、前記処理コンポーネントの前記パッシブインスタンスを保存するためのプールをさらに備えたことを特徴とする請求項７に記載のシステム。
【請求項９】
前記データ処理モジュールは、前記第２の処理タスクを、アクティブに実施されていない状態からアクティブに実施されている状態へ変更するという決定に基づいて、前記プールにある前記パッシブインスタンスをアクティブ化し、前記パッシブインスタンスを第２のアクティブインスタンスとして実施する機能を有するインスタンスマネージャを含むことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記インスタンスマネージャは、前記第１の処理タスクを、アクティブに実施されている状態からアクティブに実施されていない状態へ変更するという決定に基づいて、第２のパッシブインスタンスとして前記プールに保存するために前記アクティブインスタンスを非アクティブ化する機能をさらに有することを特徴とする請求項９に記載のシステム。
【請求項１１】
前記コンポーネントマネージャまたは前記コンポーネントローダが選択する際の選択元となる前記複数の処理コンポーネントを格納する機能を有するコンポーネントリポジトリをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項１２】
アイテムを追跡管理するための自動ＩＤ追跡システムにおける自動ＩＤノードにおいてアイテムデータを受信するステップと、
前記アイテムデータを分析して、前記アイテムデータを処理するための処理コンポーネントを複数のコンポーネントの中から決定するステップと、
データ処理モジュールの動作中および前記自動ＩＤノードの動作中に前記処理コンポーネントを前記データ処理モジュールへロードするステップと、
前記処理コンポーネントによって前記アイテムデータを処理するステップと
を備えたことを特徴とする方法。
【請求項１３】
前記処理コンポーネントを前記データ処理モジュールへロードする前記ステップは、前記自動ＩＤノードと、前記自動ＩＤ追跡システムのその他の要素との間の通信を処理する機能を有する統合モジュールへ前記処理コンポーネントをロードするステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記処理コンポーネントを前記データ処理モジュールへロードする前記ステップは、前記自動ＩＤ追跡システムの指定された要素と通信するように適合されているアダプタをロードするステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１５】
アクティブに実施されている第１の処理タスクを実行するための前記処理コンポーネントのアクティブインスタンスをロードするステップと、
アクティブに実施されていない第２の処理タスクを実行するための前記処理コンポーネントのパッシブインスタンスを保存するステップと
をさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記第２の処理タスクを、アクティブに実施されていない状態からアクティブに実施されている状態へ変更するという決定に基づいて、前記パッシブインスタンスを第２のアクティブインスタンスとして実施するために前記プールにある前記パッシブインスタンスをアクティブ化するステップと、
前記第１の処理タスクを、アクティブに実施されている状態からアクティブに実施されていない状態へ変更するという決定に基づいて、第２のパッシブインスタンスとして前記プールに保存するために前記アクティブインスタンスを非アクティブ化するステップと
をさらに備えたことを特徴とする請求項１５に記載の方法。
【請求項１７】
命令を格納している記憶媒体を含む装置であって、前記命令は、
アイテムを追跡管理するための自動ＩＤ追跡システムにおける自動ＩＤノードにおいてアイテムデータを受信するための第１のコード部と、
前記アイテムデータを分析して、前記アイテムデータを処理するための処理コンポーネントを複数のコンポーネントの中から決定するための第２のコード部と、
データ処理モジュールの動作中および前記自動ＩＤノードの動作中に前記処理コンポーネントを前記データ処理モジュールへロードするための第３のコード部と、
前記処理コンポーネントによって前記アイテムデータを処理するための第４のコード部と
を備えたことを特徴とする装置。
【請求項１８】
前記第３のコード部は、前記自動ＩＤノードと、前記自動ＩＤ追跡システムのその他の要素との間の通信を処理する機能を有する統合モジュールへ前記処理コンポーネントをロードするための第５のコード部を含むことを特徴とする請求項１７に記載の装置。
【請求項１９】
前記第５のコード部は、前記自動ＩＤ追跡システムの指定された要素と通信するように適合されているアダプタをロードするための第６のコード部を含むことを特徴とする請求項１８に記載の装置。
【請求項２０】
前記自動ＩＤ追跡システムは、前記アイテムデータを複数の追跡デバイスから自動的に収集する機能を有し、前記アイテムデータを、前記自動ＩＤ追跡システムに関連付けられている企業アプリケーションおよびユーザインターフェース、ならびに前記自動ＩＤ追跡システムで利用できるようにするために前記アイテムデータを処理する機能をさらに有することを特徴とする請求項１７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この説明は、自動ＩＤ追跡システム（auto-id tracking system）に関する。
【背景技術】
【０００２】
自動識別（自動ＩＤ）システムは、例えば製造、購入もしくは販売される製品に関する、または商取引上で使用される製品に関する情報を識別するため、もしくは取得するために使用される。例えばバックオフィスにある箱などの対象物に関する情報は、その箱に貼られたタグまたはその他の識別子と関連付けて保存することができ、および／または一意の識別子とともにタグ付けされた物は小売店の棚に配置できる。そのようにして、読み取り機やセンサなどの何らかの種類のデバイスを使用して、識別子を利用する物体を識別し、それによって、例えばその物のブランド名、または、その物の有効期限など、コンピュータシステム内に保存されているその箱または物に関する情報を判別し、取り込み、使用することができる。
【０００３】
自動ＩＤシステムの一例として、ＲＦＩＤ（Ｒａｄｉｏ−Ｆｒｅｑｕｅｎｃｙ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）システムが知られている。一般にＲＦＩＤとは、ＲＦＩＤタグまたはトランスポンダ内のアンテナに付随されたマイクロチップ上に一意の番号（および／またはその他の識別情報）が保存される技術を指す。読み取り機を使用してアンテナと通信し、マイクロチップから一意の番号を取得し、それによって、その一意の番号に関連付けられている情報を取得する。ＲＦＩＤは高速であり、かつ無線を利用しているので、見通し線上に置かなくても、読み取り機とタグとの間の通信が可能であり、人がデータを入力する必要がない、または必要性を少なくする。その結果、ＲＦＩＤは、例えば店舗または倉庫内でタグ付けされた物を識別し、ＲＦＩＤタグの付いた自動車によって通行料金を自動的に支払い、および／または立ち入り制限エリアへ入る許可を受けた人員を識別するなど、多くの用途で使用することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
その他のタイプの多くの自動ＩＤシステムデバイスが存在する。その例として、二次元バーコードスキャナ、スマートカードデバイス／読み取り機、音声認識システム、光学式文字認識システム、および生体情報システム（例えば、網膜のスキャンおよび指紋のスキャン）が挙げられる。このようなシステムの多くまたはすべては、コストを削減し、効率を上げ、データの正確さを向上させ、（単一のアイテム／オブジェクトのレベルにさえ至る）さらにきめ細かいデータを提供することによって、企業システムの運用において顧客満足度を高め、または高める可能性がある。
【課題を解決するための手段】
【０００５】
一般的な一態様によれば、システムは、アイテムを追跡管理するための自動ＩＤ追跡システムに関連してアイテムデータを受信する機能を有する自動ＩＤノード（auto-id node）と、データ処理モジュールの動作中および自動ＩＤノードの動作中にアイテムデータを処理するための処理コンポーネントを実装する機能を有する自動ＩＤノード内のデータ処理モジュールと、アイテムデータに基づいて複数のコンポーネントから処理するコンポーネントを決定する機能を有するコンポーネントマネージャと、データ処理モジュールおよび自動ＩＤノードの動作中に処理コンポーネントをデータ処理モジュールへロードする機能を有するコンポーネントローダとを備える。
【０００６】
実施形態には、次の特徴のうちの１つまたは複数を含めることができる。例えばデータ処理モジュールは、自動ＩＤ追跡システム内のアイテムデータを処理する機能を有することができるコアサービスモジュールを含むことができる。コンポーネントローダは、処理コンポーネントに関連付けられている構成設定に基づいて処理コンポーネントを決定するための命令をコンポーネントマネージャへ出力する機能を有することができる構成ファイルを含むことができる。データ処理モジュールは、自動ＩＤノードと、自動ＩＤ追跡システムのその他の要素との間の通信を処理する機能を有することができる統合モジュールを含むことができる。
【０００７】
処理コンポーネントは、自動ＩＤ追跡システムの指定された要素と通信するように適合できるアダプタを含むことができる。このアダプタは、このアダプタと、指定された通信プロトコルを含むことができる指定された要素との間のデータ伝送を管理する機能を有することができるコミュニケータ、および、処理コンポーネントによって使用される第１のデータフォーマットと、指定された要素によって使用される第２のデータフォーマットとの間のデータ変換を管理する機能を有することができるデータコンバータとを含むことができる。
【０００８】
処理コンポーネントは、アクティブに実施されている可能性のある第１の処理タスクを実行するためのアクティブインスタンスと、アクティブに実施されていない可能性のある第２の処理タスクを実行するためのパッシブインスタンスとに関連付けることができる。複数の処理コンポーネントのうちの１つまたは複数のその他のパッシブインスタンスと共に、処理コンポーネントのパッシブインスタンスを保存するためのプールが存在することができる。
【０００９】
データ処理モジュールは、第２の処理タスクをアクティブに実施されていない状態からアクティブに実施されている状態へ変更するという決定に基づいて、プールにあるパッシブインスタンスをアクティブ化し、そのパッシブインスタンスを第２のアクティブインスタンスとして実施する機能を有することができるインスタンスマネージャを含むことができる。
【００１０】
インスタンスマネージャは、第１の処理タスクをアクティブに実施されている状態からアクティブに実施されていない状態へ変更するという決定に基づいて、第２のパッシブインスタンスとしてプールに保存するために、アクティブインスタンスを非アクティブ化する機能をさらに有することができる。コンポーネントマネージャまたはコンポーネントローダが選択する際の選択元となる複数の処理コンポーネントを保存する機能を有することができるコンポーネントリポジトリが存在することができる。
【００１１】
別の一般的な態様によれば、アイテムを追跡管理するための自動ＩＤ追跡システムにおける自動ＩＤノードにおいて、アイテムデータが受信される。このアイテムデータを分析して、このアイテムデータを処理するための処理コンポーネントを複数のコンポーネントの中から決定する。この処理コンポーネントは、データ処理モジュールの動作中および前記自動ＩＤノードの動作中にデータ処理モジュールへロードされ、この処理コンポーネントによってアイテムデータが処理される。
【００１２】
実施形態には、次の特徴のうちの１つまたは複数を含めることができる。例えば処理コンポーネントをデータ処理モジュールへロードする際に、この処理コンポーネントは、自動ＩＤノードと、自動ＩＤ追跡システムのその他の要素との間の通信を処理する機能を有することができる統合モジュールへロードすることができる。処理コンポーネントをデータ処理モジュールへロードする際に、自動ＩＤ追跡システムの指定された要素と通信するように適合できるアダプタをロードすることができる。
【００１３】
アクティブに実施されている可能性のある第１の処理タスクを実行するための処理コンポーネントのアクティブインスタンスをロードすることができ、アクティブに実施されていない可能性のある第２の処理タスクを実行するための処理コンポーネントのパッシブインスタンスを保存することができる。
【００１４】
第２の処理タスクを、アクティブに実施されていない状態からアクティブに実施されている状態へ変更するという決定に基づいて、パッシブインスタンスを第２のアクティブインスタンスとして実施するためにプールにあるパッシブインスタンスをアクティブ化することができ、第１の処理タスクを、アクティブに実施されている状態からアクティブに実施されていない状態へ変更するという決定に基づいて、第２のパッシブインスタンスとしてプールに保存するためにアクティブインスタンスを非アクティブ化することができる。
【００１５】
別の一般的な態様によれば、装置は、命令を格納している記憶媒体を含む。これらの命令は、アイテムを追跡管理するための自動ＩＤ追跡システムにおける自動ＩＤノードにおいてアイテムデータを受信するための第１のコード部と、そのアイテムデータを分析して、そのアイテムデータを処理するための処理コンポーネントを複数のコンポーネントの中から決定するための第２のコード部と、データ処理モジュールの動作中および自動ＩＤノードの動作中に処理コンポーネントをデータ処理モジュールへロードするための第３のコード部と、その処理コンポーネントによってアイテムデータを処理するための第４のコード部とを含む。
【００１６】
実施形態には、次の特徴のうちの１つまたは複数を含めることができる。例えば第３のコード部は、自動ＩＤノードと、自動ＩＤ追跡システムのその他の要素との間の通信を処理する機能を有することができる統合モジュールへ処理コンポーネントをロードするための第５のコード部を含むことができる。この第５のコード部は、自動ＩＤ追跡システムの指定された要素と通信するように適合できるアダプタをロードするための第６のコード部を含むことができる。
【００１７】
自動ＩＤ追跡システムは、アイテムデータを複数の追跡デバイスから自動的に収集する機能を有することができ、それらのアイテムデータを、自動ＩＤ追跡システムに関連付けられている企業アプリケーションおよびユーザインターフェース、ならびに自動ＩＤ追跡システムで利用できるようにするためにそれらのアイテムデータを処理する機能をさらに有することができる。
【００１８】
添付の図面、および以下の記載において、１つまたは複数の実施形態の詳細について説明する。さらなる特徴、態様、および利点については、その説明、図面、および特許請求の範囲から明らかになるであろう。
【００１９】
様々な図面における類似の参照番号および記号は、類似の要素を示している。
【発明を実施するための最良の形態】
【００２０】
図１は、自動ＩＤシステム１００のネットワークの図である。図１に示すように、複数の企業アプリケーションには、例えばサプライチェーン管理アプリケーション１０２が含まれ、企業はこれを使用して、その企業の製品またはサービスの製造／購買、発送、および販売のプロセスを監視することができる。資産追跡管理システム１０４を使用して、例えばその企業がどの資産（例えば棚卸資産）を利用できるか、もしくは利用できないか、または求めているかを判断するために、１つの現場や１つの組織の中で、もしくは、その全体にわたって、または複数の組織にわたって、複数の資産を監視および追跡管理することができる。倉庫管理アプリケーション１０６は、倉庫に関する受け入れ、保管、選択、および発送の側面を監視するために使用することができる。分析システム１０８は、例えば消費者の要求に対応するスピード、盗難から生じる損害、あるいは企業の収益または運営に影響を与える可能性のあるその他の要因など、企業の運営の側面を定量化するために使用することができる。
【００２１】
図１に示す企業アプリケーションの例は、企業システムに共通するデータを企業が収集、共有、および活用する必要性を示している。例えばサプライチェーン管理アプリケーション１０２は、資産管理アプリケーション１０４内のデータに基づいて、特定のタイプの資産をどの程度その時点で利用できるかを知る必要が生じる可能性がある。分析システム１０８は、例えば（倉庫の使用方法または配送遅延の理由などの）遂行能力上の課題、（製品の偽造パターンなどの）問題、および対象物（アイテム、ケース、パレット）の全般的な認知方法（general visibility）を見い出すために、自動ＩＤミドルウェア、および、さらにはその他のアプリケーション１０２、１０４、または１０６からデータを抽出することができる。分析システム１０８は、ポータルシステムを介して、見い出した結果を報告することができる。
【００２２】
例えば上述したような企業アプリケーションによって共有および活用されるデータの多くは、企業システムによって購入および／または販売される製品またはサービスに関連している。図１に示すように、これらの製品またはサービスに関する情報は、ミドルウェアインフラストラクチャ１１０を使用することにより、それらのアプリケーションによって取得され、ミドルウェアインフラストラクチャ１１０は、購入および／または販売される製品およびサービスに関する情報を自動的に取得および共有するための自動識別（自動ＩＤ）システムを実装している。
【００２３】
一般に自動ＩＤシステムは、前述のように、企業によって販売または使用される製品に関する情報を自動的に収集して活用できるようにし、識別子と、それらの識別子に関する情報を取得するための読み取り機とを備える。図１に示すように、自動ＩＤ要素の例には、バーコード読み取り機／プリンタ１１２が含まれており、これを使用して、物に貼られる（ことになる）バーコードラベルを読み取ったり、あるいは印刷したりすることができる。ＲＦＩＤ読み取り機／プリンタ１１４が示されており、上記のＲＦＩＤシステムの説明から理解できるように、これを使用して、物に取り付けられたＲＦＩＤタグから情報を読み取ったり、あるいはそのＲＦＩＤに情報を割り当てたりすることができる。センサ１１６は、例えば環境センサ（例えば温度計）、あるいは音声センサまたは光学式文字認識センサとすることができる。モバイル読み取り機１１８は、その名前が示すように、例えばＲＦＩＤタグまたはその他の自動ＩＤ識別子を検知するためにユーザが携帯できる読み取り機である。最後に、図１に示すＰＬＣ（Ｐｒｏｇｒａｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）デバイスは、オン／オフ制御、タイミング、ロジック、計数および順序付けなどの用途に使用されるデジタルコントローラであり、以下でさらに詳しく説明するように、これをデバイスコントローラシステムによって制御することもできる。
【００２４】
そして、図１に示すように、自動ＩＤデバイス／システム１１２〜１２０のいずれかによって取得された情報は、すべての企業アプリケーション１０２〜１０８の間で伝達、共有、および使用することができる。このようにして、企業は、その運営の全範囲にわたって、基本的にリアルタイムな情報を取得し、使用することができる。さらに、企業は、情報を他の企業と共有することができる。例えばサプライチェーン管理アプリケーション１０２は、第１の企業（例えば小売店）に関連付けることができ、その一方で倉庫管理アプリケーションは、第２の企業（例えば製造業者）に関連付けることができる。自動ＩＤデバイス／システム１１２〜１２０から情報を取得し、ミドルウェアインフラストラクチャ１１０を介してこの情報およびその他の情報を共有することによって、２つの企業は、それぞれの運営の双方において効率を高めることができる。
【００２５】
図２は、図１の自動ＩＤ機能を例示するシステム２００のブロック図である。図２に示すように、企業アプリケーション２０２は、上述の様々なアプリケーション１０２〜１０８に加えて、その他の様々な企業アプリケーションを含むことができる。
【００２６】
自動ＩＤインフラストラクチャ２０４は、図１に示したミドルウェアインフラストラクチャ１１０の一部または全体に相当する。詳細には、自動ＩＤインフラストラクチャ２０４は、自動ＩＤノード２０６、２０８、および２１０を含む。自動ＩＤノード２０６、２０８、および２１０は一般に、自動ＩＤデバイス１１２〜１２０によって取得される情報を既存のビジネスロジックまたはデータに関連付けるように設計されている規定位置のノードである。さらに、自動ＩＤノード２０６、２０８、および２１０を使用して、自動ＩＤデバイス／システム１１２〜１２０によって追跡管理されている製品または物に関する履歴情報を保存することができる。このような履歴情報には、例えば特定の時点におけるステータス情報、物の位置、追跡管理されている（１つまたは複数の）物に関する環境情報、および所望の目的のために収集され取りまとめられている複数の物に関する情報を含めることができる。
【００２７】
自動ＩＤノード２０６、２０８、および２１０は、企業の全体に、または複数の企業にわたって戦略的に配置することができる。例えば自動ＩＤノード２０６は製造現場に配置することができる一方で、自動ＩＤノード２０８は製品配送現場に配置することができ、自動ＩＤノード２１０は小売店に配置することができる。このようにして、自動ＩＤノードの実際の設定に固有の情報は、その特定のノードにおいてのみ取得および保持することができる。
【００２８】
例えば小売店における自動ＩＤノード２１０は、その小売店の棚にある１つの商品または複数の商品の小売価格を追跡管理することに関与している可能性がある。このような情報は、製造現場における自動ＩＤノード２０６にとっては役に立たないかもしれないが、配送現場における自動ＩＤノード２０８にとっては部分的に役に立つ可能性がある。例えば配送現場２０８における自動ＩＤノードは、商品の小売価格には関与していないかもしれないが、その時点で棚に置かれている複数の商品に（在庫補充の目的で）関与している場合がある。
【００２９】
同様に、別々の現場で行われるビジネスプロセスおよびビジネスロジックには、局在する自動ＩＤノード２０６、２０８、および２１０を使用する効果が認められる可能性がある。例えば小売店の自動ＩＤノード２１０は、物の盗難を防止するためのワークフローを備えることができ、一方、製造現場の自動ＩＤノード２０６では、特定の時間枠内に製造される物の数量を監視することができる可能性がある。したがって、システム２００は、局在する自動ＩＤノードの分散型ネットワークを使用することによって、より効率的に、また様々な現場のユーザにとって、より有用な方法で情報を処理することができる。
【００３０】
システム２００内の各自動ＩＤノードは一般に、１つまたは複数のデバイスコントローラを備え、図２に示すように、デバイスコントローラ２１２、２１４、および２１６は、配送現場の自動ＩＤノード２０８に関連付けられている。もちろん自動ＩＤノード２０６、２０８、および２１０の各々が備えるデバイスコントローラの数は、さらに少なくすることも多くすることもでき、あるいは自動ＩＤノードはデバイスコントローラをまったく使用しなくてもよい。
【００３１】
一例としてデバイスコントローラ２１４を参照すると、図２は、デバイスコントローラ２１４を使用して自動ＩＤデバイス１１２〜１２０の一部またはすべての動作を監視および調整できることを例示する。もちろんデバイスコントローラ２１２および２１６を使用して、それらのデバイスコントローラに接続できる類似の自動ＩＤデバイスの動作を監視することもできる。
【００３２】
より具体的には、デバイスコントローラ２１４を使用して、自動ＩＤデバイス１１２〜１２０からのデータを処理し、関連付けられている自動ＩＤノード２０８の効率を高めることができる。例えばこのようなデバイスコントローラは、無関係な情報を除去することができ、あるいは自動ＩＤノード２０８の配送機能にとって有用な方法で、および／または企業アプリケーション２０２にとって有用な方法で、自動ＩＤノード２０８によって指定されるようにデータを結合または修正することができる。
【００３３】
このようにデバイスコントローラ２１４は、例えば自動ＩＤノード２０８からの命令に基づいて、自動ＩＤデバイス１１２〜１２０を調整および管理し、（処理された）情報を自動ＩＤデバイスから自動ＩＤノード２０８へ中継する。例えば自動ＩＤノード２０８を使用して、物２１８（例えば、販売用として小売業者に配送される玩具またはその他のアイテム）に関して特定のクラスのデータ（例えば数量など）を取得するようデバイスコントローラ２１４に指示することができる。次いで、デバイスコントローラ２１４は、ＲＦＩＤ読み取り機／プリンタ１１４を使用して、物２１８に関連付けられているタグ２２０からこの情報を取得することができ、このとき同時に取得される不要な情報をすべて除去してから、自動ＩＤノード２０８にとって一定数の物が利用可能であるという情報を伝達することができる。
【００３４】
別の例として、自動ＩＤノード２０８は、物２１８に情報を割り当てるようデバイスコントローラ２１４に指示することができる。例えばデバイスコントローラ２１４は、ＲＦＩＤ読み取り機／プリンタ１１４を使用して、（例えば特定のクラスの物に取り付けられているＲＦＩＤタグ２２０上に、またはそのＲＦＩＤタグ２２０と関連付けて、新たな価格情報を保存するために）物２１８の現在の価格を変更することができる。
【００３５】
デバイスコントローラ２１２、２１４、および２１６の各々を使用して、その関連付けられている自動ＩＤデバイスおよび／または周辺デバイス１１２〜１２０のすべてに関するデータをフィルタにかけ、集約し、書き込み、あるいは操作することができるが、それとまったく同様に、自動ＩＤノード２０８は、関連付けられているデバイスコントローラ２１２、２１４、および２１６に関するデータをフィルタにかけ、集約し、割り当て、あるいは操作するように機能するということが、図２から理解できるはずである。このようにして、自動ＩＤノード２０８は、デバイスコントローラ２１２、２１４、および２１６からの情報を、企業アプリケーション２０２のうちの１つまたは複数の企業アプリケーション上で使用できるビジネスプロセスと統合することができる。
【００３６】
その延長として考えれば、企業アプリケーション２０２は、自動ＩＤノード２１６、２１８、および２１０のすべてからの情報を集約するように機能するということが分かる。さらに、システム２００の一レベルで役に立つ情報が別のレベルでは役に立たない可能性もあるということが理解できるはずである。例えば企業アプリケーション２０２は、読み取り機／プリンタ１１４によって収集される低いレベルの（例えばアイテムレベルの）情報には関与していないかもしれないし、あるいはそうした情報を既に利用できるのかもしれない。むしろ、その企業アプリケーション２０２は、その情報がデバイスコントローラ２１４および／または自動ＩＤノード２０８によってフィルタにかけられるか、および／または集約される範囲内でその情報に関与しているだけかもしれない。
【００３７】
説明したアーキテクチャによって、企業アプリケーション２０２および／または複数の企業アプリケーションにより得られるビジネスロジックは、自動ＩＤミドルウェア１１０内で対応できるということが理解できるはずである。さらに、このような複数の企業アプリケーションは、それらの企業アプリケーションのすべてに共通する単一の物理的なハードウェアシステムおよび単一の自動ＩＤミドルウェアと共に提供することができる。
【００３８】
図３は、図２に示した自動ＩＤインフラストラクチャ２０４と共に使用するためのネットワーク構造３００のブロック図である。より詳細には、図３は、自動ＩＤシステムと共に使用するために開発されたＥＰＣ（Ｅｌｅｃｔｒｏｎｉｃ  Ｐｒｏｄｕｃｔ  Ｃｏｄｅ）と共に図２に示した自動ＩＤインフラストラクチャ２０４を使用できる構造を例示する図である。
【００３９】
ＥＰＣとは、複数の組織および企業が、そのそれぞれの製品、商品もしくはサービス、またはそれらの集合体（例えばパレット、ケース、またはトラックの積荷）を一意に指定および識別する際に使用することを合意した事前に規定されたフォーマットおよびスキームを有する一意の番号であり、ＵＰＣ（Ｕｎｉｆｏｒｍ  Ｐｒｏｄｕｃｔ  Ｃｏｄｅ）識別子に類似したものである。そしてＲＦＩＤシステムの状況では、図２に示した物２１８上のタグ２２０にＥＰＣを割り当てることができる。ＥＰＣは、通常、例えば（様々なフォーマットを区別するための）ヘッダフィールド、製造フィールド（ＥＰＣを割り当てるそれぞれの組織は、固有の製造フィールドを有する）、製品フィールド（製品コード）、および（製品に付けられる）シリアルナンバーという４つのフィールドによって規定される。
【００４０】
図３に示すように、ＥＰＣ情報サービス（ＥＰＣＩＳ）層３０２により、ネットワークを介してＥＰＣデータのやり取りが可能となる。すなわちＥＰＣＩＳは、標準的なフォーマットまたはプロトコルを提供し、これによって、ＥＰＣの番号を識別した読み取り機は、その番号に関する情報（したがって、その関連付けられているアイテムに関する情報）を見つけて使用することができる。一部には、上述のようにビジネスレベルのＥＰＣ情報を転送して使用するために、例えばＰＭＬ（Ｐｈｙｓｉｃａｌ  Ｍａｒｋ−ｕｐ  Ｌａｎｇｕａｇｅ）および／またはＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋ−ｕｐ  Ｌａｎｇｕａｇｅ）などの言語を使用することができる実施形態がある。
【００４１】
ＥＰＣＩＳ層３０２は、アプリケーションマネージャ３０４から情報を受信し、このアプリケーションマネージャ３０４は一般に、情報イベント（例えばタグの読み取り）を監視し、それらのイベントを管理してＥＰＣＩＳ層３０２へ伝達し、それによってＥＰＣＩＳリポジトリ３０６へ伝達するようにすることができる。アプリケーションマネージャ３０４は、リポジトリ３０６が何らかの特定のアプリケーションまたはデバイスにとってすぐには役に立たないかもしれないデータでも比較的長い時間にわたって蓄積するようにして、リポジトリ３０６を監視および構成することができる。一般的に言えば、複数の対象物に関する情報の流れは、リポジトリ３０６にとっては大きすぎて、リアルタイム処理において、具体的にはネットワーク遅延が発生する可能性がある場合、実質的に役に立たない可能性がある。むしろ、図２に示した自動ＩＤノード２０８を使用して、例えば一定の時間にわたって、自動ＩＤノード２０８にとってすぐに役に立つ可能性のある情報を追跡管理することができる。
【００４２】
アプリケーションマネージャ３０４およびＥＰＣＩＳ層３０２は、オブジェクトネーミングサービス（ＯＮＳ）にアクセスすることができるが、これは、ドメインネームサービス（ＤＮＳ）と同様の検索サービスであり、これによってアプリケーションマネージャ３０４およびＥＰＣＩＳ層３０２は、製品に対するＥＰＣコードに基づいてその製品に関する情報を見つけることができる。ＯＮＳ３０８は、様々なレベルの情報を有することができ、それらの情報は、例えばその製品にとってその情報が局所的に保存されるか、または全体的に保存されるかによって分類することができる。
【００４３】
アプリケーションレベルイベント（ＡＬＥ）インターフェース層３１０は、デバイスマネージャ３１２およびデバイスコントローラ２１４へのインターフェースを提供する。より具体的には、ＡＬＥインターフェース層３１０を使用して、デバイスマネージャ３１２および／またはデバイスコントローラ２１４から情報イベントを受信する際に、それらの情報イベントをフィルタにかけたり、または集約したりすることができる。デバイスマネージャ３１２を使用して、デバイスコントローラ２１４の状態および／または構成を管理することができる。
【００４４】
また図３に示すように、リーダプロトコルインターフェース層３１４は、デバイス１１４に対してインターフェースを提供する。すなわち、様々な企業は、様々なタイプのデバイス１１４、またはその他の自動ＩＤデバイスを使用することができ、これらのデバイスおよび企業は、読み取り機と通信するための様々なリーダプロトコルを利用できることが理解できるはずである。リーダプロトコルインターフェース３１４は、システム３００内のすべての読み取り機と通信できるように設計されている。
【００４５】
システム３００は、図２に示した自動ＩＤインフラストラクチャ２０４がなくても使用することができ、逆に、図２に示した自動ＩＤインフラストラクチャ２０４は、図３に示したその他の要素がなくても使用できるということが、図３から理解できるはずである。したがって、図３は、図２に示した自動ＩＤインフラストラクチャ２０４は、ＥＰＣネットワークおよび標準と共に使用することができるが、ＥＰＣネットワークおよび標準を使用することは必須ではないということを示唆している。
【００４６】
図４は、図２および／または図３に示した（１つまたは複数の）自動ＩＤノード２０６、２０８、および２１０のブロック図である。図４に示すように、コアサービスモジュール４０２は、以下でさらに詳しく説明するとおり、例えば自動ＩＤノード２０８の詳細な処理を実行し、一方、様々な統合モジュール４０４、４０６、４０８、および４７０は、外部の機能、ユーザ、およびサービスと関連するコアサービスモジュール４０２の通信、構成、および管理の詳細な処理を実行する。
【００４７】
例えばバックエンドシステム統合層４０４は、自動ＩＤノード４００と、例えば図１に示したアプリケーション１０２〜１０８または図２に示したアプリケーション２０２などのバックエンドシステムとの間の通信を処理する。
【００４８】
デバイス統合層４０６は、自動ＩＤノード４００とデバイスとの間の通信を処理する。例えばデバイス統合層４０６は、図２に示したノード２０８とデバイスコントローラ２１４との間の通信を可能にすることができる。デバイス統合層４０６は、追跡デバイス１１２〜１１８のうちの１つまたは複数と直接の通信を可能にすることができるような実施形態もある。
【００４９】
人的統合層（human integration layer）４０８は、自動ＩＤノード４００とユーザインターフェースとの間の通信を処理する。例えば自動ＩＤノードの操作者は、ユーザインターフェースを介して特定のタスクを実行するように自動ＩＤノードを構成したり、あるいはその自動ＩＤノードが受信する情報を監視したりすることができる。操作者は、例えば予期せぬイベントまたは異常が生じた場合、自動ＩＤノードから警告メッセージを受け取ることもできる。さらに、自動ＩＤノード４００のセキュリティを監視することができ、これによって、許可された人員のみが自動ＩＤノード４００を使用することができる。
【００５０】
ノード統合層４７０は、自動ＩＤノード４００と他の自動ＩＤノードとの間の通信を処理する。例えば近隣の複数の自動ＩＤノードが協働して、１つの対象物に関する経路情報を提供するために、またはその対象物の追加単位を購入または保管すべきかどうかを判断するために、流通網またはサプライチェーンを介してその対象物を追跡管理することができる。
【００５１】
ノード統合層４７０については、バックエンドシステム統合層４０４、デバイス統合層４０６、および人的統合層４０８と共に、以下の「統合層」の項でさらに詳しく説明する。
【００５２】
コアサービスモジュール４０２は、アクティビティおよびプロセス管理モジュール４１０を備える。アクティビティおよびプロセス管理モジュール４１０は、例えば図２に示したＲＦＩＤ読み取り機１１４によって（例えば）物２１８のタグ２２０からタグ情報が読み取られる、読み取りまたは追跡管理イベントなど、対象物の履歴にあるイベントに関連付けられている情報を分析する。次いで、アクティビティおよびプロセス管理モジュール４１０は、この情報を、その特定の対象物に関連している既知の情報と照合する。
【００５３】
例えば、以下でさらに詳しく説明するように、追跡管理される各々の物は、１つまたは複数のビジネスプロセスに関連付けることができ、これは、（１つまたは複数の）ビジネスプロセスモデル、あるいは（１つまたは複数の）ワークフローなどとも呼ばれる。このようなプロセスは一般に、１つの対象物が、そのライフタイムの一部またはすべての間に、すなわち製造から配送へ、または配送から小売りへ、あるいは製造から小売りへの間に経験する可能性のある既知の、または予想される起こり得ることをすべて記述する。この意味において、自動ＩＤノードは、特定の自動ＩＤノード４００の役割に応じて、特定の物に関するライフタイム情報のすべてを必要とする場合もあり、あるいはライフタイム情報の一部のサブセットのみを必要とする場合もある。
【００５４】
したがって、実際の現在のイベント情報（例えば、読み取り機１１４によってタグ２２０から読み取られた情報）と、以前に検知されたイベント情報ならびに（関連するビジネスプロセスモデルから得られた）予想されるイベント情報とを組み合わせることによって、自動ＩＤノード４００は、追跡管理される（１つまたは複数の）対象物の状態を判断することができる。このようにして、自動ＩＤノード４００は、効率的かつ費用対効果の高い方法で、人間の介入または監督を最小限に抑えつつ、サプライチェーンあるいはその他の一部のビジネスモデル（例えば、顧客による商品の返品）を通して、１つの対象物を移動させることができる。
【００５５】
アクティビティおよびプロセス管理モジュール４１０は、イベントメッセージディスパッチャ４１２を備える。イベントメッセージディスパッチャ４１２は、様々なソースからイベントを受信するが、上述したように、このイベントという用語は一般に、例えば図１に示した追跡デバイス１１２〜１１８のうちの１つまたは複数によるアクティビティによって引き起こされる事象を指すことができる。
【００５６】
一部の実施形態において、このようなイベントは、イベントメッセージディスパッチャ４１２において任意の数のソースから受信するソフトウェア／データパケットとして表すことができる。イベントは、追跡デバイス１１２〜１１８に加えて、人的統合モジュール４０８を経由してローカルの操作者からも受信することができる。イベントは、例えばバックエンドシステム４０４から、あるいは別の自動ＩＤノードから受信することもできる。
【００５７】
イベントのこれらの様々なソースにおいて、様々なイベントを記述する際に同じまたは類似したフォーマットを共通して使用することができる。例えばイベントの様々なソースは、普遍的なイベント記述子プロトコル（universal event descriptor protocol）を使用して、イベントを記述することができる。イベントの記述には、例えば指定された対象物識別子、イベントタイプ（例えばＲＦＩＤの読み取りイベント）、イベントソース（例えばＲＦＩＤ読み取り機１１４）、タイムスタンプ、イベントソースの位置、イベントサブジェクト識別子、あるいはその他の情報を含めるようにすることができる。
【００５８】
１つの具体例として、読み取りデバイス１１４は、「ａｂｃｄ１２３４」というＩＤを有するＲＦＩＤ読み取り機から、時刻「２００４年１２月２１日、午前１０時２３分」に関連付けられ、スキャンされた対象物について一意の固有の識別子を有する「スキャニング」というタイプのイベントを送信することができる。このようにして、様々なソースからのイベントは、イベントメッセージディスパッチャ４１２において互換性のあるフォーマットで受信することができ、これによってイベントメッセージディスパッチャ４１２は、イベントの（１つまたは複数の）ソースにかかわらず、同じまたは類似した方法で受信イベントを処理することができる。
【００５９】
イベントメッセージハンドラ４１２は、上記の情報あるいはその他の情報の一部またはすべてを分析し、それに応じて１つまたは複数のアクティビティハンドラ４１４または４１６に受信イベントを振り分ける。例えばイベントは、イベントのタイプ（例えばデバイス読み取り機のイベント、または近隣の自動ＩＤノードのイベント、あるいはバックエンドシステムのイベント）、イベントの時間（例えば、そのイベントは日中のイベントか、または夜間のイベントか）、あるいはそのイベントの処理をアクティビティハンドラに委任できる実際上のその他の任意の基準に基づいて、他のアクティビティハンドラ４１４／４１６のうちの１つに振り分けることができる。
【００６０】
アクティビティハンドラ４１４／４１６は、そこに含まれるイベントに関する情報を、そのイベントに関連していて必要な場合にアクセスできる任意の既知のデータと共に分析し、この情報を、そのイベントの対象物に関連付けられている確立された（１つまたは複数の）ビジネスプロセスと比較する。これを行う際、アクティビティハンドラ４１４／４１６は、そのイベントに応答してその後に１つまたは多数のアクションを起こすべきである場合は、そのような１つまたは多数のアクションを決定することができる。
【００６１】
その後に起こすべきアクションが決定すると、それらのアクションを、自動ＩＤノード４００の外部に伝達して実行することができる。例えば、その後に起こすべきアクションは、統合インターフェース４０４、４０６、４０８、および／または４７０を介して伝達することができる。この方法では、例えば人間の操作者に何らかの操作を実行するよう要求することもでき、または警告を発することもでき、あるいは必要とされる何らかのアクティビティを別の自動ＩＤノード２０４、２０６、２０８（またはバックエンド企業アプリケーション１０２〜１０８／２０２、もしくはデバイス１１２〜１２０）に通知することもできる。アクティビティハンドラ４１４／４１６は、（１つまたは複数の）イベントによって示された変更を反映するために、そして対象物がビジネスプロセス内のどこに位置しているかをより正確に反映するために、その対象物に関する固有の状態および／または追跡管理データを更新することもできる。
【００６２】
対象物に関連付けられるビジネスプロセスは、ルールのセットとして、および／またはその対象物と、おそらくはその他の対象物とに関連付けることができるワークフローモデルの一部として示すことができる。例えばルールは、特定の条件または状況に応答して起こすべき様々なアクションを記述する条件節に類似したものとすることができる。すなわち、ルールは、受信したイベントに関して１つまたは複数の条件が満たされた場合、これに応答して１つまたは複数のアクションを起こすべきであるというように記述することができる。条件のタイプ、意思決定プロセス、および応答アクションについては、以下でさらに詳しく説明する。
【００６３】
このようなルールを実装するために、アクティビティハンドラ４１４はルールエンジン４１８を備え、ルールエンジン４１８は、アクティビティハンドラ４１４においてルールセット４２０および４２２を受信イベントに適用する。ルールエンジン４１８は、自動ＩＤノード４００において受信したイベントに適用されるプログラム可能なルールセットのためのアーキテクチャを提供する。ルールエンジン４１８は、例えば受信したイベントに適用できるルールセット４２０／４２２内の１つまたは複数のルールを検索するための機構を実装することができる。
【００６４】
例えば、ルールエンジンは、（上述したように普遍的なイベント記述子プロトコルでフォーマットを設定できる）イベントを解析することができ、各々のルールセットおよび／またはルールの選択基準を計算して照合し、１つまたは多数の適用可能なルールを見つけることができる。ルールエンジン４１８は、コアサービス４１０のその他の部分に関するアクションを開始することによって、および／またはバックエンドシステム統合層４０４、デバイス統合層４０６、人的統合層４０８、およびノード統合層４７０を介して外部のモジュール、ユーザ、およびサービスに関するアクション要求を伝達することによりルールを実行する機構を有することもできる。
【００６５】
一例として、イベントメッセージディスパッチャ４１２は、ある受信イベントが、特定の場所（例えば倉庫の特定のドッキングベイ）において受け入れられた特定のクラスのデバイスに関連していると判断することができ、そしてそのイベントをアクティビティハンドラ４１４へ振り分けることができ、アクティビティハンドラ４１４に、このようなイベントの処理を割り当てることができる。アクティビティハンドラ４１４は、ルールエンジン４１８内のルールセット４２０がこのタイプのイベントに適用すべき適切なルールセットであることを判断するために、そのイベントが特定の対象物に関連していること、および／またはその他の特徴（例えば、夜間の発送中に発生したこと）を有することを判断することができる。次いで、ルールセット４２０を適用して、受信イベントを分析し、それによって（１つまたは複数の）それぞれのルールの条件節を、そのイベントに関連して受信した情報、ならびに（場合によっては）その他の情報と照合することができ、合致するものがある場合は、そのルールを適用して、そのイベントおよび対応する対象物に対して起こすべきその後のアクションすなわち予想されるアクションを決定することができる。
【００６６】
ルールエンジン４１８は拡張性があるので、このルールエンジンには、その機能に影響を及ぼすことなく、より多くのルールセットを追加することができる。さらに、ルールエンジン４１８は柔軟性があるので、既存のルールセットは、例えば実行時に、あるいは不要になった時点で、削除するかまたは無効にすることができる。
【００６７】
ルールセット４２０は、例えばバックエンドシステム統合モジュール４０４を経由してバックエンドシステムにより、あるいは他のインターフェースモジュール４０６、４０８、または４７０のうちの１つから、アクティビティハンドラ４１４／４１６に割り当てることができる。ルールは、他の自動ＩＤノードから、または図３に示したＥＰＣＩＳリポジトリ３０６から、あるいはその他の何らかのソースから追加することもできる。ルールセット４２０／４２２は、モジュール式であるため、他のルールセットの機能に影響を及ぼすことなく、容易に置換または変更することができる。
【００６８】
上述したように、ルールエンジン４１８は、対象物に固有のイベントを受信し、そのイベントに関連付けられている対象物に対してその後のアクションすなわち予想されるアクションがある場合は、そうしたアクションを決定するために、そのイベントを１つのビジネスプロセスに関連付ける。これを行う際、ルールエンジン４１８は、照合オペレーションを実行する上で役に立つ可能性のあるさらなるデータにアクセスすることができる。詳細には、コアサービス４０２内では、関連データ管理モジュール４２３は、アクティビティおよびプロセス管理モジュール４１０と通信し、ルールエンジン４１８によってルールセット４２０および４２２を実施する上で役に立つ可能性のあるデータおよびサービスを保存する（または、それらのデータおよびサービスにアクセスする）。
【００６９】
例えば関連データ管理モジュール４２３は、アクティビティハンドラ４１４、４１６と密接に連動して、各々のイベントオブジェクトのライフサイクル、あるいはその一部を追跡管理することができ、受信イベントに応答して、イベントオブジェクトの状態をリアルタイムで更新することができる。例えば関連データ管理モジュール４２３は、例えば製造から小売りへ、あるいは対象物が返品されてから再製品として小売り用に再梱包されるまで、対象物がそのライフサイクルを進むのに応じて、その対象物に関するデータを有することができる。
【００７０】
関連データ管理モジュール４２３は一般に、（１つまたは複数の）特定の対象物に関して２つのクラスのデータを追跡管理する。具体的には、動的データは、時間の経過と共に変化していくデータ、または変化することが予想できるデータ、あるいは関連付けられている対象物が時間の経過と共に移動するにつれて変化していくデータを指す。逆に静的データは、一般に時間の経過と共に変化しないデータ、あるいはまれにしか変化しないデータを指す。追跡管理されている対象物および（１つまたは複数の）ビジネスプロセスに応じて、様々なパラメータを動的または静的とみなすことができる。例えば対象物の位置は動的とみなすことができ、その一方で対象物の色または重量は一般に静的とみなすことができる。しかし特に製造プロセスの間は、対象物の色を変更することが可能であり、この場合、色は動的な特質とみなすことができる。
【００７１】
したがって動的データは、所定のライフサイクルまたは時間軸を通じて物が移動するのに応じ、その対象物を示すものである。例えば動的データは、予想されるアクション４２４、現状４２６、および履歴４２８という３つのコンポーネントを含むものとして図４に一般的に示されている。予想されるアクション４２４は、１つのイベントに関する、予想されるその後のイベント、あるいは起こり得るその後のイベントを有する。したがって、現状４２６は、１つのイベントの現状を有することができ、履歴４２８は、そのイベントオブジェクトが経験した過去のイベントのリストを有することができる。
【００７２】
これらのコンポーネントは動的であるため、関連付けられているデータは、対象物に関して受信するイベントに応答して修正することができる。例えば３つのコンポーネント４２４、４２６、４２８は、イベントを受信するたびに、アクティビティハンドラ４１４、４１６によって更新することができる。具体的には、あるイベントによって、発送センタにおける対象物の受け取りが行われる場合、その対象物の現在の状況は、現状４２６において「配送中」から「受け取り済」へと変更することができる。次いで、それまで現状として入力されていたデータは、その物の配送履歴（例えば、配送中に通った経路）を示すために、履歴４２８へと移動することができる。予想されるアクション４２４における「受け取り済」という予想されるアクションは、現状４２６として再指定され、ルールエンジン４１４は、ルールセット４２０を使用して、その時点でまだ予想されるアクション４２４内に存在する予想されるアクションのうちのどれを次に実行すべきか（例えば、店の棚に保管するために物を降ろすこと）を決定することができる。
【００７３】
したがって、動的データは、少なくとも特定の対象物に関してイベントが受信される回数分だけ変化する可能性がある。イベントの数および頻度は、一般に読み取り機の数および利用可能度に関連しているため、理論上の限界内であれば、そのライフタイムにわたり十分な数の読み取り機によって継続的に追跡管理される対象物は、継続的に変化する動的データを有することができる。
【００７４】
対照的に、静的データは、データベースまたはメモリ内の関連データ管理モジュール４２３内に保存され、これらは一般に、定期的または継続的に更新する必要があるとは考えられていない。むしろ、関連データ管理モジュール４２３は、外部のソースと通信して、静的データを定期的または準定期的に更新することができる。したがって、このような静的データは一般に、イベントに応答して変化するとは予想されていない（しかし状況によっては、変化する可能性もある）。
【００７５】
例えば位置データベース４３０は、発送センタの住所に加えて、その発送センタに届けられる配送品の発送元となり得る場所の住所を有することができる。一部の位置情報（例えば、配送中の物の現在位置）は動的とみなすことができ、その一方でその他の位置情報（例えば、特定の物が生産された生産施設）は静的とみなすことができることが理解できるはずである。しかし一般に静的情報は、イベントごとには変化しないものと考えられる。
【００７６】
同様に製品データベース４３２は、追跡管理されている製品または物の詳細な説明を含むことができ、この説明には、変化はするが、やはり一般にイベントごとには変化しない説明が含まれる。製品データベース４３２は、このような情報を保存することができ、あるいは、例えば普遍的な製品ＩＤ（例えば、物２１８のタグ２２０から読み取られたＥＰＣコード）を使用して、外部のソースから情報を検索することもできる。
【００７７】
ビジネスプロセスデータベース４３４には、対象物に関連付けられている１つまたは複数のビジネスプロセスを含めることができる。上述したように、ビジネスプロセスとは、対象物のライフタイムを管理するように設計されている、タスク／イベントの定形化されたワークフローまたは進行を指すことができる。例えば、ビジネスプロセスモデルは、製造プロセス用に、または流通プロセス用に、あるいは顧客による欠陥商品の返品プロセス用に定形化することができる。
【００７８】
このような場合、ビジネスプロセスモデルは、複数の対象物の各々のライフサイクルの全体（または大部分）を通じて複数の対象物のライフサイクルを管理するために、抽象的なレベルで、例えばバックエンドシステム２０２において設計することができる。そして（１つまたは複数の）ビジネスプロセスモデルの特定のサブセットまたはインスタンス化を自動ＩＤノード４００において実行または監視することができるので、特定の対象物に関するビジネスプロセスモデルは、その対象物が経験する可能性のあるライフサイクルおよび起こり得る（予想される）イベントを示している。このタイプの実施形態の具体例については、以下で図６に関連して説明する。
【００７９】
その他の例では、このレベルで定義されるビジネスプロセスモデルまたはワークフローが存在しない可能性があり、ルール、動的データ、および静的データによって、対象物の履歴になるビジネスプロセスが暗黙のうちに定義されることになる。
【００８０】
リソースデータベース４３６は、イベントのためのその他のリソースを有することができる。例えば、リソースデータベース４３６は、イベントに応答して求められる任意のアクションを実行する上で利用できるリソースを有することができる。例えば、ある物が倉庫において受け取られ、その物を移送するために特別なデバイスが必要である場合、リソースデータベース４３６は、その倉庫の構内で利用することのできる移送デバイスに関する情報を保存することができる。ライフサイクルを通じて物を管理する上で役に立つ可能性のあるその他のリソースにも同様のことが当てはまるので、一般にアクションが求められているとルールエンジン４１８が判断した場合は常に、そのアクションを実行するためにどのようなリソースを利用することができるかを判断するために、リソースデータベースに問い合わせることができる。
【００８１】
上記の実施形態は、動的データおよび静的データという区分に関して説明したが、この区分は一例に過ぎないことが理解できるはずである。例えばデータベース４３０〜４３６は、静的データに加えて動的データの一部またはすべてを保存するために使用することもでき、この場合、動的に変化するデータによって上記の例よりも高い頻度で単に更新することができる。例えば、上述したように、位置データが動的または静的な位置情報のいずれかを表すことができる限り、位置データベース４３０は、動的および／または静的データを含んでいるものと考えることができることが理解できるはずである。
【００８２】
コアサービス４０２はまた、自動ＩＤノード４００を構成および管理するための構成および運営管理モジュール４４０を備える。例えば運営管理モジュール４４０は、ユーザが複数のルールセット４２０、４２２をアップロードしたり、モジュール４０４〜４０８に関する統合ロジックを管理したり、あるいは（例えば、静的データストレージ４３０〜４３６を更新するために）外部サービスとの接続を確立したりすることを可能にすることができる。最後に、図４に示す保存およびアーカイビング管理モジュール４５０は、コアサービスモジュール４１０のデータを保存し、かつアーカイブの管理をする。例えばモジュール４５０を使用して、使用頻度の低いデータ、あるいは所定の期間に使用されなかったデータをアーカイブに保存することができる。これを行う際、モジュール４５０は、自動ＩＤノード４００において必要とされるリソースを最小限に抑えるために外部のストレージサイトと情報交換することができる。
【００８３】
上記の図４に関する説明は、特定の対象物または対象物のグループを時間軸に沿って行ったものであり、（１つまたは複数の）対象物に対して予想されるアクションを、実際のイベントと照合している。しかしその他のパラメータに関して、ルール、（１つまたは複数の）時間軸、およびその他の基準を実装することもできることが理解できるはずである。
【００８４】
例えば、自動ＩＤノードは、特定の対象物に関してではなく、特定の読み取り機または一連の読み取り機に関して機能することができる。例えば１つの読み取り機は、複数の物の識別子からイベントを検知することができるので、履歴４２８、現状４２６、および予想されるアクション４２４は、その読み取り機によって読み取られる何らかの特定の対象物に関してではなく、その読み取り機に関して定義することができる。
【００８５】
例えばクリスマスの飾り付けによって、多くのクリスマス関連の対象物を販売することができ、その飾り付けがいつ劣化してくるかを判断するために、それらの物のすぐ近くに読み取り機を配置することができる。この例では、アクティビティハンドラ４１４は、特定の読み取り機に関して発生するすべてのアクティビティを処理することができ、ルールセット４２０は、例えばバックオフィスに、もしくは製造業者に、在庫を追加注文するためのパラメータを指定することができ、または第１のタイプの物が売り切れた場合にそのタイプの物を別のタイプの物に置き換えるためのパラメータを指定することができる。
【００８６】
したがって、アクティビティおよびプロセス管理モジュール４１０は、複数の異なるパラメータおよびガイドラインに従って動作することができるが、アクティビティおよびプロセス管理４１０は、予想される、すなわちその後のイベントを決定し、その予想されるイベントに合致する対応するイベントが生じるまで待つようにすることができるということが、本明細書に含まれる説明および例から理解できるはずである。これを行う際、アクティビティおよびプロセス管理モジュール４１０は、いずれの予想されるイベントにも合致しない複数のイベントを処理する可能性があり、この場合、アラームを作動することができ、あるいはそうでなければ、何の動作もしないようにすることができる。
【００８７】
（統合層）
前述したように、デバイス統合層４０６は、自動ＩＤノード４００と複数のデバイスとの間の通信を処理する。図５Ａに示すように、これらのデバイスは、様々なタイプの自動データ取得デバイス５１０、デバイスコントローラ５２０、およびデバイス管理システム５２５を備えることができる。図５Ａに示すように、自動ＩＤノード４００は、特定のデバイス５１０と直接、またはデバイスコントローラ５２０を介して通信することができる。
【００８８】
データ取得デバイス５１０は、周期デバイスと非周期デバイスの双方を含むことができる。周期デバイスとは、周期的なデータストリームを送信するデバイスである。非周期デバイスとは、非周期的なデータストリームを送信するデバイスである。周期的なストリームとは、一定の時間間隔で送信するデータ（例えばｎミリ秒ごとに１つのデータ値）の連続する流れであり、これに対して非周期的なストリームでは、不定期な間隔で、例えばタグの付いたアイテムが検知された場合にのみデータが送信される。周期デバイスの例としては、１つまたは複数の物理的な特性（例えば温度、湿度、加速度、圧力、光、位置、動き、あるいはノイズ）を測定するためのセンサデバイス、および継続的にデータ（例えば在庫情報）を供給することができるサーバがある。非周期デバイスの一例は、ＲＦＩＤタグ読み取り機である。特定のタイプのＲＦＩＤタグ読み取り機の例は、カリフォルニア州モーガンヒルのＡｌｉｅｎ  Ｔｅｃｈｎｏｌｏｇｉｅｓによって製造されている読み取り機、およびメリーランド州ロックランドのＭａｔｒｉｃｓ  Ｉｎｃｏｒｐｏｒａｔｅｄによって製造されている読み取り機である。
【００８９】
前述したように、デバイスコントローラ５２０は、自動データ取得デバイス５１０のうちの１つまたは複数を管理し、自動ＩＤノード４００からの命令に基づいて、自動データ取得デバイス５１０によって送信されたデータを自動ＩＤノード４００に中継するようにすることができるソフトウェアである。
【００９０】
デバイス管理システム５２５は、デバイスおよび／またはデバイスコントローラの状況を監視し、その時点の状況を自動ＩＤノード４００に通知する。この通知は、定期的に、または状況に異常がある場合に行うことができる。デバイス管理システム５２５は、ファームウェアのアップロードおよびシステムの再構成などのリモート管理を提供することもできる。
【００９１】
図５Ｂに示すように、自動ＩＤノード４００のバックエンドシステム統合層４０４、人的統合層４０８、およびノード統合層４７０は、様々なタイプのバックエンドシステム５３０、ユーザインターフェース５４０、および自動ＩＤノード５５０との間の通信をそれぞれ処理する。
【００９２】
様々なタイプのバックエンドシステム５３０は、物流システム、資産追跡管理システム、保守サービスシステム、倉庫管理システム、財務システム、分析システム、および報告システムを備えることができる。さらに、倉庫管理システムを例にとると、例えばＯｒａｃｌｅ社による実装および本件特許出願人による実装など、様々な実装を認めることができる。
【００９３】
様々なタイプのユーザインターフェース５４０には、ウェブベースまたはその他のサーバベースのユーザインターフェース、スタンドアロンのユーザインターフェース、およびモバイルインターフェースを含めることができる。ユーザインターフェース５４０は、異なるユーザごとに異なる構成とすることもできる。
【００９４】
自動ＩＤノード５５０は、様々な地理的位置に配置されたノードを含むことができる。サプライチェーンを例にとると、ノードは、製造現場、流通センタ、および小売センタに配置することができる。自動ＩＤノード５５０は、例えばカリフォルニア州マウンテンビューのＶｅｒｉｓｉｇｎから入手できるＥＰＣＩＳ  Ｓｅｒｖｅｒ、およびドイツのＷａｌｌｄｏｒｆ（Ｂａｄｅｎ）の本件特許出願人から入手できるＡｕｔｏ−ＩＤ  Ｎｏｄｅなど、様々な企業によって開発された様々な自動ＩＤシステムのノードを含むことができる。
【００９５】
本明細書では、デバイス５１０、デバイスコントローラ５２０、デバイス管理システム５２５、バックエンドシステム５３０、ユーザインターフェース５４０、および自動ＩＤノード５５０を自動ＩＤコンポーネントと呼ぶことにする。
【００９６】
自動ＩＤコンポーネントは、使用される通信プロトコル、通信チャネル、通信モード、あるいはメッセージングフォーマットのタイプなど、様々な点で異なるものとすることができるが、これらに限定されるものではない。例えば自動ＩＤコンポーネントの一部は、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を使用して通信することができ、その一方で他のものは、ソケットベースの通信プロトコル、例えばＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を使用して通信することができる。一般的なタイプの通信プロトコルの各々は、複数の異なる変形版を有することもできる。例えばＨＴＴＰのよく知られたバリエーションの１つが、ＨＴＴＰｓ（ｓｅｃｕｒｅ  ＨＴＴＰ）である。
【００９７】
ＴＣＰ／ＩＰについては、通信チャネルは、パブリッシャ−サブスクライバチャネル、ポイントツーポイントチャネル、またはソケットチャネルとすることができる。これらの例として、ニューヨーク州アーモンクのＩＢＭから入手できるＭＱＳｅｒｉｅｓ、マサチューセッツ州ベッドフォードのＳｏｎｉｃ  Ｓｏｆｔｗａｒｅ  Ｃｏｒｐｏｒａｔｉｏｎから入手できるＳｏｎｉｃＭＱ、カリフォルニア州サンノゼのＢＥＡ  Ｓｙｓｔｅｍｓから入手できるＷｅｂＬｏｇｉｃ  Ｓｅｒｖｅｒ、およびドイツのＷａｌｌｄｏｒｆ（Ｂａｄｅｎ）の本件特許出願人から入手できるＸＩが挙げられる。上記のシステムのほとんどは、パブリッシャ−サブスクライバチャネルとポイントツーポイントチャネルの双方に対応する。
【００９８】
ＨＴＴＰについては、通信チャネルは、ＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）およびＪＳＰ（Ｊａｖａ（登録商標）Ｓｅｒｖｅｒ  Ｐａｇｅｓ）とすることができる。
【００９９】
通信モードは、オンライン通信モードまたはオフライン通信モードとすることができる。オンライン通信モードでは、自動ＩＤノードと自動ＩＤコンポーネントは、継続的な接続を維持する。すなわち、自動ＩＤノードと自動ＩＤコンポーネントが互いにメッセージを送信していない場合でも、接続されたままとなる。オフライン通信モードでは、自動ＩＤノードと自動ＩＤコンポーネントは、互いに継続的な接続を維持しない。代わりに、例えばメッセージを送信するためにのみ、またはネットワークへのアクセスが利用可能な場合にのみ、一時的に接続するだけである。オフラインモードは、例えばモバイルデバイスまたはモバイルユーザインターフェースによって使用することができる。
【０１００】
統合層４０４、４０６、４０８、４７０がなければ、自動ＩＤノード４００は、特定の通信プロトコル、通信チャネル、通信モード、および／またはメッセージングフォーマットに対応できるだけであろうし、その自動ＩＤノード４００が対応するその特定の通信プロトコル、通信チャネル、通信モード、および／またはメッセージングフォーマットを使用しない自動ＩＤコンポーネントと統合することはできないであろう。
【０１０１】
統合層４０４、４０６、４０８、４７０があれば、自動ＩＤノード４００は、様々な通信プロトコル、通信チャネル、通信モード、および／またはメッセージングフォーマットを使用する様々な異なるタイプの自動ＩＤコンポーネントと統合することができる。さらに、以下で説明するように、これらの層４０４、４０６、４０８、４７０は、今後開発される新しいタイプの自動ＩＤコンポーネントに対応するために、容易に拡張することができる。
【０１０２】
図６に示すように、統合層４０４、４０６、４０８、および４７０の各々は、アダプタ６１０、コミュニケータ６２０、およびコンバータ６３０を備える。
【０１０３】
アダプタ６１０は、自動ＩＤノード４００と自動ＩＤコンポーネントとの間の通信を処理する。アダプタ６１０は、コミュニケータ６２０およびコンバータ６３０を使用して、通信を処理する。
【０１０４】
コミュニケータ６２０は、通信のデータ伝送の部分を処理する。コミュニケータ６２０は、前述の通信プロトコル、通信モード、および通信チャネルなど、様々な異なるタイプの通信プロトコル、通信モード、および通信チャネルに対応するが、これらに限定されるものではない。
【０１０５】
コンバータ６３０は、通信のデータ変換の部分を処理する。コンバータ６３０は、接続している自動ＩＤコンポーネントから受信したデータを、自動ＩＤノード４００によって理解される内部のメッセージフォーマットへと変換する。逆に、コンバータ６３０は、自動ＩＤノード４００からのデータを、接続している自動ＩＤコンポーネントによって理解される外部のメッセージフォーマットにも変換する。
【０１０６】
図７に示すように、統合層４０４、４０６、４０８、４７０のオブジェクト指向による実装においては、アダプタ６１０は、ベースアダプタクラス（base adapter class）７１０および１つまたは複数の固有アダプタクラス（specific adapter class）７２０によって表すことができる。ベースアダプタクラス７１０は、固有アダプタクラス７２０のすべてが利用できる一般的な機能を実装する。固有アダプタクラス７２０は、固有の通信プロトコル、通信チャネル、通信モード、およびメッセージングフォーマットに対応する追加の機能によって、その一般的な機能を拡張する。
【０１０７】
コミュニケータ６２０およびコンバータ６３０は、ベースクラスおよび固有クラスの同様のセットを使用して実装することもできる。統合層４０４、４０６、４０８、４７０の機能をベースクラスと固有クラスに分離することによって、一般的な統合層４０４、４０６、４０８、４７０は、さらなる固有の通信プロトコル、通信チャネル、通信モード、およびメッセージングフォーマットに対応するために、容易に拡張することができる。
【０１０８】
図８に示すように、アダプタ６１０、コミュニケータ６２０、およびコンバータ６３０を実装するクラスは、クラスリポジトリ８１０内に格納することができる。クラスリポジトリ８１０は、（図示しているように）統合層４０４、４０６、４０８、４７０内に配置することができ、あるいは、自動ＩＤノード４００に対してアクセス可能な別の位置に配置することができる。
【０１０９】
自動ＩＤノード４００に接続される各々の自動ＩＤコンポーネントごとに、アダプタ６１０のインスタンスが生成され、統合層４０４、４０６、４０８、４７０によって保持されているアダプタインスタンスリスト８２０に追加される。
【０１１０】
所与の自動ＩＤコンポーネントに対して適切なアダプタインスタンスを生成する作業は、人間の操作者によって手動で実行することができる。人間の操作者は、自動ＩＤコンポーネントを調べ、次いで、その所与の自動ＩＤコンポーネントの固有の通信プロトコル、通信チャネル、通信モード、および／またはメッセージングフォーマットに対応するアダプタインスタンスを生成することができる。
【０１１１】
図９は、図４に示した自動ＩＤノード４００の一実施形態のブロック図である。図４を参照して説明したように、自動ＩＤノード４００は、イベントメッセージを処理するコアサービスモジュール４０２を備える。コアサービスモジュール４０２は、イベントメッセージディスパッチャ４１２、アクティビティハンドラ４１４／４１６、ルールエンジン４１８、ルールセット４２０／４２２、およびデータ管理モジュール４２３を備えることができる。コアサービス４０２は、自動ＩＤノード４００のプロセスと同じまたは異なるプロセスを処理するその他のモジュールを備えることもできる。自動ＩＤノード４００はまた、外部のモジュールと通信する複数の統合モジュール４０４、４０６、４０８、および４７０を備える。このような通信の例については、図５Ａ、５Ｂ、および６を参照して上記で説明している。
【０１１２】
図９に示すように、自動ＩＤノード４００は、自動ＩＤノード４００内で使用するコンポーネントを動的にロードするコンポーネントマネージャ９０２を備える。すなわち、コンポーネントマネージャ９０２は、拡張可能なインフラストラクチャを有し、これによって自動ＩＤノード４００は、自動ＩＤノード４００のオペレーションに影響を及ぼすことなく、実行時に新たなコンポーネントを追加したり、あるいは別のコンポーネントを使用するように切り替えたりすることができる。
【０１１３】
例えば、コンポーネントマネージャ９０２は、必ずしも自動ＩＤノード４００を停止して再起動することなく、新しいタイプのデバイスと通信する新たなアダプタコンポーネント（例えば、図６に示したアダプタ６１０）を追加するようにすることができる。別の例では、コンポーネントマネージャ９０２は、データコンバータコンポーネントの新しいバージョン（例えば、バックエンドシステムの新しいバージョンと互換性のあるバージョン）を使用して、実行時にそのデータコンバータの古いバージョンを置換するようにすることができる。その結果、自動ＩＤノード４００は、バックエンドシステムの新しいバージョンと通信するように、実稼働環境においてシームレスにアップグレードされる。
【０１１４】
コンポーネントリポジトリ９０４は、自動ＩＤノード４００が使用できる複数のコンポーネントを格納する。したがって、コンポーネントリポジトリ９０４は、自動ＩＤノード４００のためのコンポーネント格納庫として機能する。コンポーネントリポジトリ９０４は、例えば自動ＩＤノード４００が通信するデバイスに対応する複数のアダプタコンポーネント、様々な通信プロトコルで通信する複数のコミュニケータ、様々なフォーマットのデータを変換する複数のデータコンバータ、複数のアクティビティハンドラ（例えば、図４に示したアクティビティハンドラ４１４）、あるいは複数のルールおよびルールセット（例えば、図４に示したルールセット４２０、４２２）を備えることができる。コンポーネントリポジトリ９０４は、例えば外部のバックエンドシステムから、あるいは他の自動ＩＤノードからコンポーネントをダウンロードすることによって、コンポーネントを取得することができる。コンポーネントリポジトリ９０４は、自動ＩＤノード４００が使用しなくなったコンポーネントを削除することもできる。
【０１１５】
コンポーネントローダ９０６は、自動ＩＤノード４００において受信したアイテムデータに基づいて、コンポーネントリポジトリ９０４からコンポーネントをロードすることができる。アイテムデータは一般に、自動ＩＤノード４００によって様々な外部モジュール４０４、４０６、４０８、および４７０から受信するデータ、あるいは自動ＩＤノード４００によってその他の形で処理されるデータを指す。このようなアイテムデータは、例えばデバイス１１２〜１１８、デバイスコントローラ２１２〜２１６、あるいはデバイスマネージャ３１２から受信するアイテム追跡管理データを含むことができる。アイテムデータは、その他の自動ＩＤノード、バックエンドシステム、またはユーザインターフェースから受信するデータを含むこともでき、例えばルールまたはルールセット、バックエンドシステムから受信するアイテムに関する静的データ、あるいは人間の操作者／管理者からユーザインターフェースを介して取得するデータを含むことができる。
【０１１６】
コンポーネントローダ９０６は、図９に示すように、コンポーネントマネージャ９０２の外部に配置することができる。その他の実施形態では、コンポーネントローダ９０６は、コンポーネントマネージャ９０２の内部に配置することができる。
【０１１７】
一実施形態では、コンポーネントローダ９０６は、特定のタイプのコンポーネントを見つけるためにコンポーネントリポジトリ９０４を検索する。一部の実施形態では、コンポーネントローダ９０６は、自動ＩＤノード４００の外部、例えば別の自動ＩＤノードの内部またはバックエンドシステムの内部を検索して、特定のコンポーネントを取得することもできる。より具体的には、コンポーネントローダ９０６は、例えばＳＯＡＰメッセージを受信する場合はＨＴＴＰコミュニケータコンポーネントをロードすることができ、あるいはソケットメッセージを受信する場合はＴＣＰ／ＩＰコミュニケータコンポーネントをロードすることができる。
【０１１８】
コンポーネントローダ９０６はまた、構成設定ファイル９０８を備える。構成設定ファイル９０８は、自動ＩＤノード４００内のアプリケーションにとって外部のファイルとすることができ、それらのアプリケーションが起動する際にロードすることができる。構成設定ファイル９０８は、例えばテキストファイルまたはＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋ−ｕｐ  ｌａｎｇｕａｇｅ）ファイルのフォーマットとすることができる。構成設定ファイル９０８は、自動ＩＤノード４００が最初に配置される際に定義することができるが、必要に応じて変更することもできる。一例では、構成設定ファイル９０８は拡張可能であり、これによって、新たなコンポーネントおよびそれらのプロパティの定義を追加することができる。別の例では、自動ＩＤノード４００は、構成設定ファイル９０８を使用して、コンポーネントを再コンパイルせずに、それらのコンポーネントの設定を変更することができる。
【０１１９】
構成設定ファイル９０８は、それらのコンポーネントを自動ＩＤノード４００に登録する。すなわち、構成設定ファイル９０８は、コンポーネントローダ９０６がコンポーネントを見つけ出すための構成図として機能することができる。例えば構成設定ファイル９０８は、コンポーネントリポジトリ９０４内におけるコンポーネントの位置情報を有することができ、あるいはその他の実施形態では、自動ＩＤノード４００の外部における位置情報を有することができる。構成設定ファイル９０８は、例えば最新のバージョンなど、コンポーネントの特定のバージョンを指定することもできる。構成ファイル９０８は、１つのファイルとすることができ、あるいは様々な場所に格納または構成される複数のファイルのフォーマットとすることもできる。
【０１２０】
一部の実施形態では、構成設定ファイル９０８は、自動ＩＤノード４００内でアクティブになることができるコンポーネントの選択されたリストを定義することができる。コンポーネントローダ９０６は、その選択されたリストに基づいて、起動時にそれらのコンポーネントをロードすることができる。さらに、アクティブな自動ＩＤノード４００は、前述の設定、すなわち自動ＩＤノード４００の構成設定ファイル９０８内におけるアクティブなコンポーネントの選択されたリストをコピーすることによって、別の自動ＩＤノード内に複製することができる。
【０１２１】
構成設定ファイル９０８は、コンポーネントのプロパティの一部を有することもできる。例えば構成設定ファイル９０８は、コンポーネントをインスタンス化するために必要とされる一部のコンポーネントプロパティのデータを提供することができる。構成設定ファイル９０８は、動的なプロパティに対応することもでき、これらの動的なプロパティによって、自動ＩＤノード４００は、ランタイムコンポーネントを再コンパイルせずにプロパティの値に変更を加えることができる。例えば、小売店のルールセットは、１年の四季に関するルールを含むことができる。「季節」というプロパティを現在の季節、例えば「冬」に設定することによって、自動ＩＤノード４００は、受信したイベントに対して冬のルールを適用することができる。
【０１２２】
図５および６を参照して説明したように、統合モジュール４０４、４０６、４０８、および４７０は、例えばＲＦＩＤリーダアダプタ９１０、スキャナアダプタ９１２、および（図９では、一般的なアダプタｘ９１４として示されている）事実上その他のすべてのアダプタなどの様々なアダプタ６１０によって複数の外部モジュールと通信することができる。コンポーネントマネージャ９０２は、外部モジュールからの接続要求に基づいて、これらのアダプタを動的にロードすることができる。例えばコンポーネントマネージャ９０２は、ＲＦＩＤ読み取り機１１４からの接続要求を受信すると、ＲＦＩＤリーダアダプタ９１０をロードすることができる。
【０１２３】
さらにコンポーネントマネージャ９０２は、アクティブなアダプタ用に必要とされるその他のコンポーネントを実行時に統合モジュール４０４、４０６、４０８、４７０へ動的にロードすることができる。例えばコンポーネントマネージャ９０２は、ＲＦＩＤリーダアダプタ用としてコミュニケータコンポーネントＡ９２０およびデータコンバータコンポーネントＣ９２６をロードすることができる。その一方で、スキャナアダプタ９１２は、コミュニケータＢ９２２およびデータコンバータＣ９２６を使用することができる。また一方で、アダプタｘ９１４は、コミュニケータＢ９２４およびデータコンバータＥ９２９を使用することができる。
【０１２４】
図９に示すように、コミュニケータＢ９２２およびコミュニケータＢ９２４は、同一のコンポーネントＢの２つのアクティブインスタンスである。換言すれば、別々のアダプタ、すなわちスキャナアダプタ９１２およびアダプタｘ９１４は、コンポーネントリポジトリ９０４からの同一のコミュニケータコンポーネントを共有する。例えばＴＣＰ／ＩＰコミュニケータコンポーネントは、デバイス、デバイスコントローラ、およびデバイス管理モジュール用の多くのアダプタの間で共有して使用することができる。
【０１２５】
コンポーネントを共有することにより、自動ＩＤノード４００の作成および保守はさらに効率的になる。この例では、ＴＣＰ／ＩＰコミュニケータコンポーネントを１つだけ作成すればよい。またコンポーネントリポジトリ９０４は、このＴＣＰ／ＩＰコミュニケータコンポーネントのコピーを１つロードして格納するだけでよい。このＴＣＰ／ＩＰコンポーネント上で変更が施される際は、コンポーネントコードのコピーを１つだけ変更すればよい。
【０１２６】
図９に示すように、インスタンス９２０〜９２９はアクティブインスタンスである。そのようなものとして、インスタンス９２０〜９２９は、データ処理モジュール、すなわち統合モジュール４０４、４０６、４０８、４７０内でプロセスを実行している。しかし、１つのアクティブモードで比較的多数のインスタンスを維持すると、結果として自動ＩＤノード４００の処理能力およびメモリ使用量に重い負荷をかけ、これによって自動ＩＤノード４００の動作が相対的に遅くなるおそれがある。その結果、一部のインスタンスは、パッシブな形態で保存することができる。
【０１２７】
例えば図９に示すように、パッシブインスタンスプール９３０は、コンポーネントのそのような多数のパッシブインスタンスを保存することができる。上述したように、パッシブインスタンスとは、アクティブインスタンスの静的な形態である。より具体的には、パッシブインスタンスは、アクティブインスタンスのデータおよび状態の情報を有することができる。その結果、新たにインスタンス化されたコンポーネントは、パッシブインスタンスをロードして、対応するアクティブインスタンスを再生成することができる。
【０１２８】
実行中のコンポーネント、すなわちアクティブインスタンスは、そのパッシブインスタンスをエクスポートし、パッシブインスタンスプール９３０内に保存することができる。その一方で、パッシブインスタンスをコンポーネントにインポートして、そのコンポーネントのアクティブインスタンスを再生成することができる。一部の実施形態では、パッシブインスタンスをコピーして、他の自動ＩＤノードまたはシステムに渡すことができる。したがって、アクティブインスタンスは、別の場所に複製することができる。
【０１２９】
パッシブインスタンスプール９３０は、自動ＩＤノード４００用のバッファを提供して、その作業負荷の一部を非アクティブな状態で保持し、よって自動ＩＤノード４００の処理能力を節約する。その結果、自動ＩＤノード４００は、同時に実行されている限られた数のアクティブインスタンスに集中することによって、そのパフォーマンス性が高まる。さらに、自動ＩＤノード４００が多数の要求を同時に受信する場合、パッシブインスタンスプールは、自動ＩＤノード４００がその作業負荷を連続して受け取ることによって故障するのを防ぐことができる。
【０１３０】
インスタンスマネージャ９３１を使用して、（１つまたは複数の）アクティブインスタンスと、パッシブインスタンスプール内のパッシブインスタンスとの切り替えを管理することができる。インスタンスマネージャ９３１は、各機能モジュール、例えばコミュニケータ６２０またはコンバータ６３０の内部に配置することができる。その他の実施形態では、インスタンスマネージャ９３１は、機能モジュールの外部に配置することができる。インスタンスマネージャ９３１は、図９に示すようにデータ処理モジュールの一部とすることもでき、データ処理モジュールの外部に配置することもできる。必要に応じて、１つまたは複数のインスタンスマネージャ９３１を配置することができる。また、一部の実施形態では、インスタンスマネージャ９３１は、コンポーネントマネージャ９０２またはコンポーネントローダ９０６の一部とすることもできる。
【０１３１】
インスタンスマネージャ９３１は、自動ＩＤ追跡システム内で認めることができる、コンポーネントごとのアクティブインスタンスの定数を規定するように設定することができる。図９に示すように、インスタンスマネージャ９３１は、アダプタ６１０が３つのアクティブインスタンスを有することができ、コミュニケータ６２０が３つのアクティブインスタンスを有することができ、データコンバータ６３０が３つのアクティブインスタンスを有することができると規定することができる。
【０１３２】
コンポーネントごとのアクティブインスタンスの数は、様々な状況に適合するように、自動ＩＤノードの動作中に設定することができる。インスタンスマネージャ９３１は、様々なコンポーネントの各々のアクティブインスタンスの定数を調節することによって、その処理能力を様々なコンポーネントの間で最適に配分するようにすることができる。例えばインスタンスマネージャ９３１は、負荷の重いコンポーネントにはより多くのアクティブインスタンスを与え、あまりアクティブでないコンポーネントにはより少しのアクティブインスタンスしか与えないようにすることができる。
【０１３３】
１つの具体例では、新しいアダプタは、自動ＩＤノード４００との通信を要求することができる。インスタンスマネージャは、現在のアダプタ、すなわちＲＦＩＤリーダアダプタ９１０、スキャナアダプタ９１２、アダプタ９１４を非アクティブにすることなく、新しいアダプタに対応できるように、コンポーネントアダプタ６１０に対するアクティブインスタンスの定数を４に増やすように設定することができる。さらにインスタンスマネージャは、新しいアダプタＹのアクティブインスタンスの追加に対応するために、コミュニケータ６２０またはデータコンバータ６３０に対するアクティブインスタンスの定数を減らすように設定することができる。
【０１３４】
一実施形態では、自動ＩＤシステム内のコンポーネント、例えば６１０、６２０、および６３０は、パッシブインスタンスとアクティブインスタンスを切り替えるプロセスを支援するために、さらなるアクティブインスタンスを保持することができる。その結果、コンポーネント６１０、６２０、６３０は、パッシブインスタンスがスワップインされるのを待つために時間を浪費することなく、実行中の一定数のアクティブインスタンスを保持することができる。また、さらなるアクティブインスタンスを使用して、スワッピングタスクのために既存のアクティブインスタンスの動作に影響を及ぼすことなく、新たに受信した要求をパッシブインスタンスへとスワップすることができる。
【０１３５】
さらに図９に示すように、パッシブインスタンスプール９３０はパッシブインスタンスプールＡ９３２を含み、これはコミュニケータコンポーネントＡ９２０のパッシブインスタンスを格納する。パッシブインスタンスプールＣ９３４は、データコンバータコンポーネントＣ９２６、９２８のパッシブインスタンスを含む。プールＡ９３２は、インスタンスＡ１  ９３６、インスタンスＡ２  ９３８、およびインスタンスＡ３  ９４０という３つのパッシブインスタンスを含む。これらの３つのインスタンスは、例えば１つのＲＦＩＤ読み取り機からの３つの通信要求を表すことができる。パッシブインスタンスプールＣ９３４は、インスタンスＣ１  ９４２およびインスタンスＣ２  ９４４を含み、これらは、例えばＲＦＩＤリーダアダプタ９１０および／またはスキャナアダプタ９１２から受信される２つのデータパケットを表すことができる。
【０１３６】
したがって、図９に示した自動ＩＤノード４００の実施形態では、柔軟なインフラストラクチャが提供され、これによって機能を実装から切り離して記述することができる。その結果、自動ＩＤノード４００は、実行時に機能モジュールの別の実装を使用するように切り替えて、機能モジュールの新しい実装を追加することができる。このシステムは、複数の機能モジュールが１つのコンポーネントを共有して再利用することも可能にする。さらに、このシステムによって、図９に示すように、自動ＩＤノード４００は、機能モジュールの実行中のインスタンスのパラメータを動的に変更することができる。最後の例として、パッシブインスタンスによって、自動ＩＤノード４００は、その作業負荷を管理することに加えて、実行中の機能モジュールのインスタンス、すなわちコンポーネントのアクティブインスタンスのコピーおよび転送を可能にすることができる。
【０１３７】
図１０は、構成設定ファイル９０８のブロック図である。構成設定ファイル９０８は、コンパイルされたコードの外部、すなわち自動ＩＤノード４００が実行されているシステムの外部に存在することができ、実行時にシステムへロードすることができる。したがって構成設定ファイル９０８によって、自動ＩＤノード４００を停止して再起動することを必要とせずに、自動ＩＤノード４００を動的に構成することができる。構成設定ファイル９０８の内容は、自動ＩＤノード４００の動的に構成できる機能を例示している。
【０１３８】
一般に、コンポーネントリポジトリ９０４内のすべてのコンポーネントは、構成設定ファイル９０８に登録される。各コンポーネントについて登録される情報は、コンポーネントマネージャ９０２がそのコンポーネントを見つける上で必要とされる情報、そのコンポーネントをインスタンス化する際に必要とされる情報を含むことができ、また一部の実施形態では、そのコンポーネントの設定可能な動的なプロパティを含むことができる。構成設定ファイル９０８内の情報は設定可能であるので、自動ＩＤノード４００は、設定された位置から動的なプロパティと共に動的にコンポーネントをロードすることができる。
【０１３９】
図１０を参照すると、構成設定９０８は、図９に示したロードされたコンポーネントに関する構成セクションを示している。一般に、このような構成セクションは、上述したようにコンポーネントの各々の動的な位置およびプロパティ、および／またはそのコンポーネントと、コンポーネントリポジトリ９０４内に存在するその他の一部のコンポーネントとの従属関係を登録する役割を果たす。
【０１４０】
いくつか例を挙げると、構成セクション１００２はＲＦＩＤリーダアダプタ９１０を設定し、その一方で構成セクション１００４はコミュニケータＡ９２０を設定する。構成セクション１００６はデータコンバータＣ９２６、９２８を設定し、構成セクション１００８はスキャナアダプタ９１２を設定する。構成セクション１０１０はコミュニケータＢ９２２、９２４を設定し、構成セクション１０１２はアダプタｘ９１４を設定する。最後に構成セクション１０１４はデータコンバータＥ９２９を設定する。
【０１４１】
コンポーネントＷの構成セクション１０１６およびコンポーネントＺの構成セクション１０１８は、図９に示していないその他のコンポーネントに関する構成セクションの例である。構成設定９０８には、コンポーネントレジストリ内のその他のコンポーネントに関するさらに多くのその他の構成セクションを含めることができるが、それらについては、明瞭にするため、本明細書および図１０には示していない。
【０１４２】
具体的な例では、構成設定９０８内の構成セクション１００２は、ＲＦＩＤリーダアダプタ９１０というコンポーネントの構成情報を保存する。構成１００２は、コンポーネントＡの位置１０２０、例えばコンポーネントＡがコンポーネントリポジトリ９０４内のどこに存在しているかを示すパスを有する。
【０１４３】
さらに構成セクション１００２は、コンポーネントを識別するためのバージョン番号１０２２を有することができる。ＲＦＩＤリーダアダプタ９１０というコンポーネントは、複数のバージョンを有する可能性があり、例えばそれぞれのバージョンは、別々の時点で作成され、そのＲＦＩＤ読み取りデバイスの（１つまたは複数の）異なるモデルと互換性を有する可能性がある。コンポーネントマネージャ９０２は、送信元であるＲＦＩＤ読み取りデバイスのバージョン番号をバージョン番号１０２２と照合して、構成セクション１００２に登録されているコンポーネント、すなわちＲＦＩＤリーダアダプタ９１０をロードすべきかどうかを判断することができる。
【０１４４】
一部の実施形態では、コンポーネントは、そのコンポーネントの機能と実装が切り離されるような方法で、かつ同一の機能に関して複数の実装が存在できるような方法で実装される。例えば１つのコンポーネントの機能は、１つのインターフェースによって記述することができる。多くのクラスが、そのインターフェースを実装することができ、自動ＩＤノード４００は、そのコンパイルされたコードでそのインターフェースを参照することができる。構成設定９０８は、１つの特定の実装、すなわち１つの特定のクラスを実行時に動的に選択して、そのインターフェース内で定義されている機能を満たすように自動ＩＤノード４００を構成することができる。この例では、クラス名１０２２を使用して、ＲＦＩＤリーダアダプタ９１０の所望の実装が選択される。
【０１４５】
検索パス１０２４は、コンポーネントがコンポーネントリポジトリ９０４内に存在していない場合に、そのコンポーネントをどこで見つけるかに関する情報を有することができる。検索パス１０２４は、そのコンポーネントが存在する可能性のある、自動ＩＤノード４００の外側の１つまたは複数の位置を記述することができる。例えば検索パス１０２４は、リモートマシンの名前および／またはファイルパス、近隣の自動ＩＤノードのＩＤ、あるいはデータベースやリポジトリへの接続情報を有することができる。
【０１４６】
従属コンポーネント１０２６は、現行のコンポーネントが使用する１つまたは複数のコンポーネントを参照する。一実施形態では、コンポーネントマネージャ９０２は、現行のコンポーネントと共に従属コンポーネントをロードする。この例では、ＲＦＩＤリーダアダプタ９１０は、インスタンス９２０のコミュニケータコンポーネントＡおよびインスタンス９２６のデータコンバータＣを使用する。コンポーネントマネージャ９０２は、例えば構成セクション１００４に基づいてコンポーネントＡと、コンポーネントＡの従属コンポーネントとをロードし、構成セクション１００６に基づいてコンポーネントＣと、コンポーネントＣの従属コンポーネントとをロードし、次いでＲＦＩＤリーダアダプタ９１０をロードすることができる。
【０１４７】
同様に構成セクション１００８は、スキャナアダプタコンポーネントが、インスタンス９２２のコミュニケータＢおよびインスタンス９２８のデータコンバータＣを使用することを示す一方で、構成セクション１０１２は、インスタンス９１４のアダプタｘが、インスタンス９２４のコミュニケータＢおよびインスタンス９２９のデータコンバータＥを使用することを示す。このインフラストラクチャでは、１つのコンポーネントは、その従属コンポーネントのプロパティを変更するだけで、別の従属コンポーネントを使用するように容易に変更することができる。
【０１４８】
例えばインスタンス９２８のデータコンバータＣというコンポーネントと、インスタンス９２９のデータコンバータＥというコンポーネントは、同じデータコンバータ機能を共有することができる（例えば双方のコンポーネントは、同じデータコンバータインターフェースを実装することができ、したがって互いに代替できる）。アダプタｘは、構成セクション１０１２の従属コンポーネントのプロパティをＥからＣに変更するだけで、インスタンス９２９のデータコンバータＥの代わりにインスタンス９２８のデータコンバータＣを使用するように変更することができる。
【０１４９】
プロパティ１０２８〜１０３２は、ＲＦＩＤアダプタに関する例示的な動的なプロパティのリストである。例えばプロパティＡ１０２８は、ＲＦＩＤタグの配置を予測することができないと明示することができ、したがってＲＦＩＤアダプタは、その「方向決定モジュール」を起動して、各々のタグを処理することができる。その後、プロパティＡ１０２８は、（例えば、スキャニング方法における何らかの改善の後で）それらのＲＦＩＤタグが常に同じ方向を向いていることを明示するように変更することができるので、ＲＦＩＤアダプタは、「方向決定」モジュールを起動せずに機能することができ、したがってパフォーマンスを向上させることができる。同様にプロパティＢ１０３０、プロパティＣ１０３２、および場合によってはその他のプロパティも、インスタンス９１０のＲＦＩＤアダプタコンポーネントに関するその他の設定可能なパラメータを表すことができる。
【０１５０】
図１０は、図９に示した自動ＩＤノード４００内でアクティブな７つのコンポーネントに対して７つの構成セクションが使用される例を示している。各々は、自動ＩＤノード４００内のコンポーネントに関する現在の設定、すなわち位置、プロパティ、従属コンポーネント、および／またはその他の関連情報を有することができる。これらの構成セクションは、自動ＩＤノード４００の動作中に修正してロードすることができる。構成セクションの内容は、上述したように、自動ＩＤノード４００内のコンポーネントの動的に管理できる機能を示している。
【０１５１】
図１１は、図９および図１０に示した実施形態で使用されるコンポーネントのライフサイクルを示すフローチャートである。上述したように、コンポーネントは一般に、特定のタスクを完了するために実装される機能プログラムモジュールである。コンポーネントは、コードの一部、ソフトウェアプログラム、クラスモジュール、命令セット、および／またはスクリプトとすることができる。コンポーネントは、開発マシンやバックエンドシステム内に、あるいは別の自動ＩＤノード内にも配置することができる。
【０１５２】
これまでの例で説明したように、コンポーネントは、統合モジュール４０４、４０６、４０８、４７０用のアダプタ、コミュニケータ、あるいはデータコンバータとすることができる。さらにコンポーネントは、コアサービスモジュール４０２内のルールセット、アクティビティハンドラ、あるいはルールエンジンとすることができる。コンポーネントは、データ処理モジュール内でインスタンス化することができ、このデータ処理モジュールは、例えばコアサービスモジュール４０２、統合モジュール４０４、４０６、４０８、４７０、あるいは自動ＩＤノード４００内のその他のモジュールを備えることができる。このようなコンポーネントは、データ処理モジュールの動的な部分を表すことができ、例えば構成設定ファイル９０８に従って実行時にロードすることができる。図９に示した自動ＩＤシステム４００のインフラストラクチャによって、自動ＩＤノードは、新しいコンポーネントを容易に適合させることができる。
【０１５３】
一方、データ処理モジュールの静的な部分は、例えばイベントメッセージディスパッチャ４１２、関連データ管理４２３、構成および運営管理４４０、保存およびアーカイビング管理４５０、および統合モジュール４０４、４０６、４０８、４７０のうちの一部分、ならびにコンポーネントマネージャ９０２およびコンポーネントローダ９０６を含むことができ、自動ＩＤノード４００の「基幹」とみなすことができる。自動ＩＤノード４００のこの「基幹」部分は、自動ＩＤノード４００がその動作を開始する際にロードされる。したがって、この「基幹」に変更を加える場合は、この「基幹」部分を配置するために、自動ＩＤノードを停止して再起動することが必要となる。したがって本明細書で説明しているように、「基幹」コンポーネントが自動ＩＤノードにロードされると、ランタイム管理を必要とすることなく、自動ＩＤノード４００のパフォーマンスは高まる。
【０１５４】
図１１に示す例では、新しいコンポーネントＸ、例えばＲＦＩＤ読み取り機の新しいバージョン用のアダプタが開発され、自動ＩＤノード４００に配置できる状態にある。自動ＩＤノード４００は、コンポーネントＸをコンポーネントリポジトリ９０４にロードする（１１０２）。例えば自動ＩＤ操作者は、コンポーネントＸを自動ＩＤノードに手動でロードすることができ、あるいは企業アプリケーション２０２は、そのコンポーネントを特定のマシンからロードするよう自動ＩＤノードに指示することができる。別の例では、近隣の自動ＩＤノードが、コンポーネントＸを自動ＩＤノード４００へ複製することができる。
【０１５５】
コンポーネントＸがコンポーネントリポジトリ９０４へ物理的にロードされると、自動ＩＤノード４００に登録され（１１０４）、これによってコンポーネントローダ９０６は、新たに追加されたコンポーネントＸを見つけ出してインスタンス化することができる。一実施形態では、コンポーネントＸの位置情報に加えて、コンポーネントＸのその他の関連する構成プロパティが、現行の構成設定９０８に追加される。例えば、構成セクション１００２を構成設定ファイル９０８に追加することができる。したがって、自動ＩＤノード４００は、コンポーネントＸが扱うことになる要求を処理できる状態となる。
【０１５６】
自動ＩＤノード４００が、コンポーネントＸを求める要求を受信すると（１１０６）、例えばＲＦＩＤ読み取り機は、タグをスキャンし、そのイベントを処理するよう自動ＩＤノード４００に要求する。次いで自動ＩＤノード４００は、コンポーネントマネージャ９０２を起動して、コンポーネントＸ、すなわちインスタンス９１０のＲＦＩＤリーダアダプタコンポーネントをロードする（１１０８）。コンポーネントローダ９０６は、構成設定ファイル９０８を調べて、コンポーネントＸ用の構成セクション１００２を見つける。コンポーネントローダ９０６は、例えば位置１０２０、バージョン／クラス名１０２２、および／または検索パスを使用して、コンポーネントリポジトリ９０４からコンポーネントＸを見つけることができる。別の例では、コンポーネントローダ９０６は、コンポーネントＸを外部のモジュールからダウンロードすることができる。次いで、コンポーネントローダ９０６は、コンポーネントＸのすべての従属コンポーネント、例えばインスタンス９２０のコンポーネントＡおよびインスタンス９２８のコンポーネントＣをロードすることができる。
【０１５７】
次いでコンポーネントローダ９０６は、統合モジュール４０４、４０６、４０８、４７０内でコンポーネントＸおよびその従属コンポーネント（コンポーネントＡおよびＣ）をインスタンス化することができる。例えばＲＦＩＤリーダアダプタインスタンス９１０、およびその従属コンポーネントのアクティブインスタンス（すなわちコミュニケータＡ９２０およびデータコンバータＣ９２６）は、統合モジュール４０４、４０６、４０８、４７０内で実行されている可能性がある。これでＲＦＩＤリーダアダプタインスタンス９１０のアクティブインスタンスに加えて、コミュニケータＡ９２０およびデータコンバータＣ９２６は、その前から自動ＩＤノード４００と通信していたＲＦＩＤデバイスからの要求を処理できるようになる。さらに、ロードされたコンポーネントＸおよびその従属コンポーネントによって、ＲＦＩＤ読み取りデバイスからのさらなる要求を同様に処理することができる。受信した要求を処理するコンポーネントのアクティブインスタンスの詳細については、図１２を参照してさらに説明する。
【０１５８】
コンポーネントマネージャ９０２は、例えばコンポーネントＸがそのすべてのインスタンスの処理を完了しているかどうかを定期的にチェックすることができる（１１１０）。別の実施形態では、コンポーネントマネージャ９０２は、アクティブインスタンスＸが一定時間にわたって休止しているかどうかをチェックすることができ、もしそうであれば、そのコンポーネントＸをアンロードすることができる（１１１２）。
【０１５９】
図１２は、図９および１０に示したシステムにおけるコンポーネントのインスタンスのライフサイクルを示すフローチャートである。前述したように、インスタンスとは、アイテムデータを処理する過程におけるコンポーネントの実行中のコピーを指す。一般に、インスタンスのライフサイクルは、そのインスタンスがアイテムデータと共にコンポーネントからインスタンス化された時点から始まる。インスタンスのライフサイクルは、そのインスタンスがアイテムデータの処理を完了した時点で終了する。アクティブインスタンスは一般に、自動ＩＤノード４００の処理能力を必要とする。したがって自動ＩＤノード４００内の各々のデータ処理モジュールは、一定数のアクティブインスタンスが同時に存在することを可能にすることができる。
【０１６０】
自動ＩＤノード４００内では、図９に示すように、インスタンスマネージャ９３１およびパッシブインスタンスプール９３０は、インスタンスをそのライフサイクルの間、中間の状態で、すなわちパッシブインスタンスの状態で保持することができ、これによって、自動ＩＤノード４００の処理能力を占有することなくインスタンスを保持して後で処理することができる。
【０１６１】
具体的な例として、アクティビティハンドラコンポーネントのインスタンスは、発送関連のアイテムデータを処理することができる。この例では、発送アクティビティハンドラコンポーネントは、受信したＲＦＩＤリーダイベントを企業システム内の発送ドキュメントと合致させるように設計されている。発送アクティビティハンドラインスタンスは、新たなＲＦＩＤリーダイベントが受信された時点で、すなわちＲＦＩＤ読み取りデバイスによってアイテムがスキャンされた時点で起動する。次いで発送アクティビティハンドラインスタンスは、スキャンされたアイテムに関する発送ドキュメントを見つけるために、１つまたは複数のバックエンドシステムまたはリポジトリ内で検索を開始する。その発送ドキュメントが見つかると、発送アクティビティハンドラインスタンスは、その発送ドキュメントをさらに処理して、例えばその発送ドキュメント内のアイテムのステータスを「受け取り済」に更新する。この時点で、発送アクティビティハンドラインスタンスはそのタスクを完了し、そのライフサイクルは終了する。
【０１６２】
一例では、発送ドキュメントを検索するプロセスは、完了するまでにある程度の時間を要する可能性がある。発送アクティビティハンドラインスタンスは、検索結果を待つことにそのライフタイムの大半を費やす可能性がある。その間にＲＦＩＤ読み取り機は、その他の多くのアイテムをスキャンする可能性があり、自動ＩＤノード４００内で発送アクティビティハンドラコンポーネントの多くの新しいインスタンスを起動する可能性がある。同時に存在できるアクティブインスタンスの数が制限される程度に応じて、インスタンスマネージャ９３１は、それらのインスタンスの一部をパッシブインスタンスとしてパッシブインスタンスプール９３０内に保存することができる。一部の実施形態では、インスタンスマネージャ９３１は、処理されるべきパッシブインスタンスの一部を、例えば近隣の自動ＩＤノード内にエクスポートして、自動ＩＤノード４００上の作業負荷を軽減することができる。
【０１６３】
図１２に示したフローチャートを参照すると、自動ＩＤノード４００は、図１１に示したように、はじめにコンポーネントＸ、例えば発送アクティビティハンドラコンポーネントをコンポーネントリポジトリ９０４にロードすることができる（１２０２）。自動ＩＤノード４００は、コンポーネントＸ、例えば発送アクティビティハンドラコンポーネントを求める要求を受信する（１２０４）。より具体的には、ＲＦＩＤ読み取り機は、アイテムをスキャンし、そのスキャンしたイベントを処理するよう自動ＩＤノード４００に要求する。データ処理モジュール、すなわちコアサービスモジュール４０２は、コンポーネントＸのアクティブインスタンスを１つだけ許可することができる。コアサービスモジュール４０２は、実行中のアクティブインスタンスが既に存在するかどうかをチェックする（１２０６）。すなわちコアサービスモジュール４０２は、新しいアクティブインスタンスを作成する余地がまだ残っているかどうかをチェックする。
【０１６４】
アクティブインスタンスがまったく見つからない場合、コアサービスモジュール４０２は、コアサービスモジュール内でコンポーネントＸの最初のアクティブインスタンスをインスタンス化し（１２１０）、受信した要求、すなわちＲＦＩＤスキャニングイベントの処理を開始する。一方、コンポーネントＸの実行中のインスタンスが既に存在することをコアサービスモジュールが見つけた場合（すなわち、そのシステムがビジー状態である場合）、コアサービス４０２は、受信した要求に関するパッシブインスタンスを作成し、これをパッシブインスタンスプール９３０に保存することができる（１２０８）。
【０１６５】
その他の実施形態も存在することができ、例えばコアサービス４０２は、一定数のアクティブインスタンスを同時に実行できるようにすることができる。新しいインスタンスは、コアサービス内のアクティブインスタンスが一定数に達した場合にのみ、パッシブインスタンスプール９３０内に配置することができる。さらに別の例では、新しいインスタンスをただちにパッシブプール内に配置することはできないので、その代わりに既存のアクティブインスタンスをパッシブインスタンスプール９３０へスワップアウトすることができ、その一方で、新しいインスタンスは、新たなアクティブインスタンスとしてコアサービスモジュール４０２へ追加される。インスタンススワッピングルールのその他の実施形態も適用することができる。
【０１６６】
１つのアクティブインスタンスがその処理を完了すると（１２１２）、コアサービス４０２は、パッシブインスタンスプール９３０から次のパッシブインスタンスをスワップインすることができる（１２１４）。このプロセスは、そのコンポーネントに関するすべてのパッシブインスタンスが処理されているかどうかをチェックし、もしそうであれば、それでそのインスタンスのライフサイクルは終了となる。
【０１６７】
そのコンポーネントに関するすべてのパッシブインスタンスが処理されていなければ、アクティブインスタンスは、プロセス１２１２および１２１４を継続する。このプロセスの間、コアサービスモジュール４０２は、パッシブインスタンスに関するアイテムデータを受信する可能性がある（１２１６）。例えばコアサービスモジュール４０２は、あるアイテムに関する発送ドキュメントの検索結果を受信する可能性がある。そのアイテムに関連付けられているインスタンスは、パッシブインスタンスプール内に存在する可能性がある。次いで、コアサービスモジュール４０２は、現行のアクティブインスタンスをパッシブインスタンスプール９３０にスワップアウトすることができ（１２１８）、これによって新しいインスタンスをスワップインすることができる。次いで、コアサービスモジュール４０２は、そのアイテムに関連付けられているパッシブインスタンスを見つけることができ、そのパッシブインスタンスをコアサービスモジュール４０２にスワップインすることができる。
【０１６８】
プロセス１２１２〜１２１８は、コンポーネントＸのすべてのインスタンスが処理されるまで継続する。最終的にコンポーネントＸは、図１１に示したように（１１１２）、アンロードすることができる。
【０１６９】
図１２に示すような動的に管理されるインスタンスによって、自動ＩＤノードは、そのリソース、例えばその処理能力およびメモリ使用量を効率よく管理することができ、それによって、多数の要求を独自のペースで処理することができる。さらに、休止中のアクティブインスタンスをパッシブインスタンスに切り替えることによって、自動ＩＤノードのパフォーマンスを高めることができる。アクティブインスタンスは移植性が高いので、作業負荷を他の自動ＩＤノードおよび／またはシステムに分散することができ、また自動ＩＤノードの機能やパフォーマンスをテストすることができる。複数の実施形態について説明してきたが、さらに、様々な変更形態を実施できることが理解できるであろう。したがってその他の実施形態も、特許請求の範囲内に含まれる。
【図面の簡単な説明】
【０１７０】
【図１】自動ＩＤシステムのネットワークの図である。
【図２】（１つまたは複数の）自動ＩＤノードを有する自動ＩＤインフラストラクチャと（１つまたは複数の）デバイスコントローラとを含む、図１に示す自動ＩＤ機能を例示するシステム２００のブロック図である。
【図３】図２に示す自動ＩＤインフラストラクチャと共に使用するためのネットワーク構造を示すブロック図である。
【図４】図２および３に示す（１つまたは複数の）自動ＩＤノードのブロック図である。
【図５Ａ】デバイス統合を例示する図である。
【図５Ｂ】デバイス統合、バックエンドシステム統合、人的統合、および自動ＩＤノード統合を例示する図である。
【図６】統合層を例示する図である。
【図７】統合層のオブジェクト指向による実装を例示する図である。
【図８】統合層のオブジェクト指向による実装を例示する図である。
【図９】図４に示す自動ＩＤノードの一実施形態のブロック図である。
【図１０】図９に示す実施形態で使用される構成設定ファイルのブロック図である。
【図１１】図９および１０に示す実施形態で使用されるコンポーネントのライフサイクルのフローチャートである。
【図１２】図９および１０に示すシステムにおけるコンポーネントのインスタンスのライフサイクルのフローチャートである。
【符号の説明】
【０１７１】
１１４  読み取り機
２０２  企業アプリケーション
２０６、２０８、２１０、４００  自動ＩＤノード
４０２  コアサービス
４０４  バックエンドシステム統合
４０６  デバイス統合
４０８  人的統合
４７０  ノード統合
６１０  アダプタ
６２０  コミュニケータ
６３０  コンバータ
９０２  コンポーネントマネージャ
９０４  コンポーネントリポジトリ
９０６  コンポーネントローダ
９０８  構成設定
９３０  パッシブインスタンス
９３２、９３４  プール
【図１】
2006244497.tif 000003
【図２】
2006244497.tif 000004
【図３】
2006244497.tif 000005
【図４】
2006244497.tif 000006
【図５Ａ】
2006244497.tif 000007
【図５Ｂ】
2006244497.tif 000008
【図６】
2006244497.tif 000009
【図７】
2006244497.tif 000010
【図８】
2006244497.tif 000011
【図９】
2006244497.tif 000012
【図１０】
2006244497.tif 000013
【図１１】
2006244497.tif 000014
【図１２】
2006244497.tif 000015