====== 워크플로우 기본 가이드 ======
이 화면은 워크픞로우 컴포넌트 기본 기능 샘플 화면이다.
워크픞로우 컴포넌트는 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
템플릿 파일
* [[xf5projecthome>template/screen/HTML5/COMPONENT/WORKFLOW/workflow_basic.xml|workflow_basic.xml]]
* [[xf5projecthome>template/screen/HTML5/COMPONENT/WORKFLOW/workflow_basic.js|workflow_basic.js]]
* [[xf5projecthome>template/template.html?xframe_screen_url=/HTML5/COMPONENT/WORKFLOW/workflow_basic|새창으로 실행]]
echo '';
echo '';
echo '';
==== 화면 스크립트 ====
/**
* 워크플로우 시작 전 이벤트
* 워크플로우를 시작하기 전에 발생한다.
*
* @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";
}