워크플로우 - 전역
워크플로우 스크립트 포함은 워크플로우 엔진과 상호 작용하는 메서드를 제공합니다.
이러한 메서드를 사용하여 워크플로우를 조작합니다.
워크플로우 - broadcastEvent(String contextId, String eventName)
지정된 이벤트(메시지)를 워크플로우 컨텍스트로 전송하여 실행 중인 활동에 전달합니다.
이 방법의 일반적인 용도는 계속하기 전에 일부 작업이 수행되기를 기다리는 활동을 활성화하는 것입니다. broadcastEvent 사용에 대한 자세한 내용은 워크플로우 이벤트별 함수를 참조하십시오.
사용 가능한 OOB 이벤트 목록은 기본 시스템의 워크플로우 이벤트를 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| contextId | 문자열 | 컨텍스트 ID입니다. |
| eventName | 문자열 | 이벤트의 이름입니다. |
| 유형 | 설명 |
|---|---|
| void |
//where current is a task record with a workflow context
var wf = new Workflow().getRunningFlows(current);
while(wf.next()) {
new Workflow().broadcastEvent(wf.sys_id, 'resume');
}
워크플로우 - 취소(GlideRecord 기록)
이 기록에서 실행 중인 모든 워크플로우의 활동으로 이벤트를 브로드캐스팅 cancel 하여 이 기록에서 실행 중인 모든 워크플로우를 취소합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 기록 | GlideRecord | 모든 테이블의 GlideRecord 이 기록에서 실행 중인 모든 워크플로우가 취소됩니다. |
| 유형 | 설명 |
|---|---|
| void |
//get workflow helper
var workflow = new Workflow();
//cancel all the workflows, where current is a task record with a workflow context
workflow.cancel(current);
gs.addInfoMessage(gs.getMessage("Workflows for {0} have been cancelled", current.getDisplayValue()));
워크플로우 - cancelContext(GlideRecord context)
이 워크플로우 컨텍스트의 활동에 이벤트를 브로드캐스팅 cancel 하여 이 실행 컨텍스트를 취소합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 컨텍스트 | GlideRecord | 취소할 실행 중인 컨텍스트의 GlideRecord입니다. |
| 유형 | 설명 |
|---|---|
| void |
// If a workflow has started for this item, cancel it, where current is a task record with a workflow context
if ((current.stage == 'Request Cancelled') && current.context
&& !current.context.nil()) {
var w = new Workflow();
var now_GR = new GlideRecord('wf_context');
if (now_GR.get(current.context))
w.cancelContext(now_GR);
}
워크플로우 - deleteWorkflow(GlideRecord current)
기록의 모든 워크플로우를 삭제합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| current | GlideRecord | 호출자가 모든 워크플로우를 삭제하려는 GlideRecord입니다. 모든 테이블의 기록이 될 수 있습니다. |
| 유형 | 설명 |
|---|---|
| void |
//where current is a task record with a workflow context
var wkfw = new Workflow();
wkfw.deleteWorkflow(current);
워크플로우 - fireEvent(GlideRecord eventRecord, String eventName, Object eventParms)
입력 기록에서 실행 중인 워크플로우의 명명된 이벤트를 실행합니다.
활동 승인 코디네이터, 타이머, 잠금 등에 사용됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이벤트 기록 | GlideRecord | 워크플로우 실행 활동 [wf_executing] 테이블에 나열된 이벤트 기록입니다. |
| eventName | 문자열 | 실행 중인 워크플로우로 보낼 이벤트의 이름입니다. |
| eventParms | 객체 | 옵션입니다. 이벤트에서 사용하는 JSON 형식의 매개변수입니다. |
| 유형 | 설명 |
|---|---|
| void |
// where current is a task record with a workflow context
var w = new Workflow();
w.fireEvent(current, 'execute');
워크플로우 - fireEventById(String, eventRecordId, String, eventName)
레코드 ID로 지정된 레코드에서 명명된 이벤트를 실행합니다.
활동 승인 코디네이터, 타이머, 잠금 등에 사용됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이벤트 기록 ID | 문자열 | Glide 기록의 sys_id입니다. |
| eventName | 문자열 | 실행 중인 워크플로우로 보낼 이벤트의 이름입니다. |
| 유형 | 설명 |
|---|---|
| void |
var wkfw = new Workflow();
wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');
워크플로우 - getContexts(GlideRecord record)
지정된 기록에 대한 모든 워크플로우 컨텍스트를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 기록 | GlideRecord | 호출자가 모든 워크플로우 컨텍스트 목록을 원하는 GlideRecord 호출자가 실행 중인 워크플로우 컨텍스트를 원하는 테이블의 모든 기록이 될 수 있습니다. |
| 유형 | 설명 |
|---|---|
| GlideRecord | 지정된 기록(실행 중, 취소됨, 완료됨과 같은 모든 상태)의 모든 워크플로우 컨텍스트에 대해 필터링된 워크플로우 컨텍스트 [wf_context] 테이블의 GlideRecord입니다. |
//where current is a task record with a workflow context
var wkfw = new Workflow();
var context = wkfw.getContexts(current);
while (context.next())
gs.print(context.started);
워크플로우 - getEstimatedDeliveryTime(String, workflowId)
워크플로우가 완료되는 예상 시간을 가져옵니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| workflowId | 문자열 | 예상 실행 시간을 가져오는 워크플로우의 Sys_id(테이블 wf_workflow)입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | GlideDuration의 값(예: 3일)을 표시하거나 알 수 없는 경우 비워 둡니다. |
var wkfw = new Workflow();
gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));
2일
워크플로우 - getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)
워크플로우 버전의 예상 실행 시간을 가져옵니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| wf버전 | GlideRecord | 호출자가 실행 중 예상치를 원하는 특정 워크플로우 버전의 테이블 wf_workflow_version GlideRecord입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | GlideDuration의 값(예: 3일)을 표시하거나 알 수 없는 경우 비워 둡니다. |
//where current is a task record with a workflow context
var wkfw = new Workflow();
var context = wkfw.getContexts(current);
gs.print(wkfw.getEstimatedDeliveryTimeFromWFVersion(context.wf_version));
워크플로우 - getReturnValue(String, workflowID, number, amount, boolean result)
입력 워크플로우 ID에 적합한 워크플로우 반환 값을 가져옵니다. 현재 사용자가 체크아웃한 워크플로우이거나 가장 최근 날짜로 게시된 워크플로우입니다.
현재 사용자가 체크아웃한 워크플로우이거나 가장 최근 날짜로 게시된 워크플로우입니다. 이 방법은 Fuji 릴리스부터 사용할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| workflowID | 문자열 | 워크플로우의 sys_id(테이블 wf_workflow) |
| 금액 | 번호 | 금액 |
| 결과 | 부울 | True인 경우 True |
| 유형 | 설명 |
|---|---|
| ??? | 값 반환 작업에 지정된 워크플로의 반환 값입니다. 값 반환 작업이 없는 워크플로는 null 값을 반환합니다. |
var wkfw = new Workflow();
wkfw.getReturnValue('context');
*** Script: b99a866a4a3623120074c033e005418f
워크플로우 - getRunningFlows(GlideRecord record)
입력 기록에 대해 현재 실행 중인 모든 워크플로우 컨텍스트를 가져옵니다.
입력 기록은 호출자가 실행 중인 워크플로우 컨텍스트를 원하는 테이블의 모든 기록입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 기록 | GlideRecord | 호출자가 실행 중인 모든 워크플로우의 목록을 원하는 기록의 GlideRecord입니다. |
| 유형 | 설명 |
|---|---|
| GlideRecord | GlideRecord를 테이블 wf_context에 저장하고 실행 중인 모든 워크플로우 컨텍스트에 대해 필터링합니다. |
//where current is a task record with a workflow context
var wf = new Workflow().getRunningFlows(current);
while(wf.next()) {
new Workflow().broadcastEvent(wf.sys_id, 'pause');
}
워크플로우 - getVersion(String workflowID)
입력 워크플로우 ID에 적합한 워크플로우 버전을 가져옵니다. 현재 사용자가 체크아웃한 워크플로우이거나 가장 최근 날짜로 게시된 워크플로우입니다.
현재 사용자가 체크아웃한 워크플로우이거나 가장 최근 날짜로 게시된 워크플로우입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| workflowID | 문자열 | 워크플로우의 sys_id(테이블 wf_workflow) |
| 유형 | 설명 |
|---|---|
| 안 함 |
var wkfw = new Workflow();
wkfw.getVersion('b99a866a4a3623120074c033e005418f');
워크플로우 - getVersionFromName(String workflowName)
입력 워크플로우 이름에 적합한 워크플로우 버전을 반환합니다.
자세한 내용은 getVersion() 을 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| workflowName | 문자열 | 워크플로우의 이름(테이블 wf_workflow) |
| 유형 | 설명 |
|---|---|
| void |
var wkfw = new Workflow();
wkfw.getVersionFromName('Emergency Change');
워크플로우 - getWorkflowFromName(String workflowName)
지정된 워크플로우 이름과 연결된 워크플로우의 sys_id 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| workflowName | 문자열 | 워크플로우의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 전달된 이름과 연결된 워크플로우의 sys_id입니다. |
var wflw = new Workflow();
gs.print(wflw.getWorkflowFromName('Emergency Change'));
워크플로우 - hasWorkflow(GlideRecord record)
지정된 기록에 연결된 워크플로우 컨텍스트가 있는지 확인합니다.
여기에는 실행 중인 워크플로우 컨텍스트와 완료된 워크플로우 컨텍스트가 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 기록 | GlideRecord | GlideRecord 를 조사 중입니다. 이 GlideRecord 는 모든 테이블에서 가져올 수 있습니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 기록에 연결된 워크플로우가 있는 경우 True입니다. 그렇지 않으면 False를 반환합니다. |
var wkfw = new Workflow();
gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));
거짓
워크플로우 - restartWorkflow(GlideRecord current, Boolean maintainStateFlag)
현재 승인 및 작업을 재설정하지 않고 새 승인과 작업을 추가하여 워크플로우의 승인 및 작업을 다시 계산합니다.
이 방법을 사용하면 워크플로우에 이미 있는 회사에 대해서는 현재 승인을 재설정하지 않고도 변경 요청에 회사를 추가하는 등의 작업을 수행할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| current | GlideRecord | 이 워크플로우가 실행 중인 기록의 GlideRecord입니다. 모든 테이블의 모든 기록에서 이를 수행할 수 있습니다. |
| maintainState플래그 | 부울 | 모든 승인과 작업을 현재 상태로 유지할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
| 유형 | 설명 |
|---|---|
| void |
이 예에서는 승인 파일이 거부됨에서 요청됨으로 변경되면서 워크플로우가 다시 시작되는 것을 보여줍니다.
(function(){
var comment = 'Workflow Restarted - the Approval Field changing from Rejected to Requested';
var gLock = new GlideRecordLock(current);
gLock.setSpinWait(50);
if (gLock.get()) {
new Workflow().restartWorkflow(current, false);
current.setDisplayValue('approval_history', comment);
}
})
워크플로우 - runFlows(GlideRecord record, string operation)
지정된 테이블과 해당 하위 테이블에서 지정된 기록에 대한 모든 워크플로우를 실행합니다.
샘플 사용법은 스크립트 포함에서 볼 수 있습니다. "SNC - 상위 워크플로우 실행" 및 "SNC - 상위 워크플로우 실행(승인)".
| 이름 | 유형 | 설명 |
|---|---|---|
| 기록 | GlideRecord | 워크플로우를 실행할 GlideRecord |
| 운영 | 문자열 | 데이터베이스 작업입니다. 유효한 값은 다음과 같습니다.
|
| 유형 | 설명 |
|---|---|
| void |
var now_GR = new GlideRecord('wf_test');
now_GR.addQuery('parent', current.parent);
now_GR.addQuery('sys_id','!=',current.sys_id);
now_GR.query();
while(now_GR.next()) {
new Workflow().runFlows(now_GR, 'update');
}
워크플로우 - startFlow(String workflowId, GlideRecord current, String operation, Array vars)
지정된 워크플로우를 시작합니다.
사용 예는 스크립트 포함 WorkflowScheduler 및 테이블 sc_req_item의 비즈니스 규칙 "워크플로우 시작"을 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| workflowId | 문자열 | 시작할 워크플로우의 sys_id입니다. 이 sys_id 테이블 wf_workflow 참조합니다. |
| current | GlideRecord | 이 워크플로우에서 현재로 사용할 기록입니다. 이는 일반적으로 이 워크플로우의 Table 워크플로우 속성 필드에서 가져옵니다. |
| 운영 | 문자열 | 에서 수행할 current작업입니다. 가능한 값은 삽입, 업데이트, 삭제입니다. |
| 변수 | 배열 | 워크플로우에 추가할 변수 컬렉션 |
////where current is a task record with a workflow context
var w = new Workflow();
var context = w.startFlow(id, current, current.operation(), getVars());
워크플로우 - startFlowFromContextInsert(GlideRecord context, String operation)
비즈니스 규칙에 Auto start on context대한 도우미 메서드입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 컨텍스트 | GlideRecord | 새 기록의 테이블 wf_context(비즈니스 규칙의 "현재" 기록)에 대한 GlideRecord |
| 운영 | 문자열 | 데이터베이스 작업이 수행 중입니다. insert, update, . delete중 하나입니다. |
| 유형 | 설명 |
|---|---|
| void |
//where current is a task record with a workflow context
current.name = current.workflow_version.name;
current.started_by.setValue(gs.userID());
if (gs.nil(current.id)) {
var now_GR = new GlideRecord('wf_workflow_execution');
now_GR.name = current.name;
now_GR.insert();
current.table = 'wf_workflow_execution';
current.id = now_GR.sys_id;
}
var wf = new Workflow();
wf.startFlowFromContextInsert(current, current.operation())
워크플로우 - startFlowRetroactive(String workflowId, Number retroactiveMSecs, GlideRecord current, String operation, Array, ???)
테이블 task_sla의 비즈니스 규칙에 Start Workflow 의해 사용됩니다. 이렇게 하면 워크플로가 시작되고 이 메서드에 대한 추가 인수는 "Timer" 활동에서 워크플로 실행을 일정 기간 동안 일시 중지하는 데 사용됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| workflowID | 문자열 | 시작할 워크플로우의 sys_id입니다. 이 sys_id 테이블 wf_workflow 참조합니다. |
| 소급MSecs | 번호 | 활동 타이머에 사용되는 지연 시간(밀리초)입니다. |
| current | GlideRecord | 이 워크플로우에서 현재 상태로 사용할 기록의 GlideRecord입니다. 이는 일반적으로 이 워크플로우의 Table 워크플로우 속성 필드에서 가져옵니다. |
| 운영 | 문자열 | 데이터베이스 작업이 수행 중입니다. insert, update, . delete중 하나입니다. |
| 변수 | 배열 | 워크플로우에 추가할 변수의 컬렉션입니다. |
| withSchedule | ??? | 활동 타이머에 사용되는 일정 |
| 유형 | 설명 |
|---|---|
| GlideRecord | 테이블의 GlideRecord wf_context 새로 생성된 워크플로우 컨텍스트에 대해 삽입된 기록에 있습니다. |
// is this a retroactive start?
////where current is a task record with a workflow context
var msecs = new GlideDateTime().getNumericValue() - current.start_time.getGlideObject().getNumericValue();
// treat this as a retroactive workflow start if the SLA started more than 5 seconds ago
var w = new Workflow();
if (msecs <= 5000)
w.startFlow(id, current, current.operation());
else
w.startFlowRetroactive(id, msecs, current, current.operation());
// update the record in case the workflow changed some values
current.update();
워크플로우 - workflow()
Workflow 클래스의 생성자입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
var w = new Workflow();