KR101907784B1 - OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치 - Google Patents
OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치 Download PDFInfo
- Publication number
- KR101907784B1 KR101907784B1 KR1020170054525A KR20170054525A KR101907784B1 KR 101907784 B1 KR101907784 B1 KR 101907784B1 KR 1020170054525 A KR1020170054525 A KR 1020170054525A KR 20170054525 A KR20170054525 A KR 20170054525A KR 101907784 B1 KR101907784 B1 KR 101907784B1
- Authority
- KR
- South Korea
- Prior art keywords
- service
- activity
- osgi
- workflow
- declarative
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치가 개시된다. OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 방법은, 조합 서비스 시나리오에 대한 워크플로우 디스크립션을 파싱하여 적어도 하나의 서비스 객체를 생성하는 단계; OSGi 서비스 저장소에서 필요한 OSGi 서비스를 추적하는 단계; 상기 서비스 객체 및 상기 추적되는 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하고, 상기 복수의 컴포넌트 각각에 대한 액티비티, 프로세스 및 로직 중 적어도 하나에 대한 액티비티 서비스를 각각 생성하는 단계; 상기 생성된 액티비티 서비스를 조립(assemble)하여 추상적 워크플로우를 생성하는 단계; 및 상기 구성된 컴포넌트 및 상기 액티비티 서비스를 상기 추상적 워크플로우상의 지정된 위치에서 바인딩함으로써 서비스를 조합하여 워크플로우 기반 선언적 서비스를 생성하는 단계를 포함한다.
Description
본 발명은 OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치에 관한 것이다.
클라우드 컴퓨팅은 우리 가정에 있는 모든 컴퓨터 하드웨어와 컴퓨터에 설치된 소프트웨어 대신 클라우드 서비스 공급자 (CSP)가 제공하고 인터넷을 통해 액세스 할 수 있도록 서비스를 제공한다. 클라우드 컴퓨팅 환경에서, 모든 컴퓨터 하드웨어 및 소프트웨어는 클라우드 리소스의 일부로 동작할 수 있다. 즉, 클라우드 컴퓨팅 환경에서는 하드웨어와 소프트웨어가 있는 위치와 작동 방식은 사용자에게 중요하지 않게 된다.
클라우드는 협상을 통해 수립 된 서비스 수준 계약에 따라 제공되는 액세스 가능한 리소스 모음으로 사용자 요구에 따라 동적으로 구성하고 가상화할 수 있다.
클라우드 컴퓨팅 솔루션 중 하나 인 OSGi 플랫폼은 런타임시 구성 요소를 설치, 업데이트 및 제거 할 수 있는 유연한 Java 기반 구성 요소 프레임워크이다.
이러한 종래의 OSGi 프레임워크는 서비스의 동적인 라이프 사이클을 지원하고 서비스 레지스트리를 통해 서비스의 정보를 동적으로 반영하면 사용자에 의한 동적인 서비스 검색을 지원하다.
그러나, 서비스의 조립에 있어 OSGi 프레임워크는 최소한의 기능만을 제공한다. 따라서, 사용자에 의해 모든 서비스의 조립 절차가 수동적으로 이루어지며, 사용자가 요구하는 시나리오가 바뀌게 되는 경우, 사용자의 요구에 따라 하위 서비스가 바뀌게 되는 경우 서비스의 조합은 처음부터 수동적으로 이루어지는 문제점이 있다.
본 발명은 OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치를 제공하기 위한 것이다.
또한, 본 발명은 하드코딩 없이 서비스 변경에 따른 조합이 가능한 OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치를 제공하기 위한 것이다.
본 발명의 일 측면에 따르면, OSGi 환경의 선언적 서비스 조합 방법이 제공된다.
본 발명의 일 실시예에 따르면, OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 방법에 있어서, 조합 서비스 시나리오에 대한 워크플로우 디스크립션을 파싱하여 적어도 하나의 서비스 객체를 생성하는 단계; OSGi 서비스 저장소에서 필요한 OSGi 서비스를 추적하는 단계; 상기 서비스 객체 및 상기 추적되는 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하고, 상기 복수의 컴포넌트 각각에 대한 액티비티, 프로세스 및 로직 중 적어도 하나에 대한 액티비티 서비스를 각각 생성하는 단계; 상기 생성된 액티비티 서비스를 조립(assemble)하여 추상적 워크플로우를 생성하는 단계; 및 상기 구성된 컴포넌트 및 상기 액티비티 서비스를 상기 추상적 워크플로우상의 지정된 위치에서 바인딩함으로써 서비스를 조합하여 워크플로우 기반 선언적 서비스를 생성하는 단계를 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법이 제공될 수 있다.
상기 선언적 서비스를 생성하는 단계 이후에, 상기 선언적 서비스를 상기 OSGi 서비스 저장소에 저장하는 단계를 더 포함할 수 있다.
상기 OSGi 서비스는 상기 OSGi 환경에 포함되는 복수의 스마트 디바이스일 수 있다.
상기 복수의 컴포넌트 각각에 대한 액티비티, 프로세스 및 로직 중 적어도 하나에 대한 액티비티 서비스는 액티비티 빈(Activity bean)에 의해 상기 워크플로우 디스크립션에 정의된다.
상기 액티비티 빈(Activity bean)은, 상기 컴포넌트 액티비티를 생성하는 컴포넌트 액티비티(component activity); 상기 생성된 컴포넌트 상호간의 연결을 구성하는 프로세스 액티비티(process activity); 및 상기 컴포넌트간의 경로 흐름을 제어하는 로직 액티비티(logic activity)를 포함한다.
상기 프로세서 액티비티는, 상기 컴포넌트간의 순차적인 실행 순서를 구성하는 시퀀스 액티비티(sequence activity); 상기 컴포넌트간의 병렬적 실행 순서를 구성하는 패러럴 액티비티(parallel activity)를 포함한다.
상기 로직 액티비티는, 상기 액티비티간의 워크플로우 경로 흐름을 제어하는 브랜치 액티비티(branch activity); 및 상기 컴포넌트 또는 상기 액티비티 서비스의 반복적인 실행을 제어하는 루프 액티비티(loop activity)를 포함한다.
본 발명의 다른 측면에 따르면, OSGi 환경의 선언적 서비스 조합을 위한 미들웨어 장치가 제공된다.
본 발명의 일 실시예에 따르면, OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 미들웨어 장치에 있어서, 다이어그램 설계에 기반하여 조합 서비스를 위한 디스크립션을 생성하는 디스크립션 생성부; 상기 디스크립션을 파싱하여 적어도 하나의 서비스 객체를 생성하고, 상기 서비스 객체 및 필요한 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하며, 상기 구성된 컴포넌트를 기반으로 서브 단위 액티비티 서비스를 생성하고, 상기 생성된 액티비티 서비스를 조립하여 추상적 워크플로우를 생성하는 구성부; 및 상기 구성된 컴포넌트 및 상기 액티비티 서비스를 상기 추상적 워크플로우상의 지정된 위치에 바인딩함으로써 서비스를 조합하여 워크플로우 기반 선언적 서비스를 생성하는 서비스 생성부를 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합을 위한 미들웨어 장치가 제공될 수 있다.
상기 선언적 서비스 조합을 상기 OSGi 서비스 저장소에 등록하는 등록부를 더 포함한다.
상기 OSGi 환경에 포함된 복수의 장치 각각에 대한 OSGi 서비스를 등록하는 등록부를 더 포함할 수 있다.
본 발명의 다른 실시예에 따르면, OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 시스템에 있어서, 워크플로우 디스크립션을 파싱하여 서비스 객체를 생성하는 Bean Manager부; OSGi 서비스에 대한 추적기를 구성하는 Reference Manager부; 서비스 객체 및 필요한 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하며, 상기 구성된 컴포넌트를 기반으로 서브 단위 액티비티 서비스를 생성하는 Activity Bean부; 구성된 컴포넌트 및 상기 액티비티 서비스를 상기 추상적 워크플로우상의 지정된 위치에 바인딩함으로써 서비스를 조합하여 워크플로우 기반 선언적 서비스를 생성하는 Container부; 및 선언적 서비스를 상기 OSGi 서비스 저장소에 등록하는 Service Manager부를 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 시스템이 제공될 수 있다.
본 발명의 일 실시예에 따른 OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치를 제공함으로써, 하드코딩 없이 서비스 변경에 따른 조합이 가능한 이점이 있다.
또한, 본 발명의 서비스의 검색 및 선택, 사용자의 요구뿐만 아니라 컨텍스트 전달까지도 선언적 방식으로 가능케 하여 하드코딩 없이 서비스 조합이 가능한 이점이 있다.
도 1은 본 발명의 일 실시예에 따른 OSGi 환경의 워크플로우 기반 선언적 서비스 조합 방법을 나타낸 순서도.
도 2에는 본 발명의 일 실시예에 따른 블루프린트 플러스에서 지원되는 매니저를 도시한 도면.
도 3은 본 발명의 일 실시예에 따른 액티비티 빈과 액티비티 서비스들 사이의 관계를 예시한 도면.
도 4는 본 발명의 일 실시예에 따른 컴포넌트 액티비티 빈에 대한 의사코드를 예시한 도면.
도 5는 본 발명의 일 실시예에 따른 프로세스 액티비티 빈에 대한 의사코드를 예시한 도면.
도 6은 본 발명의 일 실시예에 다른 로직 액티비티 빈에 대한 의사코드를 예시한 도면.
도 7은 본 발명의 일 실시예에 따른 액티비티간의 컨텍스트 전달 방법을 설명하기 위해 도시한 도면.
도 8은 본 발명의 일 실시예에 따른 액티비티 빈에 대한 신택스를 예시한 도면.
도 9는 본 발명의 일 실시예에 따른 OSGi 환경에서의 워크플로우 기반 선언적으로 서비스를 조합하는 방법을 설명하기 위해 도시한 도면.
도 10 및 도 11은 도 9에 따른 스마트 환경에 따른 서비스 구현 일예를 나타낸 도면.
도 12는 본 발명의 일 실시예에 따른 워크플로우 기반 선언적 서비스 조합을 위한 미들웨어 장치의 내부 구성을 개략적으로 도시한 도면.
도 13은 본 발명의 일 실시예에 따른 다이어그램 디자이너를 설명하기 위해 도시한 도면.
도 14는 본 발명의 일 실시예에 따른 워크플로우 기반 선언적 서비스 조합 매커니즘을 나타낸 시스템.
도 2에는 본 발명의 일 실시예에 따른 블루프린트 플러스에서 지원되는 매니저를 도시한 도면.
도 3은 본 발명의 일 실시예에 따른 액티비티 빈과 액티비티 서비스들 사이의 관계를 예시한 도면.
도 4는 본 발명의 일 실시예에 따른 컴포넌트 액티비티 빈에 대한 의사코드를 예시한 도면.
도 5는 본 발명의 일 실시예에 따른 프로세스 액티비티 빈에 대한 의사코드를 예시한 도면.
도 6은 본 발명의 일 실시예에 다른 로직 액티비티 빈에 대한 의사코드를 예시한 도면.
도 7은 본 발명의 일 실시예에 따른 액티비티간의 컨텍스트 전달 방법을 설명하기 위해 도시한 도면.
도 8은 본 발명의 일 실시예에 따른 액티비티 빈에 대한 신택스를 예시한 도면.
도 9는 본 발명의 일 실시예에 따른 OSGi 환경에서의 워크플로우 기반 선언적으로 서비스를 조합하는 방법을 설명하기 위해 도시한 도면.
도 10 및 도 11은 도 9에 따른 스마트 환경에 따른 서비스 구현 일예를 나타낸 도면.
도 12는 본 발명의 일 실시예에 따른 워크플로우 기반 선언적 서비스 조합을 위한 미들웨어 장치의 내부 구성을 개략적으로 도시한 도면.
도 13은 본 발명의 일 실시예에 따른 다이어그램 디자이너를 설명하기 위해 도시한 도면.
도 14는 본 발명의 일 실시예에 따른 워크플로우 기반 선언적 서비스 조합 매커니즘을 나타낸 시스템.
본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 OSGi 환경의 워크플로우 기반 선언적 서비스 조합 방법을 나타낸 순서도이고, 도 2에는 본 발명의 일 실시예에 따른 블루프린트 플러스에서 지원되는 매니저를 도시한 도면이며, 도 3은 본 발명의 일 실시예에 따른 액티비티 빈과 액티비티 서비스들 사이의 관계를 예시한 도면이고, 도 4는 본 발명의 일 실시예에 따른 컴포넌트 액티비티 빈에 대한 의사코드를 예시한 도면이며, 도 5는 본 발명의 일 실시예에 따른 프로세스 액티비티 빈에 대한 의사코드를 예시한 도면이고, 도 6은 본 발명의 일 실시예에 다른 로직 액티비티 빈에 대한 의사코드를 예시한 도면이며, 도 7은 본 발명의 일 실시예에 따른 액티비티간의 컨텍스트 전달 방법을 설명하기 위해 도시한 도면이고, 도 8은 본 발명의 일 실시예에 따른 액티비티 빈에 대한 신택스를 예시한 도면이다.
단계 110에서 미들웨어 장치(100)는 조합 서비스를 위한 워크플로우 디스크립션을 생성한다.
본 발명의 일 실시예에 따르면, 미들웨어 장치(100)는 다이어그램 설계에 기반하여 조합 서비스를 위한 디스크립션을 생성한다.
본 발명의 일 실시예에 따르면 선언적 서비스 조합을 위한 미들웨어를 제공한다. 이하 본 발명의 일 실시예에서는 해당 미들웨어를 "Blueprint Plus"라 명명하기로 한다.
본 발명의 일 실시예에 따르면 미들웨어를 기반으로, 서비스 객체(자바 객체)를 생성하고, 컴포넌트에 신규 생성된 서비스 객체를 인젝션(injection)할 수 있으며, 이를 기반으로 추상적 워크플로우를 생성한 후 지정된 위치에 서비스 객체와 액티비티 서비스를 바인딩하여 선언적으로 서비스를 조합할 수 있다. 우선, 이해와 설명의 편의를 도모하기 위해, 미들웨어 상에 신규 정의된 매니저에 대해 상세히 설명하기로 한다. 본 발명의 일 실시예에 따름 Blueprint 컨테이너에 기반하고 있는 것을 가정하기로 한다.
또한, 선언적 서비스 조합을 위해 신규 생성된 랭귀지를 OSCL(OSGi service compostion Language)라 칭하기로 한다.
OSCL은 기존의 블루프린트 문법을 훼손하지 않고 블루프린트 서비스에 적합하도록 만들어졌다.
본 발명의 일 실시예에 따른 OSCL은 기존의 블루프린트(blueprint)에서 매니저(manager)를 확장하여 신규 정의하였으며, 이를 이용하여 자바 객체를 신규 생성할 수 있으며, 객체와 컴포넌트 인스턴스를 포함하는 블루프린트 컴포넌트에 신규 생성된 자바 객체를 삽입(inject)할 수 있다.
자바에서 가장 많이 사용되는 컴포넌트 프레임워크 중 하나는 Spring Beans이다. 블루프린트(Blueprint)는 OSGi에 대한 추가 지원으로 Spring Bean과 거의 동일한 OSGi를 위한 종속성 주입 솔류션이다. 블루프린트는 OSGi 종속성을 주입 방식으로 관리하는데 있어 선언적 서비스와 거의 동일한 효과를 가진다.
블루프린트에서는 다수의 엘리먼트를 이용하여 컴포넌트를 정의한다 여기서, 각 엘리먼트는 블루프린트 컨테이너에서(Blueprint container)에서 기본 매니저(underlying manager)를 가질 수 있다. 각 블루프린트 컨테이너는 적어도 0개의 매니저를 포함할 수 있다.
또한, 매니저는 모든 컴포넌트 인스턴스의 수명주기를 책임지는 블루프린트 서비스의 핵심이다.
블루프린트 환경의 번들에는 블루프린트 컨테이너에 의해 파싱되어 매니저를 생성하고 활성화할 수 있는 다양한 XML 정의 자원들이 포함되어 있다. 매니저는 명시적 및 암시적으로 다른 매니저에 종속될 수 있다.
즉, 번들이 활성화될 때 서비스가 활성화되며 어플리케이션과 서비스가 연결될 수 있다.
본 발명의 일 실시예에 따르면, 블루프린트 XML 정의에는 하드코딩 없이 객체를 생성할 수 있는 세가지 타입의 매니저가 있으며, 필요한 컴포넌트 인스턴스를 연결하기 위해 종속성을 활성화시킬 수 있다.
도 2에는 본 발명의 일 실시예에 따른 블루프린트 플러스에서 지원되는 매니저가 예시되어 있다.
각각의 매니저에 대해 간략하게 설명하면 다음과 같다.
빈 매니저(Bean manager): 빈 매니저는 자바 객체를 생성하고, 객체와 컴포넌트 인스턴스를 포함하는 블루프린트 컨테이너로 생성된 자바 객체를 주입하기 위한 매니저이다.
레퍼런스 매니저(reference manager): OSGi 서비스상에서의 종속성을 핸들링하기 위한 매니저이다.
서비스 매니저(service manager): 컴포넌트 인스턴스가 제공되는 OSGi 서비스의 등록을 지원하기 위한 매니저이다.
블루프린트 플러스(BlueprintPlus)는 블루프린트 서비스 상단에 워크플로우 기반 조합(컴포지션) 미들웨어이다.
본 발명의 일 실시예에 따르면 빈 매니저는 액티비티 빈(Activity Bean)을 포함한다. 이러한 액티비티 빈은 다른 매니저에 의해 명시적/암시적으로 종속성을 가질 수 있음은 당연하다.
액티비티
빈(Activity Bean)
액티비티 빈(Activity Bean)은 선언적 서비스 조합
액티비티 빈은 컴포넌트 액티비티(CA: component activity), 프로세스 액티비티 (PA: process activity), 로직 액티비티 (LA: logic activity)를 포함한다.
도 3에는 세가지 타입의 액티비티 빈과 액티비티 서비스들 사이의 관계가 예시되어 있다.
컴포넌트 액티비티 빈(CA: component activity): 컴포넌트 액티비티 은 서비스 조합을 위한 블록을 생성한다. 특정 서비스의 요구되는 기능은 OSGi 서비스 인스턴스, 요구되는 서비스 인터페이스 및 모니터링/전달해야 하는 컴포넌트 인스턴스의 컨텍스트를 포함하는 컴포넌트 액티비티 빈에 주입된다.
컴포넌트 액티비티 빈은 주입된 서비스 인스턴스에 접근하기 위한 강력한 유형화된 인터페이스를 제공하고, 하위 서비스의 서비스 컨텍스트를 모니터링하고 전달하기 위한 값(value)을 제공한다.
컴포넌트 액티비티 빈은 다른 액티비티 빈으로 주입될 수 있기 때문에, 컴포넌트 액티비티 빈은 기본 구조를 나타내고, 워크플로우 기반 조합 서비스에서 구성 요소(constituent element)로써 사용되어야 한다.
컴포넌트 액티비티 빈은 액티비티 서비스(activity service)의 확장이다. 컴포넌트 액티비티 빈은 서비스 컴포넌트 인스턴스(자바 서비스, OSGi 서비스), 서비스 인터페이스, 컨텍스트 저장소, 컴포넌트 액티비티 실행자(CA executor)로 구성된다.
자바 서비스 또는 OSGi 서비스의 컴포넌트 인스턴스는 컴포넌트 엘리먼트의 serviceRef 속성을 정의하여 액티비티 빈의 일부로써 컴포넌트 액티비티 빈에 주입되어야 한다.
서비스 인스턴스의 기능(메소드)는 메소드-호출(Method-call) 엘리먼트의 값을 정의하여 액티비티 빈의 서비스 인터페이스로서 주입될 수 있다.
다른 액티비티 빈에서 접근할 수 있어야 하는 서비스 인스턴스의 속성(property)은 속성 엘리먼트(property element)를 사용하여 주입되어야 한다.
속성 엘리먼트는 컨텍스트를 상위 레벨 컨텍스트로 갱신하여 액티비티 빈이 상위 레벨 저장소의 속성 이름(property name)에 따라 특성 값을 가져오도록 할 수 있다.
할당 엘리먼트(Assign element)는 상위 레벨 저장소로부터 속성값(property value)을 가져오는데 사용되고, 속성 이름(property name)에 따라 값을 할당하는데 사용된다.
컴포넌트 액티비티 빈 실행자(CA Executor0는 언급된 모든 서비스 정보에 따라 컴포넌트 액티비티 빈의 엔트리로서 생성될 수 있다.
Java Reflection API를 사용하여 컴포넌트 액티비티 빈 내부의 하위 서비스에 액세스할 수 있다. 도 4에 이에 대한 의사코드가 예시되어 있다.
프로세스
액티비티
빈(PA: Process Activity-이하 PA라 칭하기로 함)
프로세스 액티비티 빈은 컴포넌트를 어떻게 연결하는지 어떻게 구성되는지를 기술하는 방법을 제공한다.
PA는 시퀀스 프로세스 액티비티 빈(SPA: sequence process activity)와 병렬 프로세스 액티비티 빈(PPA: parallel process activity)을 포함한다.
SPA는 순차적인 순서로 호출되어야 하는 액티비티 빈의 집합을 정의할 수 있다. SPA에서 액티비티는 동일 프로세스내의 이전 액티비티가 완료된 이후에 수행될 수 있다.
SPA는 액티비티 서비스를 확장한다. 순차적인 엘리먼트 내부에 정의된 액티비티는 액티비티 리스트를 형성한다.
SPA 프로세서 파서는 액티비티 리스트를 파싱함으로써 순차적인 프로세스를 생성할 수 있다. 실행자는 순차적인 프로세스를 실행하고 정의된 순서에 따라 액티비티를 하나씩 호출한다. SPA 내부의 액티비티들은 컨텍스트 주입 매커니즘을 사용하여 컨텍스트 정보를 동기화하도록 속성값을 갱신하고, SPA의 레포(repo)로부터 요구된 속성값을 가져온다. SPA의 소스가 도 5에 예시되어 있다.
PPA는 동시에 호출되는 액티비티들의 집합을 기술한다. PPA는 워크플로우 프로세스에서 하나의 제어 스레드가 여러 개의 제어 스레드로 분할되어 병렬로 실행될 수 있으므로 작업을 동시에 또는 임의의 순서로 실행할 수 있게 지원한다.
플로우 엘리먼트 내부의 액티비티는 액티비티 세트를 형성한다. SPA와 마찬가지로 PPA는 프로세스 파서에 의해 파싱되어 프로세스를 생성한다. SPA와의 차이점은 PA 실행자가 병렬 프로세스를 실행하고 동시에 액티비티를 호출하는 것이다.
컨텍스트 매커니즘은 SPA와 동일하다. 도 5에는 PPA의 의사코드의 일 예가 예시되어 있다.
컴포지션 정의에 따라 필요한 모든 액티비티가 정의된 PA에 주입되어야 한다. PA는 노드로써 다른 액티비티 빈으로 주입될 수도 있다.
로직
액티비티
빈(LA: Logic Activity-이하 LA라 칭하기로 함)
LA는 흐름 방향(flow direction)을 제어하는 커맨더 역할을 수행한다. LA는 요구되는 액티비티의 컨텍스트를 모니터링하기 위해 브랜치 로직 액티비티 빈(BLA: branch logic activity)와 루프 로직 액티비티 빈(LLA: loop logic activity)를 구현하고, 컴포지션 어플리케이션이 어떤 방식으로 진행되어야 하는지를 결정하는 기능을 수행한다.
BLA는 조건에 따라 워크플로우의 흐름 경로를 제어하는 기능을 수행한다. 즉, BLA는 로직 개체를 기반으로 워크플로우 경로를 제어할 수 있다. 또한, BLA는 두개 이상의 분기를 설정하고 분기 중 하나를 다음 실행 노드로 선택할 수 있다.
로직 개체는 삼항 연산자의 일부일 수 있다. 여기서, 삼상 연산자는 세가지 식을 처리하는 연산자이다.
간단한 3항 연산자 예를 통해 x와 y의 최소 두개를 z라는 세번째 변수에 할당할 수 있으며, 이의 예제는 다음과 같다.
BLA의 프로세서 파서는 "case" 엘리먼트에 정의된 액티비티를 파싱하고, 실행 가능한 액티비티를 실행자에게 전송하며, 조건 속성을 사용하여 정의된 삼항 연산자의 절반을 생성자에게 전송할 수 있다.
프로세서 생성자는 표현과 액티비티를 분석하여 완전한 삼항 연산자를 형성할 수 있다. 그 다음 삼항 연산자의 값을 가져오고 그 다음에 호출해야 하는 올바른 액티비티를 선택할 수 있다.
도 6에는BLA의 의사 코드가 예시되어 있다.
LLA는 while 루프를 만들어 여러 액티비티 중 하나를 선택하도록 할 수 있다.
LLA는 지정된 성공 기준이 충족될 때까지 액티비티를 반복한다. LLA는 삼항 연산자에 따라 여러 액티비티 사이에서 선택을 위한 "while" 루프를 생성한다. LLA가 작동하는 방식은 BLA와 유사하다. 프로세서 생성자는 삼항 연산자의 결과에 따라 올바른 실행 가능한 액티비티를 생성할 수 있다. LLA의 의사 코드는 도 6에 예시되어 있다.
LA 또한 다른 액티비티 빈에 주입될 수 있다.
지금까지 신규 정의된 액티비티 빈에 대해 상세히 설명하였다.
전술한 바와 같이 다른 액티비티에도 임의의 액티비티를 주입할 수 있다. 새로운 액티비티를 주입할 때 두 액티비티간의 상호 작용을 가능하게 하기 위해 액티비티 컨텍스트도 함께 전달되어야 한다(도 7의 (a) 참조). 모든 액티비티에는 컨텍스트 저장소가 있다. 따라서, 필요한 컨택스트 값은 끈김 없이 다른 액티비티로 이동될 수 있다(도 7의 (b) 참조).
최상위 노드가 모든 값을 받아들이면 각 액티비티간 저장소를 동기화하기 위해 모든 값을 이동시킬 수 있다(도 7의 (c) 참조).
지금까지 설명한 액티비티 빈 매니저에 포함되는 각각의 액티비티에 대한 신택스는 도 8과 같다.
상술한 액티비티 빈 매니저를 포함하여 조합 서비스 시나리오에 대한 워크플로우 디스크립션이 생성될 수 있다.
예를 들어, 사용자가 디자이너를 통해 블록 다이어그램을 배치하여 연결하는 경우, 해당 블록 다이어그램에 상응하는 워크플로우 디스크립션이 생성될 수 있다. 이때, 워크플로우 디스크립션은 전술한 바와 같이, 액티비티 빈 매니저를 포함하여 각 서비스 객체 및 OSGi 서비스를 포함하는 각 컴포넌트에 대한 액티비티 서비스가 정의될 수 있다.
단계 115에서, 미들웨어 장치(100)는 워크플로우 디스크립션을 파싱하여 적어도 하나의 서비스 객체(자바 객체)를 생성할 수 있다.
이어, 단계 120에서 미들웨어 장치(100)는 OSGi 서비스 저장소에서 필요한 OSGi 서비스에 대한 추적기를 생성한다. OSGi 서비스는 각 센서, 각 장비, 각 구성 등에 대해 등록된 서비스일 수 있다.
단계 125에서 미들웨어 장치(100)는 서비스 객체 및 추적되는 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하고, 구성된 컴포넌트에 대한 서브 단위 역할을 수행하는 복수의 액티비티 서비스를 생성한다.
단계 130에서 미들웨어 장치(100)는 생성된 액티비티 서비스를 조립(assemble)하여 추상적 워크플로우를 생성한다.
단계 135에서 미들웨어 장치(100)는 구성된 컴포넌트 및 액티비티 서비스를 생성된 추상적 워크플로우상의 지정된 위치에서 바인딩하여 워크플로우 기반 선언적 서비스 조합을 생성한다. 이때, 미들웨어 장치(100)는 모든 컴포넌트가 식별되고 식별된 컴포넌트간의 종속성 문제가 없는지 확인한 경우 추상적 워크플로우상의 각 위치에서 컴포넌트와 액티비티 서비스를 바인딩하여 서비스를 조합하여 선언적 서비스를 생성할 수 있다.
이와 같이 생성된 선언적 서비스는 OSGi 서비스 저장소에 저장되며(단계 140) 소비자에 의해 소모되도록 할 수 있다.
도 9는 본 발명의 일 실시예에 따른 OSGi 환경에서의 워크플로우 기반 선언적으로 서비스를 조합하는 방법을 설명하기 위해 도시한 도면이다.
예를 들어, 스마트 홈 환경을 가정하기로 한다. 예를 들어, 예를 들어, 스마트 홈 환경이 기상 센서, 복수의 창문 제어기, 문 복수의 제습기, 메시지 송신기 등과 같은 복수의 스마트 디바이스를 포함한다고 가정하기로 한다.
이와 같은 경우, 각각의 스마트 디바이스는 각각 클라이언트로 등록되며, OSGi 서비스 저장소에 각각 OSGi 서비스로 사전에 등록되어 있는 것을 가정하기로 한다.
조합 서비스를 위해, 사용자는 서비스 시나리오에 따른 워크플로우 디스크립션을 생성한다. 이때, 워크플로우 디스크립션은 이미 전술한 바와 같이, 각 서비스 객체 및 OSGi 서비스를 포함하는 복수의 컴포넌트 및 해당 컴포넌트에 대한 액티비티 서비스를 "Activity Bean"신택스를 이용하여 생성할 수 있다. 이는 이미 전술한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
미들웨어 장치(100)는 해당 워크플로우 디스크립션을 파싱함으로써 서비스 객체를 생성하고, OSGi 서비스에 대한 추적기를 생성하며 이를 포함하는 복수의 컴포넌트를 구성하고, 해당 컴포넌트에 대한 액티비티 서비스를 생성할 수 있다.
생성된 액티비티 서비스를 조립(assemble)함으로써 도 10및 도 11 도시된 바와 같은 추상적 워크플로우를 생성하고, 워크플로우의 지정된 위치에 각 컴포넌트와 액티비티 서비스를 바인딩하여 최종적으로 스마트 홈 환경에 대한 서비스를 조합할 수 있다.
도 12는 본 발명의 일 실시예에 따른 워크플로우 기반 선언적 서비스 조합을 위한 미들웨어 장치의 내부 구성을 개략적으로 도시한 도면이다.
도 12를 참조하면, 본 발명의 일 실시예에 따른 미들웨어 장치(100)는 디스크립션 생성부(1210), 구성부(1215), 서비스 생성부(1220) 및 등록부(1225)를 포함하여 구성된다. 또한, 도 12에는 도시되어 있지 않으나, 미들웨어 장치(100)는 메모리 및 프로세서를 포함하는 컴퓨팅 장치의 일 구성으로 포함될 수 있다. 또한, 해당 미들웨어 장치(100)는 자바 가상 머신의 OSGi 프레임워크 위에 구현될 수 있음은 당연하다.
디스크립션 생성부(1210)는 다이어그램 설계에 기반하여 조합 서비스를 위한 디스크립션을 생성하기 위한 수단이다.
본 발명의 일 실시예에 따르면, 사용자의 조합 서비스 생성의 편의를 도모하기 위해 도 13에 도시된 바와 같이 다이어그램 디자이너가 제공될 수 있다. 이와 같은 경우, 사용자는 생성하고자 하는 조합 서비스를 위한 OSGi 서비스에 대한 블록다이어그램을 배치하고 연결함으로 조합 서비스 시나리오를 생성할 수 있다.
이와 같은 조합 서비스 시나리오가 생성되면, 미들웨어 장치(100)는 이를 해독하여 워크플로우 디스크립션을 생성할 수 있다.
워크플로우 디스크립션은 도 2 내지 도 8을 참조하여 설명한 바와 같이 컴포넌트 및 액티비티 서비스 구성을 위한 액티비티 빈 매니저를 포함할 수 있으며, 이는 이미 전술한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
구성부(1215)는 디스크립션을 파싱하여 적어도 하나의 서비스 객체를 생성하고, 서비스 객체 및 필요한 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하며, 구성된 컴포넌트를 기반으로 하위 서비스 단위인 액티비티 서비스를 생성하고, 생성된 액티비티 서비스를 조립하여 추상적 워크플로우를 생성하기 위한 수단이다. 이는 이미 전술한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
서비스 생성부(1220)는 구성된 컴포넌트 및 액티비티 서비스를 추상적 워크플로우상의 지정된 위치에 바인딩하여 워크플로우 기반 선언적 서비스를 조합하여 서비스를 생성하기 위한 수단이다.
등록부(1225)는 생성된 서비스를 등록하기 위한 수단이다. 또한, 등록부(1225)는 이외에도 OSGi 환경에 포함되는 모든 스마트 디바이스를 OSGi 서비스로 등록할 수도 있다.
도 14에는 상술한 시스템을 개략적으로 도시한 블록도이다. 각각의 구성은 이미 전술한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
상술한 본 발명에 따른 OSGi 환경의 선언적 서비스 조합 방법은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
상기한 본 발명의 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대한 통상의 지식을 가지는 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.
100: 미들웨어 장치
1210: 디스크립션 생성부
1215: 구성부
1220: 서비스 생성부
1225: 등록부
1210: 디스크립션 생성부
1215: 구성부
1220: 서비스 생성부
1225: 등록부
Claims (12)
- 미들웨어 장치가 OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 방법에 있어서,
조합 서비스 시나리오에 대한 워크플로우 디스크립션을 파싱하여 적어도 하나의 서비스 객체를 생성하는 단계;
OSGi 서비스 저장소에서 필요한 OSGi 서비스를 추적하는 단계;
상기 서비스 객체 및 상기 추적되는 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하고, 상기 복수의 컴포넌트 각각에 대한 액티비티, 프로세스 및 로직 중 적어도 하나에 대한 액티비티 서비스를 각각 생성하는 단계;
상기 생성된 액티비티 서비스를 조립(assemble)하여 추상적 워크플로우를 생성하는 단계; 및
상기 구성된 컴포넌트 및 상기 액티비티 서비스를 상기 추상적 워크플로우상의 지정된 위치에서 바인딩함으로써 서비스를 조합하여 워크플로우 기반 선언적 서비스를 생성하는 단계를 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법.
- 제1 항에 있어서,
상기 선언적 서비스를 생성하는 단계 이후에,
상기 선언적 서비스를 상기 OSGi 서비스 저장소에 저장하는 단계를 더 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법.
- 제1 항에 있어서,
상기 OSGi 서비스는 상기 OSGi 환경에 포함되는 복수의 장치인 것을 특징으로 하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법.
- 제1 항에 있어서,
상기 복수의 컴포넌트 각각에 대한 액티비티, 프로세스 및 로직 중 적어도 하나에 대한 액티비티 서비스는 액티비티 빈(Activity bean)에 의해 상기 워크플로우 디스크립션에 정의되는 것을 특징으로 하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법.
- 제4 항에 있어서,
상기 액티비티 빈(Activity bean)은,
컴포넌트 액티비티를 생성하는 컴포넌트 액티비티(component activity);
상기 생성된 컴포넌트 상호간의 연결을 구성하는 프로세스 액티비티(process activity); 및
상기 컴포넌트간의 경로 흐름을 제어하는 로직 액티비티(logic activity)를 포함하는 것을 특징으로 하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법.
- 제5 항에 있어서,
상기 프로세스 액티비티는,
상기 컴포넌트간의 순차적인 실행 순서를 구성하는 시퀀스 액티비티(sequence activity);
상기 컴포넌트간의 병렬적 실행 순서를 구성하는 패러럴 액티비티(parallel activity)를 포함하는 것을 특징으로 하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법.
- 제5 항에 있어서,
상기 로직 액티비티는,
상기 액티비티간의 워크플로우 경로 흐름을 제어하는 브랜치 액티비티(branch activity); 및
상기 컴포넌트 또는 상기 액티비티 서비스의 반복적인 실행을 제어하는 루프 액티비티(loop activity)를 포함하는 것을 특징으로 하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합 방법.
- 제1 항 내지 제7 항 중 어느 하나의 항에 따른 방법을 수행하기 위한 프로그램 코드를 기록한 컴퓨터로 판독 가능한 기록매체.
- OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 미들웨어 장치에 있어서,
다이어그램 설계에 기반하여 조합 서비스를 위한 디스크립션을 생성하는 디스크립션 생성부;
상기 디스크립션을 파싱하여 적어도 하나의 서비스 객체를 생성하고, 상기 서비스 객체 및 필요한 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하며, 상기 구성된 컴포넌트를 기반으로 서브 단위 액티비티 서비스를 생성하고, 상기 생성된 액티비티 서비스를 조립하여 추상적 워크플로우를 생성하는 구성부; 및
상기 구성된 컴포넌트 및 상기 액티비티 서비스를 상기 추상적 워크플로우상의 지정된 위치에 바인딩함으로써 서비스를 조합하여 워크플로우 기반 선언적 서비스를 생성하는 서비스 생성부를 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합을 위한 미들웨어 장치.
- 제9 항에 있어서,
상기 선언적 서비스 조합을 OSGi 서비스 저장소에 등록하는 등록부를 더 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합을 위한 미들웨어 장치.
- 제9 항에 있어서,
상기 OSGi 환경에 포함된 복수의 장치 각각에 대한 OSGi 서비스를 등록하는 등록부를 더 포함하는 것을 특징으로 하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스 조합을 위한 미들웨어 장치.
- OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 시스템에 있어서,
워크플로우 디스크립션을 파싱하여 서비스 객체를 생성하는 Bean Manager부;
OSGi 서비스에 대한 추적기를 구성하는 Reference Manager부;
서비스 객체 및 필요한 OSGi 서비스를 포함하는 복수의 컴포넌트를 구성하며, 상기 구성된 컴포넌트를 기반으로 서브 단위 액티비티 서비스를 생성하는 Activity Bean부;
구성된 컴포넌트 및 상기 액티비티 서비스를 추상적 워크플로우상의 지정된 위치에 바인딩함으로써 서비스를 조합하여 워크플로우 기반 선언적 서비스를 생성하는 Container부; 및
선언적 서비스를 OSGi 서비스 저장소에 등록하는 Service Manager부를 포함하는 OSGi 환경에서의 워크플로우 기반 선언적 서비스를 조합하는 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170054525A KR101907784B1 (ko) | 2017-04-27 | 2017-04-27 | OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170054525A KR101907784B1 (ko) | 2017-04-27 | 2017-04-27 | OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101907784B1 true KR101907784B1 (ko) | 2018-12-07 |
Family
ID=64669325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170054525A KR101907784B1 (ko) | 2017-04-27 | 2017-04-27 | OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101907784B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090177955A1 (en) | 2008-01-08 | 2009-07-09 | Zhen Liu | Method and system for modeling user requests, applications and components used in dynamic application assembly |
JP2014229114A (ja) | 2013-05-23 | 2014-12-08 | 日本電信電話株式会社 | OSGiサービス登録装置、登録方法および登録プログラム |
-
2017
- 2017-04-27 KR KR1020170054525A patent/KR101907784B1/ko active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090177955A1 (en) | 2008-01-08 | 2009-07-09 | Zhen Liu | Method and system for modeling user requests, applications and components used in dynamic application assembly |
JP2014229114A (ja) | 2013-05-23 | 2014-12-08 | 日本電信電話株式会社 | OSGiサービス登録装置、登録方法および登録プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8108834B2 (en) | Defining and executing processes using declarative programming language constructs | |
US9323647B2 (en) | Request-based activation of debugging and tracing | |
US20160350435A1 (en) | System and method for data-driven web page navigation control | |
US8307054B2 (en) | Systems and/or methods for location transparent routing and execution of processes | |
US20120159421A1 (en) | System and Method for Exclusion of Inconsistent Objects from Lifecycle Management Processes | |
US10417118B2 (en) | Development-time awareness of a production dependency injection environment | |
US10732934B2 (en) | Information-technology workflows using executable tiles | |
EP1678653A2 (en) | Scalable synchronous and asynchronous processing of monitoring rules | |
US20130185431A1 (en) | Uniform Definition, Provision, and Access of Software Services on the Cloud | |
US9491266B2 (en) | Representational state transfer communications via remote function calls | |
KR20140023971A (ko) | 고도로 동시적인 처리 작업들의 등록 및 실행 | |
EP3384380B1 (en) | Method and apparatus for declarative action orchestration | |
US20230037199A1 (en) | Intelligent integration of cloud infrastructure tools for creating cloud infrastructures | |
US10733013B2 (en) | Information-technology workflows using executable tiles distributed between workflow instances | |
US11003466B2 (en) | Information-technology workflows using executable tiles with plural user interfaces | |
US20150317133A1 (en) | Cobol reference architecture | |
Breitenbücher et al. | Declarative vs. imperative: How to model the automated deployment of iot applications? | |
US10223143B2 (en) | System and method for supporting javascript as an expression language in a process defined by a process execution language for execution in a SOA middleware environment | |
Képes et al. | Policy-Aware Provisioning Plan Generation for TOSCA-based Applications | |
US20120096057A1 (en) | Default object fragments | |
KR101907784B1 (ko) | OSGi 환경의 선언적 서비스 조합 방법 및 이를 위한 미들웨어 장치 | |
Chen et al. | Service encapsulation for middleware management interfaces | |
US10732947B2 (en) | Information-technology workflow using tiles that declaratively specify datatypes | |
Schuette et al. | Exploiting instruction-level resource parallelism for transparent, integrated control-flow monitoring | |
US11023839B2 (en) | Workflow integration |