워크플로우 기본 가이드
이 화면은 워크픞로우 컴포넌트 기본 기능 샘플 화면이다.
워크픞로우 컴포넌트는 XTRANMAP/TRANIOMAP/TRANMAP을 이용한 데이터 송수신 처리 및 함수 호출의 처리 흐름을 정의한다.
업무 서비스 호출은 requestsumit/requesttran API를 통해서 비동기로 처리되며, 한쌍의 데이터 송신 처리 워크와 데이터 수신 처리 워크로 구성된다.
워크플로우에는 “워크”라는 단위로 처리 흐름이 관리된다.
워크는 다음의 유형을 가진다.
- 함수 워크 : 화면내 함수의 호출처리
- 데이터 송신 처리 워크: 맵 정보를 기준으로 requestsubmit, requesttran API를 통해 데이터를 비동기 송신
- 데이터 수신 처리 워크: 맵 정보를 기준으로 requestsubmit, requesttran API를 통해 수신된 데이터를 처리
관련 속성으로 title, workflow, screen_before_event, screen_complete_event가 있다.
관련 API로 startworkflow, stopworkflow, pauseworkflow, resumeworkflow가 있다.
관련 이벤트로 on_beforeworkflow, on_workflowcomplete, on_beforework, on_workcomplete가 있다.
예시
템플릿 위치: /HTML5/COMPONENT/WORKFLOW/workflow_basic
템플릿 파일
화면 스크립트
/** * 워크플로우 시작 전 이벤트 * 워크플로우를 시작하기 전에 발생한다. * * @param {Object} objInst 워크플로우 컴포넌트 인스턴스 * * @returns {number} 워크플로우 진행 여부 값 * 0 - 워크플로우 실행 중지 (startworkflow API 호출에 false가 리턴됨) * 1 - 워크플로우 수행 (기본값) */ function wfbasic_on_beforeworkflow(objInst) { factory.consoleprint("on_beforeworkflow> start"); return 1; } /** * 워크플로우 처리 완료 이벤트 * 워크플로우 처리가 중지되거나 완료된 후에 발생한다. * * @param {string} objInst 워크플로우 인스턴스 * @param {number} result 워크플로우 처리 결과 (1: 정상, 그외 오류) * @param {string} result_msg 워크플로우 처리 결과 메시지 */ function wfbasic_on_workflowcomplete(objInst, result, result_msg) { var i, work_count; factory.consoleprint("on_workflowcomplete> result = " + result); factory.consoleprint("on_workflowcomplete> result_msg = " + result_msg); work_count = objInst.getworkcount(); for (i = 0; i < work_count; i++) { factory.consoleprint( "type(" + objInst.getworktype(i) + ") " + "mode(" + objInst.getworkmode(i) + ") " + "action(" + objInst.getworkaction(i) + ") " + "data(" + objInst.getworkdata(i) + ") " + "status(" + objInst.getworkstatus(i) + ") " + "result(" + objInst.getworkresult(i) + ") " + "result_msg(" + objInst.getworkresultmsg(i) + ")"); } } /** * 워크플로우내 워크 시작 전 이벤트 * 워크플로우내 워크가 시작하기 전에 발생한다. * * @param {Object} objInst 워크플로우 컴포넌트 인스턴스 * @param {number} workindex 워크플로우 워크 인덱스 */ function wfbasic_on_beforework(objInst, workindex) { factory.consoleprint("on_beforework> start, workindex = " + workindex); } /** * 워크플로우내 워크 완료 후 이벤트 * 워크플로우내 워크가 완료된 후에 발생한다. * * @param {Object} objInst 워크플로우 컴포넌트 인스턴스 * @param {number} workindex 워크플로우 워크 인덱스 */ function wfbasic_on_workcomplete(objInst, workindex) { factory.consoleprint("on_workcomplete> start, workindex = " + workindex); } // "addworkinfo" 버튼 이벤트 function btn_addworkinfo_on_click(objInst) { // 액션 유형 (0: 함수, 1: XTranMap, 2: TranIOMap, 3:TranMap) this.wfbasic.addworkinfo({ work_type: 0, work_mode: 0, work_action: "workflow_func_a", work_data: "workflow_func_a_data", work_desc: "" }); this.wfbasic.addworkinfo({ work_type: 0, work_mode: 0, work_action: "workflow_func_a", work_data: "workflow_func_b_data", work_desc: "" }); this.wfbasic.addworkinfo({ work_type: 0, work_mode: 0, work_action: "workflow_func_c", work_data: "workflow_func_c_data", work_desc: "" }); } // "startworkflow" 버튼 이벤트 function btn_startworkflow_on_click(objInst) { this.wfbasic.startworkflow(); } /** * 워크플로우 워크 함수 * @param objInst 워크플로우 인스턴스 * @param workindex 워크플로우 워크 인덱스(Zero-Based) * @returns 워크플로우 워크에 저장될 값 (getworkresult 함수 참고) */ function workflow_func_a(objInst, workindex) { // 워크에 저장된 데이터 로깅 factory.consoleprint("workflow_func_a> work_data = " + objInst.getworkdata(workindex)); return "workflow_func_a_result"; } function workflow_func_b(objInst, workindex) { // 워크에 저장된 데이터 로깅 factory.consoleprint("workflow_func_b> work_data = " + objInst.getworkdata(workindex)); return "workflow_func_b_result"; } function workflow_func_c(objInst, workindex) { // 워크에 저장된 데이터 로깅 factory.consoleprint("workflow_func_c> work_data = " + objInst.getworkdata(workindex)); return "workflow_func_c_result"; }