KR101732922B1 - Gui 기반의 비동기 방식 코딩 시스템 및 방법 - Google Patents
Gui 기반의 비동기 방식 코딩 시스템 및 방법 Download PDFInfo
- Publication number
- KR101732922B1 KR101732922B1 KR1020150180924A KR20150180924A KR101732922B1 KR 101732922 B1 KR101732922 B1 KR 101732922B1 KR 1020150180924 A KR1020150180924 A KR 1020150180924A KR 20150180924 A KR20150180924 A KR 20150180924A KR 101732922 B1 KR101732922 B1 KR 101732922B1
- Authority
- KR
- South Korea
- Prior art keywords
- workflow
- submission
- attribute
- function
- submissions
- Prior art date
Links
Images
Classifications
-
- G06F9/4443—
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
GUI 기반 비동기 방식 코딩 시스템 및 방법이 개시된다. 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템은, 복수의 서브미션(submission)을 순서대로 처리하기 위한 작업을 정의한 워크플로우(workflow)의 기본정보와 처리해야 할 작업에 대한 상세 정보를 정의하는 스텝정보를 입력받아 프라미스 워크플로우(promise workflow)를 생성하고 관리하는 워크플로우 관리자; 생성된 상기 프라미스 워크플로우를 도안화하여 화면에 출력하는 GUI 관리자; 및 생성된 상기 프라미스 워크플로우를 지정된 프로그래밍 언어 형식으로 코딩하는 프로그래밍부를 포함할 수 있다.
Description
본 발명은 GUI 기반의 비동기 방식 코딩 시스템 및 방법에 관한 것이다.
기존에 복잡한 업무 화면을 개발하는 경우 대부분 서버에서 정보를 가져오거나 서버로 정보를 보내기 위한 다수의 비동기 통신을 동시에 호출하게 된다. 이 경우 개발자는 각각의 통신 결과를 받은 시점의 상황을 프로그램적으로 체크해 적절한 콜백(callback) 함수를 사용하여 컨트롤해야만 했다.
이러한 코딩 방식은 비동기 함수 호출이나 이벤트 처리가 필요한 HTML5 UI 프로그램을 만드는 개발자에게 가장 어렵고 복잡한 작업이며, 많은 개발 실수로 오류 및 성능 저하가 빈번하게 발생하는 HTML5 프로그래밍의 어려운 점으로 인식되어 왔다. 특히 기존의 X-Internet 제품 등을 통해 동기식 프로그램 방식에 익숙해져 있는 다수의 개발자들은 이러한 이벤트-구동형(Event-driven) 혹은 비동기 방식의 코딩에 적응하는데 많은 어려움을 겪고 있다.
본 발명은 다수의 비동기 처리 로직을 직관적인 GUI 방식으로 간단하게 정의하고 적용할 수 있게 하여 HTML5에서 기본적으로 사용되는 비동기 통신으로 인해 발생하는 프로그램의 복잡성을 개선한 GUI 기반의 비동기 방식 코딩 시스템 및 방법을 제공하기 위한 것이다.
본 발명은 업무처리의 복잡한 순서나 처리 조건을 GUI 기반의 프라미스 워크플로우(promise workflow)로 손쉽게 정의하고 개발자는 단순하게 비동기 호출의 결과가 도착했을 때의 처리 로직만 구현하면 충분하여 개발의 복잡성을 개선한 GUI 기반의 비동기 방식 코딩 시스템 및 방법을 제공하기 위한 것이다.
본 발명은 기존의 복잡한 콜백 처리 기능을 구현하면서 겪었던 프로그래밍의 복잡함을 줄여줄 뿐만 아니라 복잡한 업무처리 로직으로 발생할 수 있는 코딩 오류 및 성능 저하를 제거하여 응답 속도를 최적화해주는 성능 튜닝 효과도 제공하는 GUI 기반의 비동기 방식 코딩 시스템 및 방법을 제공하기 위한 것이다.
본 발명의 다른 목적들은 이하에 서술되는 바람직한 실시예를 통하여 보다 명확해질 것이다.
본 발명의 일 측면에 따르면, 복수의 서브미션(submission)을 순서대로 처리하기 위한 작업을 정의한 워크플로우(workflow)의 기본정보와 처리해야 할 작업에 대한 상세 정보를 정의하는 스텝정보를 입력받아 프라미스 워크플로우(promise workflow)를 생성하고 관리하는 워크플로우 관리자; 생성된 상기 프라미스 워크플로우를 도안화하여 화면에 출력하는 GUI 관리자; 및 생성된 상기 프라미스 워크플로우를 지정된 프로그래밍 언어 형식으로 코딩하는 프로그래밍부를 포함하는 GUI 기반 비동기 방식 코딩 시스템이 제공된다.
상기 기본정보는 상기 워크플로우에 대한 ID, 프로세스 메시지, 완료 콜백(resolveCallback) 함수, 거부 콜백(rejectCallback) 함수 중 하나 이상을 포함할 수 있다.
상기 스텝정보는 스텝의 작업 종류를 지정하는 type 속성, 선처리에 사용할 함수에 관한 pre 속성, 수행할 서브미션 ID를 지정하는 action 속성, 후처리에 사용할 함수에 관한 post 속성 중 하나 이상의 속성을 포함할 수 있다.
상기 워크플로우 관리자는 상기 스텝정보에 기초하여 등록된 스텝 리스트가 각 스텝의 속성에 따라 비동기 방식으로 직렬(serial) 형태 혹은 병렬(parallel) 형태로 호출되도록 할 수 있다.
상기 GUI 관리자는 상기 복수의 서브미션이 서로 구분되는 행에 순차적으로 배치되고, 각 서브미션에 대해 호출, 호출 후의 응답 수신 전, 콜백, 자바스크립트 함수를 나타낸 도형으로 구분하여 시계열적으로 배열하는 구조로 도안화할 수 있다.
상기 프로그래밍부는 XML 형식 혹은 JSON 형식의 프로그래밍 언어로 코딩을 수행할 수 있다.
한편 본 발명의 다른 측면에 따르면, GUI 기반 비동기 방식 코딩 방법과 이를 수행하기 위한 프로그램이 기록된 기록매체가 제공된다.
일 실시예에 따른 GUI 기반 비동기 방식 코딩 방법은, 복수의 서브미션(submission)을 순서대로 처리하기 위한 작업을 정의한 워크플로우(workflow)의 기본정보를 입력받는 단계; 처리해야 할 작업에 대한 상세 정보를 정의하는 스텝정보를 입력받는 단계; 상기 기본정보와 상기 스텝정보에 기초하여 프라미스 워크플로우(promise workflow)를 생성하고 관리하는 단계; 생성된 상기 프라미스 워크플로우를 도안화하여 화면에 출력하는 단계; 및 생성된 상기 프라미스 워크플로우를 지정된 프로그래밍 언어 형식으로 코딩하는 단계를 포함할 수 있다.
상기 프라미스 워크플로우를 생성하고 관리하는 단계는, 상기 스텝정보에 기초하여 등록된 스텝 리스트가 각 스텝의 속성에 따라 비동기 방식으로 직렬(serial) 형태 혹은 병렬(parallel) 형태로 호출되도록 할 수 있다.
상기 화면 출력 단계는 상기 복수의 서브미션이 서로 구분되는 행에 순차적으로 배치되고, 각 서브미션에 대해 호출, 호출 후의 응답 수신 전, 콜백, 자바스크립트 함수를 나타낸 도형으로 구분하여 시계열적으로 배열하는 구조로 도안화할 수 있다.
상기 코딩 단계는 XML 형식 혹은 JSON 형식의 프로그래밍 언어로 코딩을 수행할 수 있다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명에 따르면, 다수의 비동기 처리 로직을 직관적인 GUI 방식으로 간단하게 정의하고 적용할 수 있게 하여 HTML5에서 기본적으로 사용되는 비동기 통신으로 인해 발생하는 프로그램의 복잡성을 개선한 효과가 있다.
또한, 업무처리의 복잡한 순서나 처리 조건을 GUI 기반의 프라미스 워크플로우로 손쉽게 정의하고 개발자는 단순하게 비동기 호출의 결과가 도착했을 때의 처리 로직만 구현하면 충분하여 개발의 복잡성을 개선한 효과가 있다.
또한, 기존의 복잡한 콜백 처리 기능을 구현하면서 겪었던 프로그래밍의 복잡함을 줄여줄 뿐만 아니라 복잡한 업무처리 로직으로 발생할 수 있는 코딩 오류 및 성능 저하를 제거하여 응답 속도를 최적화해주는 성능 튜닝 효과도 제공한다.
도 1은 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템의 구성을 나타낸 도면,
도 2는 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 방법의 순서도,
도 3은 프라미스 인터페이스에 대한 도면,
도 4는 워크플로우 관리자의 구현예시도,
도 5는 직렬 형태 호출 샘플,
도 6은 병렬 형태 호출 샘플,
도 7은 복잡한 형태의 호출 샘플,
도 8 내지 도 9는 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템에 의해 구현되는 보험 시스템에서의 프라미스 워크플로우 흐름도와 서브미션 플로우 및 코딩 내용을 나타낸 도면,
도 10은 본 실시예에 따른 프라미스 워크플로우 방식과 기존의 Ajax 동기 통신, Ajax 비동기 통신의 복잡도를 비교한 표,
도 11 내지 도 13은 동기 통신, 비동기 통신, 프라미스 워크플로우 방식의 실제 구현 예시도.
도 2는 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 방법의 순서도,
도 3은 프라미스 인터페이스에 대한 도면,
도 4는 워크플로우 관리자의 구현예시도,
도 5는 직렬 형태 호출 샘플,
도 6은 병렬 형태 호출 샘플,
도 7은 복잡한 형태의 호출 샘플,
도 8 내지 도 9는 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템에 의해 구현되는 보험 시스템에서의 프라미스 워크플로우 흐름도와 서브미션 플로우 및 코딩 내용을 나타낸 도면,
도 10은 본 실시예에 따른 프라미스 워크플로우 방식과 기존의 Ajax 동기 통신, Ajax 비동기 통신의 복잡도를 비교한 표,
도 11 내지 도 13은 동기 통신, 비동기 통신, 프라미스 워크플로우 방식의 실제 구현 예시도.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 각 도면을 참조하여 설명하는 실시예의 구성 요소가 해당 실시예에만 제한적으로 적용되는 것은 아니며, 본 발명의 기술적 사상이 유지되는 범위 내에서 다른 실시예에 포함되도록 구현될 수 있으며, 또한 별도의 설명이 생략될지라도 복수의 실시예가 통합된 하나의 실시예로 다시 구현될 수도 있음은 당연하다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일하거나 관련된 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템의 구성을 나타낸 도면이고, 도 2는 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 방법의 순서도이며, 도 3은 프라미스 인터페이스에 대한 도면이고, 도 4는 워크플로우 관리자의 구현예시도이며, 도 5는 직렬 형태 호출 샘플이고, 도 6은 병렬 형태 호출 샘플이며, 도 7은 복잡한 형태의 호출 샘플이다.
본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템은 HTML5 개발에서 사용되는 비동기 통신으로 인해 발생하는 프로그래밍의 복잡성과 성능 문제를 직관적인 GUI 방식으로 단순화하여 HTML5 성능 튜닝을 보다 쉽게 진행할 수 있도록 개발 생산성과 편의성을 개선시킨 것을 특징으로 한다.
본 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템(100)은 워크플로우 관리자(110), GUI 관리자(120), 프로그래밍부(130)를 포함한다.
워크플로우 관리자(110)는 프라미스(promise) 인터페이스의 워크플로우(workflow)에 대한 생성, 수정, 삭제를 관리한다.
프라미스 인터페이스는 프라미스가 생성된 순간에는 알 필요가 없는 값에 대한 프록시로 볼 수 있다. 비동기 액션이 성공하거나 실패한 순간에 작동하는 핸들러를 연결할 수 있다. 이러한 특징으로 인해 비동기 메소드에서도 동기 메소드인 것처럼 값을 곧바로 반환할 수 있게 된다. 즉, 프라미스 인터페이스는 최종 결과를 반환하는 대신 미래에 존재하게 될 어떤 값에 대한 약속을 반환하는 것이다.
대기 중인 프라미스는 곧 약속을 충족(fulfilled)시킬 수도 있고, 혹은 무슨 일이 생겨 거부(rejected)될 수도 있다. 이러한 사건이 발생하게 되면, 프라미스의 then 메소드에 의해 대기 중이던 관련 핸들러가 호출된다(도 3 참조).
워크플로우 관리자(110)는 이러한 프라미스 인터페이스의 특징을 반영하여 워크플로우를 관리함으로써, HTML5 프로그래밍 중 비동기 통신에 대해 쉽게 프로그래밍할 수 있도록 지원한다. 이하에서는 이처럼 프라미스 인터페이스의 특징이 반영된 워크플로우를 프라미스 워크플로우(promise workflow)라 칭하기도 한다.
또한, 프라미스 인터페이스의 경우 학습 곡선(learning curve)이 높아 개발자가 손쉽게 적용하기 어려운 점이 있는데, 워크플로우 관리자(110)는 이에 대해서 워크플로우에 대한 기본정보, 스텝정보만을 입력받음으로써 용이하게 프라미스 인터페이스를 적용하여 비동기 통신을 컨트롤할 수 있게 한다.
워크플로우 관리자(110)를 실제 구현한 예시가 도 4에 도시되어 있으며, 이에 대해서 이하 모듈 단위를 중심으로 설명하기로 한다.
워크플로우 관리자(110)는 기본정보 입력 모듈(112), 스텝정보 입력 모듈(114), 워크플로우 생성 모듈(116)을 포함한다.
기본정보 입력 모듈(112)은 생성하고자 하는 워크플로우에 대한 기본정보를 입력받는다(단계 S200). 워크플로우는 여러 건의 서브미션(submission)을 순서대로 처리하기 위한 작업을 정의하는 노드이다.
워크플로우에 대한 기본정보로는 워크플로우 ID(workflow ID), 프로세스 메시지(Process Message), 완료 콜백(resolveCallback) 함수, 거부 콜백(rejectCallback) 함수 중 하나 이상이 포함될 수 있다. 워크플로우 ID는 작업그룹에 대한 ID로서, 워크플로우에서 중복되지 않도록 선언되어야 한다. 워크플로우 ID는 자동 채번될 수 있으며, 필요에 따라서는 자동 채번 기능을 온/오프(On/Off)시킬 수 있다. 프로세스 메시지는 워크플로우가 기동될 때 표현될 메시지이다. 완료 콜백 함수는 처리해야 할 작업이 모두 완료된 다음 호출할 함수에 대해서 정의하며, 거부 콜백 함수는 작업 처리 도중 에러 발생 시 호출할 함수에 대해서 정의한다.
워크플로우의 하위 노드로는 스텝(step)이 정의되며, 스텝은 여러 건의 작업을 순서대로 처리하기 위한 작업 정의 노드이다.
스텝정보 입력 모듈(114)은 워크플로우에 포함되는 각 스텝에 대한 정보를 입력받는다(단계 S210). 여기서, 스텝(step)이라 함은 처리해야 할 작업에 대한 상세 정보를 정의하는 노드로, 다음과 같은 속성을 가진다.
type 속성은 스텝의 작업 종류를 지정하며, 함수(function), 제출(submit), 제출완료(submitDone)를 설정할 수 있다. 함수에서는 진행바(progressBar)의 처리나 실행 전에 처리할 내용을 작성할 수 있다. 기본 값은 서브미션(submission)이다.
pre 속성은 선처리에 사용할 함수 이름을 입력하거나 함수를 직접 작성할 수도 있다. 리턴 값에 따라 서브미션이 수행될 수 있다. pre 속성은 type 속성이 서브미션인 경우 정의하며, 생략 가능하다.
action 속성은 수행할 서브미션 ID를 지정한다. 서브미션과 서브미션완료(submissionDone)의 ID는 동일값으로 매칭되어야 한다.
post 속성은 후처리에 사용할 함수 이름을 입력하거나 함수를 직접 작성할 수도 있다. 서브미션의 제출완료 후에 실행되며, 생략 가능하다.
또한, 스텝정보 입력 모듈(114)은 등록된 스텝 리스트를 자동으로 직렬화(Serial Step)하거나 병렬화(Parallel Step)할 수 있다. 마지막 행에 스텝을 추가(Add Step)할 수도 있고, 선택한 행(row) 상위에 스텝을 추가(Insert Step)할 수도 있다. 또한, 선택한 스텝을 수정(Modify Step)하거나 선택한 스텝을 삭제(Delete Step)하거나 스텝의 순서를 이동(Up/Down)시킬 수도 있다.
워크플로우 생성 모듈(116)은 입력된 워크플로우에 대한 기본정보 및 스텝정보에 기초하여 프라미스 워크플로우를 생성한다(단계 S220).
프라미스 워크플로우는 입력된 스텝정보에 기초하여 등록된 스텝 리스트가 각 스텝의 속성에 따라 비동기 방식으로 직렬(serial) 형태 혹은 병렬(parallel) 형태로 호출되도록 할 수 있다.
직렬 형태의 호출 샘플이 도 5에 도시되어 있고, 병렬 형태의 호출 샘플이 도 6에 도시되어 있으며, 직렬과 병렬이 혼합된 복잡한 형태의 호출 샘플이 도 7에 도시되어 있다.
도 5의 (a)를 참조하면, 서브미션 1이 호출되고서 서브미션 1에 대한 응답을 수신하여 콜백이 이루어진 이후 서브미션 2가 호출된다. 그리고 서브미션 2에 대한 응답을 수신하여 콜백이 이루어진 이후 서브미션 3이 호출되고, 서브미션 3에 대한 콜백이 이루어지면 최종적으로 전체 함수에 대한 콜백이 수행된다. 즉, 서브미션들이 순차적으로 선행하는 서브미션이 완료된 이후에서야 후행하는 서브미션이 호출되는 구조를 가지고 있다.
도 5의 (b)를 참조하면, 서브미션 1이 호출되고서 서브미션 1에 대한 응답을 수신하여 작업이 완료되면 callback 1을 콜백한다. 이후 서브미션 2는 cond2 조건이 충족되면 호출되며, 서브미션 2에 대한 응답을 수신하여 작업이 완료되면 callback 2를 콜백한다. 이후 서브미션 3은 cond3 조건이 충족되면 호출되며, 서브미션 3에 대한 응답을 수신하여 작업이 완료되면, 전체 함수에 대한 콜백이 수행된다. 이 경우에도 서브미션들이 순차적으로 선행하는 서브미션이 완료되고 소정의 조건을 만족하는 경우에서야 후행하는 서브미션이 호출되는 구조를 가지고 있다.
도 6의 (a)를 참조하면, 서브미션 1~3이 순차적으로 호출되는데 앞서 호출된 서브미션에 따른 작업이 완료되지 않더라도 다른 서브미션들이 호출될 수 있다. 그리고 각 서브미션들이 개별적으로 작업을 완료하여 순차적으로 콜백이 이루어지면, 최종적으로 전체 함수에 대한 콜백이 수행된다. 즉, 서브미션들이 병렬적으로 진행되는 구조를 가지고 있다.
도 6의 (b)를 참조하면, 도 6의 (a)와 차이점이 서브미션 2에 대해서 조건 cond2가 부가되어 있어 해당 조건이 만족되면 서브미션 2가 호출되도록 한 점이다. 그 외에는 선행하는 서브미션에 대한 작업이 완료되기 이전이라도 호출이 이루어진 경우라면 후행하는 서브미션들도 호출될 수 있게 되어, 역시 서브미션들이 병렬적으로 진행되는 구조를 가지고 있다.
도 7를 참조하면, 직렬 형태와 병렬 형태가 혼합된 복잡한 형태의 호출 샘플이 도시되어 있다. 제1 그룹에 속하는 서브미션 1과 서브미션 2는 직렬 형태의 호출 구조를 가지고 있고, 제2 그룹에 속하는 서브미션 3부터 서브미션 5까지는 병렬 형태의 호출 구조를 가지고 있으며, 서브미션 6은 제3 그룹에 속하는데, 그룹들은 서로 직렬 형태의 호출 구조를 가지고 있다.
다시 도 1을 참조하면, GUI 관리자(120)는 워크플로우 생성 모듈(116)에 의해 생성된 프라미스 워크플로우를 개발자가 직관적으로 확인할 수 있도록 도안화하여 화면에 표시한다(단계 S230). 화면 표시를 위해 GUI 기반 비동기 방식 코딩 시스템(100)은 디스플레이를 구비하고 있거나 디스플레이 수단에 유선 혹은 무선 네트워크를 통해 연결될 수 있다.
도안화하는 방식은 생성된 프라미스 워크플로우의 분석 결과를 도 5 내지 도 7에 도시된 것처럼 직렬 형태, 병렬 형태 혹은 이 둘이 혼합된 복잡한 형태의 호출 구조로 구분하는 것이다. 서브미션들은 서로 구분되는 행에 순차적으로 배치되며, 임의의 서브미션은 호출, 호출 후 응답 수신 전, 콜백, 자바스크립트 함수를 나타내는 도형으로 구분하여 시계열적으로 배열함으로써, 개발자가 정의한 서브미션들의 호출과 콜백에 대한 처리 과정을 직관적으로 확인할 수 있게 된다.
프로그래밍부(130)는 GUI 관리자(120)에 의해 표시된 프라미스 워크플로우를 지정된 프로그래밍 언어로 프로그래밍하여 코드를 생성한다(단계 S240). 생성된 코드는 타 시스템에 제공되어 비동기 통신을 하는데 주로 사용되는 서브미션에 대한 비동기 처리를 지원하는 프로그램으로서 기능할 수 있다.
프로그래밍 언어로는 예를 들어 XML 형식 혹은 JSON 형식이 적용될 수 있다.
XML 형식의 경우, 개략적인 구조는 다음과 같다.
XML 형식에서, workflow의 최상위 노드는 workflowCollection으로 <xf:model> 아래에 정의된다.
workflowCollection의 하위 노드는 workflow로, 여러건의 submission을 순서대로 처리하기 위한 작업 정의 노드이며, type(submission, submissionCallback)과 id로 call과 callback을 연결하고 정의된 순서대로 submission 실행 및 callback 순서를 보장한다.
workflow 노드는 여러 건의 submission을 순서대로 처리하기 위한 작업을 정의하는 노드이다.
id 속성은 작업그룹에 대한 id로 workflow에서 중복되지 않도록 선언되어야 한다. promise의 내부 예약어로 사용되고 있는 get, set, create, remove, getOption, setOption은 사용될 수 없다. finalCallback 속성은 처리해야 할 작업이 모두 완료된 다음 호출할 함수에 대해서 정의한다. rejectCallback 속성은 작업 처리 도중 에러발생시 또는 workflowObj.reject() 함수가 호출된 다음 호출할 함수에 대해서 정의한다. workflowObj = $w.workflow.getWorkflow(id) 로 get 할 수 있다.
workflow의 하위 노드는 step으로 여러건의 작업을 순서대로 처리하기 위한 작업 정의 노드이다.
step 노드는 처리해야 할 작업에 대한 상세 정보를 정의하는 노드로, submission 없이 submissionCallback의 정의는 불가능하다.
type 속성은 step의 작업종류를 지정한다. function, submit, submitDone을 설정할 수 있다. function 속성에서는 progressBar 의 처리나 실행 전에 처리할 내용을 작성할 수 있다.기본 값은 submission이다. pre 속성은 선처리에 사용할 function 이름을 입력하거나 JSON으로 처리시에는 function 을 직접 작성 가능하다. return값 (true/false)에 따라 submission 수행한다. type 속성이 submission 인 경우에 정의하며 생략 가능하다. action 속성은 수행할 submission id이다. submission과 submissionDone의 id는 동일값으로 matching 되어야 한다. function type인 경우 function 명이다. post 속성은 후처리에 사용할 function 이름을 입력하거나 JSON으로 처리시에는 function을 직접 작성 가능하다. Submission의 submit-done 후에 실행되며, 생략 가능하다.
XML 형식에서의 샘플 XML로, 도 5의 (a)에 도시된 것과 같은 직렬 형태 호출 샘플에 대해서는 프로그래밍부(130)는 다음과 같이 코딩할 수 있다.
그리고 도 6의 (a)에 도시된 것과 같은 병렬 형태 호출 샘플에 대해서는 다음과 같이 코딩할 수 있다.
또한, 도 7에 도시된 것과 같은 복잡한 형태의 호출 샘플에 대해서는 다음과 같이 코딩할 수 있다.
JSON 형식의 경우에는 API로 조작하는데 XML보다 JSON이 더 편리하기 때문에 본 실시예에 따른 프라미스 워크플로우의 정의에 활용될 수 있다.
JSON 형식에서 workflow 객체는 다음과 같은 속성을 갖는다.
step 객체는 다음과 같은 속성을 갖는다.
JSON 형식에서의 샘플 JSON으로, 도 5의 (a)에 도시된 것과 같은 직렬 형태 호출 샘플에 대해서는 프로그래밍부(130)는 다음과 같이 코딩할 수 있다.
도 5의 (b)에 도시된 것과 같은 직렬 형태 호출 샘플에 대해서는 프로그래밍부(130)는 다음과 같이 코딩할 수 있다.
도 6의 (a)에 도시된 것과 같은 병렬 형태 호출 샘플에 대해서는 프로그래밍부(130)는 다음과 같이 코딩할 수 있다.
도 6의 (b)에 도시된 것과 같은 병렬 형태 호출 샘플에 대해서는 프로그래밍부(130)는 다음과 같이 코딩할 수 있다.
도 8 내지 도 9는 본 발명의 일 실시예에 따른 GUI 기반 비동기 방식 코딩 시스템에 의해 구현되는 보험 시스템에서의 프라미스 워크플로우 흐름도와 서브미션 플로우 및 코딩 내용을 나타낸 도면이다.
상품정보(pdinfo), 기본정보(baseinfo), 담보정보(coveinfo)는 순차적으로 호출되어 병렬 처리되는 서브미션들이며, 특약1(specCode1), 특약2(specCode2), 차종1(vehicleCode1), 차종2(vehicleCode2)는 상품정보(pdinfo) 서브미션이 완료된 이후 수행되는 조건부 서브미션들로서 서로 간에는 병렬 처리된다. 특약1, 특약2, 차종1, 차종2의 서브미션이 완료되면, 이를 이용하여 기본정보 서브미션이 완료되고, 이후 담보정보 서브미션도 완료될 수 있게 된다.
도 10은 본 실시예에 따른 프라미스 워크플로우 방식과 기존의 Ajax 동기 통신, Ajax 비동기 통신의 복잡도를 비교한 표이며, 도 11 내지 도 13은 동기 통신, 비동기 통신, 프라미스 워크플로우 방식의 실제 구현 예시도이다.
도 10을 참조하면, 프라미스 워크플로우는 Ajax 비동기 통신에 비해 소스 크기(LOC), 소스 복잡도(Cyclomatic complexity), 속도(s) 면에서 모두 우수한 성능을 보이고 있고, Ajax 동기 통신과 비교할 때에도 속도(s) 면에서 우수한 성능을 보여주고 있음을 알 수 있다.
이는 각 통신에 의한 서브미션들의 실행 순서 및 소요 시간이 나타나 있는 도 11 내지 도 13에서도 확인할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: GUI 기반 비동기 방식 코딩 시스템 110: 워크플로우 관리자
112: 기본정보 입력 모듈 114: 스텝정보 입력 모듈
116: 워크플로우 생성 모듈 120: GUI 관리자
130: 프로그래밍부
112: 기본정보 입력 모듈 114: 스텝정보 입력 모듈
116: 워크플로우 생성 모듈 120: GUI 관리자
130: 프로그래밍부
Claims (13)
- 복수의 서브미션(submission)을 순서대로 처리하기 위한 작업을 정의한 워크플로우(workflow)의 기본정보와 처리해야 할 작업에 대한 상세 정보를 정의하는 스텝정보를 입력받아, 미래에 존재하게 될 값에 대한 약속을 반환하기 위해 비동기 액션이 성공하거나 실패한 순간에 작동하는 핸들러를 호출하는 프라미스 인터페이스를 가지는 프라미스 워크플로우(promise workflow)를 생성하고 관리하는 워크플로우 관리자;
생성된 상기 프라미스 워크플로우를 도안화하여 화면에 출력하는 GUI 관리자; 및
생성된 상기 프라미스 워크플로우를 지정된 프로그래밍 언어 형식으로 코딩하는 프로그래밍부를 포함하되,
상기 GUI 관리자는 상기 복수의 서브미션이 서로 구분되는 행에 순차적으로 배치되고, 각 서브미션에 대해 호출, 호출 후의 응답 수신 전, 콜백, 자바스크립트 함수를 나타낸 도형으로 구분하여 시계열적으로 배열하는 구조로 도안화하며,
상기 워크플로우 관리자는 상기 스텝정보에 기초하여 등록된 스텝 리스트가 각 스텝의 속성에 따라 비동기 방식으로 상기 서브미션들이 순차적으로 선행하는 서브미션이 완료된 이후 혹은 완료되고 소정의 조건을 만족하는 경우에서야 후행하는 서브미션이 호출되는 구조인 직렬(serial) 형태, 선행하는 서브미션에 대한 작업이 완료되기 이전이라도 다른 서브미션들이 호출 가능한 병렬(parallel) 형태 혹은 직렬 형태와 병렬 형태가 혼합된 형태로 호출되도록 하는 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 시스템.
- 제1항에 있어서,
상기 기본정보는 상기 워크플로우에 대한 워크플로우 ID, 프로세스 메시지, 완료 콜백(resolveCallback) 함수, 거부 콜백(rejectCallback) 함수 중 하나 이상을 포함하되,
상기 워크플로우 ID는 작업그룹에 대한 ID로 상기 워크플로우에서 중복되지 않도록 선언되며, 상기 프로세스 메시지는 상기 워크플로우가 기동될 때 표현될 메시지이고, 상기 완료 콜백 함수는 처리해야 할 작업이 모두 완료된 다음 호출할 함수에 대해서 정의하며, 상기 거부 콜백 함수는 작업 처리 도중 에러 발생 시 호출할 함수에 대해서 정의한 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 시스템.
- 제1항에 있어서,
상기 스텝정보는 스텝의 작업 종류를 지정하는 type 속성, 선처리에 사용할 함수에 관한 pre 속성, 수행할 서브미션 ID를 지정하는 action 속성, 후처리에 사용할 함수에 관한 post 속성 중 하나 이상의 속성을 포함하되,
상기 type 속성은 함수, 제출, 제출완료를 설정할 수 있고, 상기 pre 속성은 상기 type 속성이 서브미션인 경우 정의하며, 상기 action 속성에 대해 상기 서브미션과 서브미션완료의 ID는 동일값으로 매칭되어야 하고, 상기 post 속성에 따른 함수는 상기 서브미션의 제출완료 후에 실행되는 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 시스템.
- 삭제
- 삭제
- 제1항에 있어서,
상기 프로그래밍부는 XML 형식 혹은 JSON 형식의 프로그래밍 언어로 코딩을 수행하는 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 시스템.
- 복수의 서브미션(submission)을 순서대로 처리하기 위한 작업을 정의한 워크플로우(workflow)의 기본정보를 입력받는 단계;
처리해야 할 작업에 대한 상세 정보를 정의하는 스텝정보를 입력받는 단계;
상기 기본정보와 상기 스텝정보에 기초하여 미래에 존재하게 될 값에 대한 약속을 반환하기 위해 비동기 액션이 성공하거나 실패한 순간에 작동하는 핸들러를 호출하는 프라미스 인터페이스를 가지는 프라미스 워크플로우(promise workflow)를 생성하고 관리하는 단계;
생성된 상기 프라미스 워크플로우를 도안화하여 화면에 출력하는 단계; 및
생성된 상기 프라미스 워크플로우를 지정된 프로그래밍 언어 형식으로 코딩하는 단계를 포함하되,
상기 화면에 출력하는 단계에서는 상기 복수의 서브미션이 서로 구분되는 행에 순차적으로 배치되고, 각 서브미션에 대해 호출, 호출 후의 응답 수신 전, 콜백, 자바스크립트 함수를 나타낸 도형으로 구분하여 시계열적으로 배열하는 구조로 도안화하며,
상기 프라미스 워크플로우를 생성하고 관리하는 단계에서는 상기 스텝정보에 기초하여 등록된 스텝 리스트가 각 스텝의 속성에 따라 비동기 방식으로 상기 서브미션들이 순차적으로 선행하는 서브미션이 완료된 이후 혹은 완료되고 소정의 조건을 만족하는 경우에서야 후행하는 서브미션이 호출되는 구조인 직렬(serial) 형태, 선행하는 서브미션에 대한 작업이 완료되기 이전이라도 다른 서브미션들이 호출 가능한 병렬(parallel) 형태 혹은 직렬 형태와 병렬 형태가 혼합된 형태로 호출되도록 하는 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 방법.
- 제7항에 있어서,
상기 기본정보는 상기 워크플로우에 대한 워크플로우 ID, 프로세스 메시지, 완료 콜백(resolveCallback) 함수, 거부 콜백(rejectCallback) 함수 중 하나 이상을 포함하되,
상기 워크플로우 ID는 작업그룹에 대한 ID로 상기 워크플로우에서 중복되지 않도록 선언되며, 상기 프로세스 메시지는 상기 워크플로우가 기동될 때 표현될 메시지이고, 상기 완료 콜백 함수는 처리해야 할 작업이 모두 완료된 다음 호출할 함수에 대해서 정의하며, 상기 거부 콜백 함수는 작업 처리 도중 에러 발생 시 호출할 함수에 대해서 정의한 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 방법.
- 제7항에 있어서,
상기 스텝정보는 스텝의 작업 종류를 지정하는 type 속성, 선처리에 사용할 함수에 관한 pre 속성, 수행할 서브미션 ID를 지정하는 action 속성, 후처리에 사용할 함수에 관한 post 속성 중 하나 이상의 속성을 포함하되,
상기 type 속성은 함수, 제출, 제출완료를 설정할 수 있고, 상기 pre 속성은 상기 type 속성이 서브미션인 경우 정의하며, 상기 action 속성에 대해 상기 서브미션과 서브미션완료의 ID는 동일값으로 매칭되어야 하고, 상기 post 속성에 따른 함수는 상기 서브미션의 제출완료 후에 실행되는 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 방법.
- 삭제
- 삭제
- 제7항에 있어서,
상기 코딩 단계는 XML 형식 혹은 JSON 형식의 프로그래밍 언어로 코딩을 수행하는 것을 특징으로 하는 GUI 기반 비동기 방식 코딩 방법.
- 제7항 내지 제9항, 제12항 중 어느 한 항에 기재된 GUI 기반 비동기 방식 코딩 방법을 수행하기 위하여 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150180924A KR101732922B1 (ko) | 2015-12-17 | 2015-12-17 | Gui 기반의 비동기 방식 코딩 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150180924A KR101732922B1 (ko) | 2015-12-17 | 2015-12-17 | Gui 기반의 비동기 방식 코딩 시스템 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101732922B1 true KR101732922B1 (ko) | 2017-05-08 |
Family
ID=60163847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150180924A KR101732922B1 (ko) | 2015-12-17 | 2015-12-17 | Gui 기반의 비동기 방식 코딩 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101732922B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190070627A (ko) * | 2017-12-13 | 2019-06-21 | 충북대학교 산학협력단 | 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004102886A (ja) * | 2002-09-12 | 2004-04-02 | Fuji Xerox Co Ltd | アプリケーション開発支援方法および装置並びにプログラム、ワークフロー処理方法および装置並びにプログラム |
US20060225032A1 (en) | 2004-10-29 | 2006-10-05 | Klerk Adrian D | Business application development and execution environment |
-
2015
- 2015-12-17 KR KR1020150180924A patent/KR101732922B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004102886A (ja) * | 2002-09-12 | 2004-04-02 | Fuji Xerox Co Ltd | アプリケーション開発支援方法および装置並びにプログラム、ワークフロー処理方法および装置並びにプログラム |
US20060225032A1 (en) | 2004-10-29 | 2006-10-05 | Klerk Adrian D | Business application development and execution environment |
Non-Patent Citations (1)
Title |
---|
"WebSquare Developer Guide", 인스웨이브 기술지원사이트, 2014.11.04.* |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190070627A (ko) * | 2017-12-13 | 2019-06-21 | 충북대학교 산학협력단 | 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법 |
KR102009576B1 (ko) | 2017-12-13 | 2019-08-09 | 충북대학교 산학협력단 | 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846153B2 (en) | Bot creation with workflow development system | |
US20190392617A1 (en) | Visual workflow model | |
US8762187B2 (en) | Easy process modeling platform | |
CN111045655A (zh) | 一种页面渲染的方法、装置、渲染服务器和存储介质 | |
EP2958061A1 (en) | Method of developing an application for execution in a workflow management system and apparatus to assist with generation of an application for execution in a workflow management system | |
US20210208854A1 (en) | System and method for enhancing component based development models with auto-wiring | |
US20130238384A1 (en) | Business management system | |
CN115658041A (zh) | 基于在线业务流程编排的低代码增强业务实现方法 | |
CN111061551A (zh) | 节点的合并调度方法、装置、设备及存储介质 | |
US20240111697A1 (en) | System and method for building and implementing automated workflows | |
US8418074B2 (en) | Shared user interface services framework | |
US10459696B2 (en) | Composable action flows | |
WO2022188780A1 (zh) | 视觉软件开发系统、方法、装置及计算机存储介质 | |
JP6750124B2 (ja) | 端末装置、ui拡張方法及びui拡張プログラム | |
US20130297528A1 (en) | Business process model notation extension for modeling of integration processes | |
CN104932892B (zh) | 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法 | |
US9146717B2 (en) | Optimizing source code | |
US10970050B1 (en) | User interface engine for miniapp development | |
KR101732922B1 (ko) | Gui 기반의 비동기 방식 코딩 시스템 및 방법 | |
US20230385525A1 (en) | Web site preview generation with action control | |
CN115525321A (zh) | 分布式任务生成方法、装置、设备及存储介质 | |
CN115033233A (zh) | 一种接口调用方法、装置、电子设备及存储介质 | |
CN110321111A (zh) | 系统流程控制方法、装置、设备及计算机存储介质 | |
CN112764721A (zh) | 数据处理方法、装置、系统及计算机可读存储介质 | |
US20230168866A1 (en) | Method for incorporating a business rule into an sap-customized application on an sap cloud platform or on-premise solution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20200310 Year of fee payment: 4 |