상기 목적은 본 발명에 따라, 상호 상이한 복수의 프로토콜에 따른 플랫폼의 접근이 가능한 RFID 미들웨어 시스템에서 상기 각 플랫폼과 상기 RFID 미들웨어 시스템 간의 필터링 클래스 구조에 있어서, 상기 각 프로토콜을 이용하여 필터를 관리하는 복수의 개별 프로토콜 클래스와; 상기 각 필터에 대한 필터정보가 기록된 FilterSet 클래스와, 상기 필터정보에 대한 연산요청을 위한 API(Application Program Interface)를 갖는 FilterMgr 클래스와, 상기 각 개별 프로토콜 클래스가 상기 FilterMgr 클래스의 API(Application Program Interface)를 통해 상기 FilterSet 클래스에 동시 접속할 때 소정의 임계영역을 설정하여 접근을 제어하는 FlterServer 클래스로 구성된 공통 클래스를 포함하는 것을 특징으로 하는 필터링 클래스 구조에 의해 달성된다.
여기서, 상기 FilterSet 클래스는 매소드가 존재하지 않는 복수의 맴버로 구성되며; 상기 FilterSet 클래스를 구성하는 상기 멤버는 상기 각 필터에 대한 필터규칙을 포함할 수 있다.
그리고, 상기 FlterServer 클래스는 상기 각 개별 프로토콜 클래스가 상기 FilterMgr 클래스의 상기 API를 통해 상기 FilterSet 클래스에 접속하는 경우 쓰레드(Thread)를 생성하며; 상기 쓰레드는 상기 FilterSet 클래스의 상기 필터정보가 기록된 파일에 록(Lock)을 걸고 상기 FilterMgr 클래스를 통해 수신된 상기 연산요청을 수행할 수 있다.
여기서, 상기 복수의 프로토콜은 JMS(Java Message Service) 프로토콜, SOAP(Simple Object Access Protocol), 및 HTTP(HiperText Transfer Protocol) 중 적어도 어느 하나를 포함하며; 상기 개별 프로토콜 클래스는 상기 JMS(Java Message Service) 프로토콜을 이용하여 상기 필터를 관리하는 JMS 클래스와, AXIS 상에서 상기 SOAP(Simple Object Access Protocol)를 이용하여 상기 필터를 관리하는 SOAP 클래스를 포함할 수 있다.
또한, 상기 JMS 클래스에 대한 상기 JMS(Java Message Service) 프로토콜을 지원하는 JMS 서비스 제공자를 더 포함하며; 상기 JMS 클래스는 상기 JMS(Java Message Service) 프로토콜을 위한 API(Application Program Interface)를 제공하며, 상기 JMS 서비스 제공자에 접속하여 상기 필터정보에 대한 연산요청을 상기 JMS 서비스 제공자에 저장하는 JMSController 클래스와, 상기 JMS 서비스 제공자에 저장된 상기 필터정보에 대한 연산요청을 독출하여 상기 공통 클래스의 상기 FilterMgr 클래스를 통해 상기 FilterSet 클래스에 전달하는 ListenerBody 클래스와, 상기 JMS 서비스 제공자에 연결되며, 상기 ListenerBody 클래스를 생성하여 비동기적으로 상기 필터정보에 대한 연산요청을 처리하는 Listener 클래스를 포함할 수 있다.
여기서, 상기 SOAP 클래스는 상기 SOAP(Simple Object Access Protocol)를 위한 API(Application Program Interface)를 제공하며, 상기 AXIS에 접속해서 상기 필터정보에 대한 연산요청을 수행하는 SOAPController 클래스와, 상기 SOAPController 클래스로부터의 상기 연산요청을 상기 공통 클래스의 상기 FilterMgr 클래스를 통해 상기 FilterSet 클래스에 전달하는 FilterMgr.jws 클래스를 포함할 수 있다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
도 1은 본 발명에 따른 RFID 미들웨어 시스템(10)이 적용된 RFID 시스템의 구성을 도시한 도면이고, 도 2는 본 발명에 따른 RFID 미들웨어 시스템(10)의 구성을 도시한 도면이다.
도 1을 참조하여 설명하면, 본 발명에 따른 RFID 시스템은 복수의 RFID 리더(30a,30b,30c), RFID 미드웨어 시스템, 및 응용 서비스인 복수의 클라이언트(50a,50b,50c)를 포함한다.
본 발명에 따른 RFID 미들웨어 시스템(10)은 RFID 리더(30a,30b,30c)는 상호 상이한 기종의 RFID 리더(30a,30b,30c)로부터 스트림 태그 데이터를 수신할 수 있 도록 마련된다. 본 발명에서는 Matrics 사, Alian 사, Intermec 사의 RFID 리더(30a,30b,30c)를 RFID 미들웨어 시스템(10)이 인식 가능한 것을 일 예로 하여 설명한다.
한편, RFID 미들웨어 시스템(10)은, 도 2에 도시된 바와 같이, 리더 인터페이스부(16), 응용 인터페이스부(17), 및 이벤트 매니저(11)를 포함한다.
리더 인터페이스부(16)는 네트워크(90)를 통해 RFID 리더(30a,30b,30c)와 연결되어 RFID 리더(30a,30b,30c)에 의해 읽힌 스트림 태그 데이터를 수집한다. 여기서, 리더 인터페이스부(16)는 상술한 바와 같은 상이한 기종의 RFID 리더(30a,30b,30c)와 네트워크(90)를 통해 연결되는 각 RFID 리더(30a,30b,30c)의 기종에 대응하는 RFID 어댑터(미도시)를 포함하며, 각 RFID 어댑터를 통해 수신되는 스트림 태그 데이터를 수집한다.
여기서, RFID 어댑터는 각 RFID 리더(30a,30b,30c)와 TCP/IP를 통해 연결될 수 있고, RFID 어댑터를 통해 수집되는 스트림 태그 데이터는 XML 파일 형태로 관리될 수 있다.
응용 인터페이스부(17)는 상호 상이한 프로토콜을 사용하는 복수의 클라이언트(50a,50b,50c)와 각 프로토콜에 따라 복수의 클라이언트(50a,50b,50c)와 데이터를 교환한다. 여기서, 각 클라이언트(50a,50b,50c)는 해당 프로토콜에 따른 플랫폼을 가지게 되며, 본 발명에 따른 RFID 미들웨어 시스템(10)의 응용 인터페이스부(17)는 상이한 플랫폼의 클라이언트(50a,50b,50c)의 접속을 가능하게 한다.
본 발명에서는 클라이언트(50a,50b,50c)가 JMS(Java Message Service) 프로 토콜, SOAP(Simple Object Access Protocol), 및 HTTP(HiperText Transfer Protocol)에 따른 플랫폼을 갖는 것을 일 예로 하며, 이에 따라 응용 인터페이스부(17)는 JMS(Java Message Service) 프로토콜, SOAP(Simple Object Access Protocol), 및 HTTP(HiperText Transfer Protocol)에 따라 해당 클라이언트(50a,50b,50c)와 데이터를 교환한다.
한편, 이벤트 매니저(11)는 리더 인터페이스부(16)를 통해 수집된 스트림 태그 데이터를 관리한다. 그리고 이벤트 매니저(11)는 응용 인터페이스부(17)를 통해 클라이언트(50a,50b,50c)로부터 수신되는 필터링 조건에 따라 스트림 태그 데이터를 가공 및 필터링하여 응용 데이터를 생성한다. 그리고 이벤트 매니저(11)는 필터링 조건에 따라 생성된 응용 데이터를 해당 클라이언트(50a,50b,50c)로 응용 인터페이스부(17)를 통해 전송한다.
도 2를 참조하여 설명하면, 본 발명에 따른 이벤트 매니저(11)는 리더 인터페이스부(16)를 통해 수집된 스트림 태드 데이터가 저장되는 태그 저장부(12)와, 응용 인터페이스부(17)를 통해 클라이언트(50a,50b,50c)로부터 수신되는 필터링 조건에 따라 스트림 태그 데이터를 가공 및 필터링하여 응용 데이터를 생성하는 필터 매니저(14)와, 필터 매니저(14)에 의해 생성된 응용 데이터를 응용 인터페이스부(17)를 통해 해당 클라이언트(50a,50b,50c)로 전송하는 EM 제어부(13)를 포함할 수 있다.
이하에서는 도 3 내지 도 6을 참조하여 본 발명에 따른 이벤트 매니저(11)의 필터 매니저(14)가 필터에 대한 연산요청을 수행하는 방법에 대해 상세히 설명한 다.
본 발명에 따른 필터 매니저(14)는 RFID 미들웨어 시스템(10)에서 사용되는 필터를 관리하는 프로그램 형태로 마련된다. 그리고, 이벤트 매니저(11)는 각 클라이언트(50a,50b,50c)의 다양한 프로토콜을 지원하여 다양한 플랫폼의 클라이언트(50a,50b,50c)가 접근 가능하도록 마련된다.
여기서, 필터 매니저(14)는 다수의 클라이언트(50a,50b,50c)가 하나의 필터 파일, 즉 태그 저장부(12)에 저장된 스트림 태그 데이터가 기록된 필터파일, 예컨대 XMLFilter.xml에 접근할 때 생기는 동기화 문제를 해결하기 위해, 도 3에 도시된 바와 같이, 각 프로토콜에 따른 클라이언트(50a,50b,50c)로부터 전송되는 필터링 조건을 포함하는 필터 제어 명령을 처리하는 개별 프로세서(14a,14b,14c)와, 필터파일을 통합 관리하며 개별 프로세서(14a,14b,14c)에 의해 처리된 필터 제어 명령에 따라 필터파일을 관리하는 통합 프로세서(14d)를 포함할 수 있다.
한편, 본 발명에 따른 RFID 미들웨어 시스템(10)에서 각 클라이언트(50a,50b,50c)의 플랫폼과 필터 매니저(14) 간의 필터링 클래스 구조를 상세히 설명하면, 필터링 클래스 구조는 각 프로토콜을 이용하여 필터를 관리하는 복수의 개별 프로토콜 클래스와, 이를 모든 프로토콜이 사용하여 이를 통합 관리하는 공통 클래스를 포함할 수 있다.
도 4는 본 발명에 따른 필터링 클래스 구조에서의 공통 클래스의 구조를 설명하기 위한 도면이다. 도 4를 참조하여 설명하면 공통 클래스는 FilterSet 클래스와, FilterMgr 클래스와, FlterServer 클래스를 포함할 수 있다.
FilterSet 클래스는 각 필터에 대한 필터정보가 기록된다. FilterSet 클래스는 각 필터들을 하나의 객체로 저장하여 네트워크(90)를 통해 클라이언트(50a,50b,50c)로 전송하기 위해 사용되는 바, 등록하고자 하는 필터의 묶음으로 정의될 수 있다.
여기서, FilterSet 클래스는 매소드(Method)가 존재하지 않는 복수의 맴버로 구성되는데, 각 맴버는 TagID, reader1, readerNum, maxDiscoveryDay 등과 같이 등록하고자 하는 필터에 대한 필터규칙을 포함할 수 있다.
FilterMgr 클래스는 필터정보에 대한 연산요청을 위한 API(Application Program Interface)를 포함한다. 도 4에 도시된 바와 같이, FilterMgr 클래스는 API(Application Program Interface)를 가지고 실제 필터정보가 기록되어 있는 필터파일, 즉, 전술한 바와 같이 XMLFilter.xml에 접근하는 FilterServer 클래스와 통신한다.
여기서, XMLFilter.xml은 여러 개의 파일이 동시에 접근할 수 있으므로 FilterServer 클래스가 임계영역을 설정하고 접근을 제어한다. 이에 따라, FilterServer 클래스는 FilterMgr 클래스에서 제공하는 함수를 가지고, XMLFilter.xml로의 동시 접근에 따른 파일 손상을 제거하고, 간단히 필터파일에 대한 필터정보의 기록,삭제, 읽기 등의 연산요청을 수행할 수 있게 된다.
아래의 [표 1]은 FilterMgr 클래스의 매소드들의 예를 나타낸 것이다. [표 1]에 나타낸 함수들을 이용하여 FilterMgr 클래스에 필터정보를 설정하고, FM_XMLInsert, FM_XMLDelete, FM_GetXMLFile 함수를 이용하여 필터정보를 제어할 수 있다.
[표 1]
매소드 |
역 할 |
setTagID |
(필더설정) TagID를 설정한다. |
setReader1 |
(필더설정) Reader1을 설정한다. |
setReaderNum |
(필더설정) ReaderNum을 설정한다. |
setMinDiscoveryDay |
(필더설정) MinDiscoveryDay를 설정한다. |
setMinDiscoveryTime |
(필더설정) MinDiscoveryTime을 설정한다. |
setMaxDiscoveryDay |
(필더설정) MaxDiscoveryDay를 설정한다. |
setMaxDiscoveryTime |
(필더설정) MaxDiscoveryTime을 설정한다. |
setAntenna |
(필더설정) Antenna를 설정한다. |
setRemoteAddr |
(필더설정) RemoteAddr를 설정한다. |
FM_XMLInsert |
(API) 설정된 필터정보를 기록한다. |
FM_XMLDelete |
(API) 설정된 필터정보를 삭제한다. |
FM_GetXMLFile |
(API) 설정된 필터정보를 String으로 얻는다. |
FilterServer 클래스는 필터정보를 저장하는 FMLFilter.xml을 여러 개의 개별 프로토콜 클래스가 동시에 접근할 때, 필터파일의 손상을 막기 위해 소켓을 사용하여 해당 연산요청을 받아들이고, 필터파일로의 접근시 임계영역을 설정하여 동기화를 지원한다. 도 4에 도시된 바와 같이, FilterServer 클래스는 FilterMgr 클래스를 이용해서 접속이 오면 쓰레드를 하나 생성하고, 개별 쓰레드는 연산요청에 따라 필터파일에 록(Lock)을 걸고 연산요청에 따른 작업을 수행한다.
한편, 개별 프로토콜 클래스는 JMS(Java Message Service) 프로토콜을 이용하여 필터를 관리하는 JMS 클래스와, AXIS 상에서 SOAP(Simple Object Access Protocol)를 이용하여 필터를 관리하는 SOAP 클래스를 포함할 수 있다.
도 5는 본 발명에 따른 JMS 클래스의 구성을 설명하기 위한 도면이다. 도면에 도시된 JMS 클래스는 JMSController 클래스와, ListenerBody 클래스와, Listener 클래스를 포함할 수 있다.
여기서, 본 발명에 따른 필터 매니저(14)는 JMS 클래스에 대한 JMS(Java Message Service) 프로토콜을 지원하는 JMS 서비스 제공자를 포함할 수 있는데, 본 발명에서는 JMS 서비스 제공자로, 도 5에 도시된 바와 같이, OPENJMS를 사용하는 것을 일 예로 한다.
도 5를 참조하여 JMS 클래스의 처리 과정을 전체적으로 요약하면, JMSController 클래스에서 API를 이용하여 필터에 대한 연산요청을 수행한다. 이 연산요청은 OPENJMS의 testQueue에 쌓이게 되고, Listener 클래스에서 읽어와 공통 클래스의 FilterMgr 클래스를 이용하여 실제 필터파일인 XMLFilter.xml에 접속한다. FilterMgr 클래스에 의해 접속된 필터파일은 OPENJMS의 InterMiddlewareQueue에 쌓이게 되고, JMSController 클래스에서 최종적으로 스트링으로 XMLFilter.xml의 내용을 받을 수 있게 된다.
JMSController 클래스는 JMS(Java Message Service) 프로토콜을 위한 API(Application Program Interface)를 제공하며, JMS 서비스 제공자인 OPENJMS에 접속하여 상기 필터정보에 대한 연산요청을 전달하고, 이는 OPENJMS의 testQueue에 저장된다. 여기서, JMSController 클래스는 클라이언트(50a,50b,50c)의 플랫폼 상에서 동작한다.
아래의 [표 2]는 JMSController 클래스의 메소드 및 그 역할의 일 예를 나타낸 것이다.
[표 2]
매소드 |
역 할 |
JMS_Connect |
JMS에 접속한다. |
JMS_XMLInsert |
필터정보를 저장한다.(FilterSet 이용) |
JMS_XMLDelete |
필터정보를 삭제한다.(FilterSet 이용) |
JMS_GetXML |
필터정보를 String으로 얻는다. |
JMS_Exit |
JMS에 접속 종료 요청 |
Listener 클래스는 OPENJMS에 연결되며, ListenerBody 클래스를 생성하여 비동기적으로 연산요청을 처리한다. 그리고, ListenerBody 클래스는 실질적으로 연산요청을 처리하며, Listener 클래스에서 비동기적인 연산요청의 처리를 위해 해당 클래스를 사용한다. ListenerBody 클래스는 OPENJMS의 testQueue에서 JMSController 클래스가 요청한 연산요청을 받아서 연산요청에 따른 작업을 수행한다. 여기서, ListenerBody 클래스는 내부적으로 FilterMgr 클래스의 객체를 소유하고, 이를 이용하여 연산요청을 수행하게 된다.
한편, 도 6은 본 발명에 따른 SOAP 클래스의 구성을 설명하기 위한 도면이다. 본 발명에 따른 SOAP 클래스는 AXIS에서 SOAP(Simple Object Access Protocol)을 이용하여 필터를 관리한다. 도 6에 도시된 바와 같이, SOAP 클래스는 SOAP(Simple Object Access Protocol)의 통신 방식인 XML 방식을 이용하여 아파치(도 6의 'Apache tomcat') 상에서 구동되는 AXIS에 데이터를 전송한다. 이는 XML로 직접 통신이 가능하고, 제공하는 API(Application Program Interface)로도 통신이 가능하다.
또한, SOAP 클래스는, 도 6에 도시된 바와 같이, SOAPController 클래스와, FilterMgr.jws 클래스를 포함할 수 있다.
SOAPController 클래스는 SOAP(Simple Object Access Protocol)를 위한 API(Application Program Interface)를 제공하며, AXIS에 접속해서 필터정보에 대한 연산요청을 수행한다. 아래의 [표 3]은 SOAPController 클래스의 메소드와 그 역할의 일 예를 나타낸 것이다. SOAPController 클래스는 클라이언트(50a,50b,50c)의 플랫폼 상에서 동작한다.
[표 3]
매소드 |
역 할 |
SOAP_XMLInsert |
필터정보를 저장한다.(FilterSet 이용) |
SOAP_XMLDelete |
필터정보를 삭제한다.(FilterSet 이용) |
SOAP_GetXML |
필터정보를 String으로 얻는다. |
FilterMgr.jws 클래스는 필터정보에 대한 연산요청을 수행하는 API(Application Program Interface)를 포함하고, 이는 전술한 공통 클래스의 FilterMgr와 유사한 역할을 하지만 AXIS 환경을 위하여 변경된 것이다. 이에 따라, 공통 클래스의 FilterMgr 클래스와 FilterMgr.jws 클래스에서 처리되는 파일은 FilterMgr.java와 FilterMgr.jws로 구분될 수 있다. 정리하면, 공통 클래스의 FilterMgr 클래스는 HTTP(HiperText Transfer Protocol)와 JMS(Java Message Service) 프로토콜을 위해 사용되고, FilterMgr.jws 클래스는 SOAP(Simple Object Access Protocol)를 위해 사용된다.
상기와 같은 필터링 클래스 구조를 통해 필터 매니저(14)는 각 클라이언트(50a,50b,50c)로부터의 필터정보에 대한 필터링 조건에 따라 스트림 태그 데이터로부터 응용 데이터를 생성하고, EM 제어부(13)는 필터 매니저(14)에 의해 생성된 응용 데이터를 해당 클라이언트(50a,50b,50c)로 전송하게 된다.
도 2의 미설명 참조번호 15는 본 발명에 따른 이벤트 매니저가 제공하는 그 래픽 유저 인터페이스(Graphic User Interface) 화면을 제공하는 GUI 생성부이고, 70은 그래픽 유저 인터페이스 화면이 표시되는 모니터이다.
이상에서 본 발명의 바람직한 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.