목차

워크플로우 기본 가이드

이 화면은 워크픞로우 컴포넌트 기본 기능 샘플 화면이다.

워크픞로우 컴포넌트는 XTRANMAP/TRANIOMAP/TRANMAP을 이용한 데이터 송수신 처리 및 함수 호출의 처리 흐름을 정의한다.

업무 서비스 호출은 requestsumit/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";
}