워크플로우 - 전역

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기16분
  • 워크플로우 스크립트는 워크플로우 엔진과의 인터페이스를 제공합니다.

    이러한 메서드를 사용하여 워크플로우를 조작합니다.

    워크플로우 - broadcastEvent(String contextId, String eventName)

    지정된 이벤트(메시지)를 워크플로우 컨텍스트로 전송하여 실행 중인 활동에 전달합니다.

    이 방법의 일반적인 용도는 계속하기 전에 특정 작업이 발생할 때까지 대기하는 활동을 사용하도록 설정하는 것입니다. broadcastEvent 사용에 대한 자세한 내용은 Workflow 이벤트별 기능을 참조하세요.

    사용 가능한 OOB 이벤트 목록은 기본 시스템의 워크플로우 이벤트를 참조하십시오.

    표 1. 매개변수
    이름 유형 설명
    contextId 문자열 컨텍스트 ID입니다.
    eventName 문자열 이벤트의 이름입니다.
    표 2. 반환
    유형 설명
    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 하여 이 기록에서 실행 중인 모든 워크플로우를 취소합니다.

    표 3. 매개변수
    이름 유형 설명
    기록 GlideRecord 모든 테이블의 GlideRecord 이 기록에서 실행 중인 모든 워크플로우가 취소됩니다.
    표 4. 반환
    유형 설명
    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 컨텍스트)

    이 워크플로우 컨텍스트의 활동에 이벤트를 브로드캐스팅 cancel 하여 이 실행 중인 컨텍스트를 취소합니다.

    표 5. 매개변수
    이름 유형 설명
    컨텍스트 GlideRecord 취소할 실행 중인 컨텍스트의 GlideRecord입니다.
    표 6. 반환
    유형 설명
    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)

    기록의 모든 워크플로우를 삭제합니다.

    표 7. 매개변수
    이름 유형 설명
    current GlideRecord 호출자가 모든 워크플로우를 삭제하려는 GlideRecord입니다. 모든 테이블의 기록이 될 수 있습니다.
    표 8. 반환
    유형 설명
    void
    //where current is a task record with a workflow context
          var wkfw = new Workflow();
          wkfw.deleteWorkflow(current);
        

    워크플로우 - fireEvent(GlideRecord, eventRecord, 문자열 eventName, 객체 eventParms)

    입력 기록에서 실행 중인 워크플로우의 명명된 이벤트를 실행합니다.

    활동 승인 코디네이터, 타이머, 잠금 등에 사용됩니다.

    표 9. 매개변수
    이름 유형 설명
    이벤트 기록 GlideRecord 워크플로우 실행 활동[wf_executing] 테이블에 나열된 이벤트 기록입니다.
    eventName 문자열 실행 중인 워크플로우에 보낼 이벤트의 이름입니다.
    이벤트팔름 객체 옵션입니다. 이벤트에서 사용하는 JSON 형식의 매개변수입니다.
    표 10. 반환
    유형 설명
    void  
    // where current is a task record with a workflow context
      var w = new Workflow(); 
      w.fireEvent(current, 'execute');

    워크플로우 - fireEventById(eventRecordId 문자열, eventName 문자열)

    기록 ID로 지정된 기록에서 명명된 이벤트를 실행합니다.

    활동 승인 코디네이터, 타이머, 잠금 등에 사용됩니다.

    표 11. 매개변수
    이름 유형 설명
    이벤트 기록 ID 문자열 Glide 기록의 sys_id입니다.
    eventName 문자열 실행 중인 워크플로우에 보낼 이벤트의 이름입니다.
    표 12. 반환
    유형 설명
    void
    var wkfw = new Workflow();
          wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');

    워크플로우 - getContexts(GlideRecord 기록)

    지정된 기록에 대한 모든 워크플로우 컨텍스트를 반환합니다.

    표 13. 매개변수
    이름 유형 설명
    기록 GlideRecord 호출자가 모든 워크플로우 컨텍스트 목록을 원하는 GlideRecord입니다. 이 기록은 호출자가 실행 중인 워크플로우 컨텍스트를 원하는 모든 테이블의 기록이 될 수 있습니다.
    표 14. 반환
    유형 설명
    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(workflowId 문자열)

    워크플로가 완료될 예상 시간을 가져옵니다.

    표 15. 매개변수
    이름 유형 설명
    workflowId 문자열 예상 실행 시간을 가져오는 워크플로우의 Sys_id(테이블 wf_workflow)입니다.
    표 16. 반환
    유형 설명
    문자열 GlideDuration(예: 3일)의 표시 값 또는 알 수 없는 경우 공백입니다.
    var wkfw = new Workflow();
          gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));

    2일

    워크플로우 - getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)

    워크플로우 버전에 대해 예상되는 경과 실행 시간을 가져옵니다.

    표 17. 매개변수
    이름 유형 설명
    wf버전 GlideRecord 호출자가 실행 중 예측을 원하는 특정 워크플로우 버전의 테이블 wf_workflow_version GlideRecord입니다.
    표 18. 반환
    유형 설명
    문자열 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 릴리스부터 사용할 수 있습니다.

    표 19. 매개변수
    이름 유형 설명
    워크플로우ID 문자열 워크플로우의 sys_id(테이블 wf_workflow)
    금액 번호 금액
    결과 부울 , 예일 경우
    표 20. 반환
    유형 설명
    ??? Return Value 활동에서 지정한 워크플로의 반환 값입니다. 값 반환 활동이 없는 워크플로는 null 값을 반환합니다.
    var wkfw = new Workflow();
          wkfw.getReturnValue('context');
    출력:
    *** Script: b99a866a4a3623120074c033e005418f
          

    워크플로우 - getRunningFlows(GlideRecord 기록)

    입력 기록에 대해 현재 실행 중인 모든 워크플로우 컨텍스트를 가져옵니다.

    입력 기록은 호출자가 실행 중인 워크플로우 컨텍스트를 원하는 모든 테이블의 기록입니다.

    표 21. 매개변수
    이름 유형 설명
    기록 GlideRecord 호출자가 실행 중인 모든 워크플로우 목록을 원하는 기록의 GlideRecord입니다.
    표 22. 반환
    유형 설명
    GlideRecord 실행 중인 모든 워크플로우 컨텍스트에 대해 테이블 wf_context 및 필터링된 GlideRecord입니다.
    //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에 대한 적절한 워크플로우 버전을 가져옵니다. 현재 사용자가 체크아웃한 워크플로우이거나 가장 최근 날짜로 게시된 워크플로우입니다.

    현재 사용자가 체크아웃한 워크플로우이거나 가장 최근 날짜로 게시된 워크플로우입니다.

    표 23. 매개변수
    이름 유형 설명
    워크플로우ID 문자열 워크플로우의 sys_id(테이블 wf_workflow)
    표 24. 반환
    유형 설명
    없음
    var wkfw = new Workflow();
          wkfw.getVersion('b99a866a4a3623120074c033e005418f');

    워크플로우 - getVersionFromName(String workflowName)

    입력 워크플로우 이름에 적합한 워크플로우 버전을 반환합니다.

    자세한 내용은 getVersion() 을 참조하십시오.

    표 25. 매개변수
    이름 유형 설명
    워크플로우 이름 문자열 워크플로우의 이름(테이블 wf_workflow)
    표 26. 반환
    유형 설명
    void
    var wkfw = new Workflow();
          wkfw.getVersionFromName('Emergency Change');

    워크플로우 - getWorkflowFromName(String workflowName)

    지정된 워크플로우 이름과 연결된 워크플로우의 sys_id 반환합니다.

    표 27. 매개변수
    이름 유형 설명
    워크플로우 이름 문자열 워크플로우의 이름입니다.
    표 28. 반환
    유형 설명
    문자열 전달된 이름과 연결된 워크플로우의 sys_id입니다.
    var wflw = new Workflow();
          gs.print(wflw.getWorkflowFromName('Emergency Change'));

    워크플로우 - hasWorkflow(GlideRecord 기록)

    지정된 기록에 연결된 워크플로우 컨텍스트가 있는지 확인합니다.

    여기에는 실행 중인 워크플로우 컨텍스트와 완료된 워크플로우 컨텍스트가 포함됩니다.

    표 29. 매개변수
    이름 유형 설명
    기록 GlideRecord GlideRecord 가 조사 중입니다. 이 GlideRecord 는 모든 테이블에서 발생할 수 있습니다.
    표 30. 반환
    유형 설명
    부울 True, 기록에 연결된 워크플로우가 있는 경우; 그렇지 않으면 False를 반환합니다.
    var wkfw = new Workflow();
          gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));

    아니오

    워크플로우 - restartWorkflow(GlideRecord current, Boolean maintainStateFlag)

    현재 승인 및 작업은 재설정하지 않고 새 승인 및 작업을 추가하여 워크플로우의 승인 및 작업을 다시 계산합니다.

    이 메서드를 사용하면 워크플로에 이미 있는 회사의 현재 승인을 다시 설정하지 않고도 변경 요청에 회사를 추가하는 등의 작업을 수행할 수 있습니다.

    표 31. 매개변수
    이름 유형 설명
    current GlideRecord 이 워크플로우가 실행 중인 기록의 GlideRecord입니다. 이는 모든 테이블의 모든 기록에 의해 가능합니다.
    유지 상태 플래그 부울 모든 승인 및 작업을 현재 상태로 유지할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 모든 승인과 작업을 현재 상태로 유지합니다.
    • false: 모든 승인 및 작업 상태를 업데이트합니다.
    표 32. 반환
    유형 설명
    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 기록, 문자열 작업)

    지정된 테이블과 해당 하위 테이블에서 지정된 기록에 대한 모든 워크플로우를 실행합니다.

    샘플 사용법은 스크립트 포함 "SNC - 상위 워크플로우 실행" 및 "SNC - 상위 워크플로우 실행(승인)"에서 볼 수 있습니다.

    표 33. 매개변수
    이름 유형 설명
    기록 GlideRecord 워크플로우를 실행할 GlideRecord입니다.
    운영 문자열 데이터베이스 작업입니다.
    유효한 값은 다음과 같습니다.
    • 삽입
    • 업데이트
    • 삭제
    표 34. 반환
    유형 설명
    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)

    지정된 워크플로우를 시작합니다.

    사용 예제는 테이블 sc_req_item의 Script Include WorkflowScheduler 및 비즈니스 규칙 "워크플로우 시작"을 참조하십시오.

    표 35. 매개변수
    이름 유형 설명
    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 컨텍스트, 문자열 작업)

    비즈니스 규칙에 Auto start on context대한 도우미 메서드입니다.

    표 36. 매개변수
    이름 유형 설명
    컨텍스트 GlideRecord 새 기록(비즈니스 규칙의 "현재" 기록)의 테이블 wf_context GlideRecord.
    운영 문자열 수행 중인 데이터베이스 작업입니다. , insertupdate, . delete
    표 37. 반환
    유형 설명
    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 에서 사용됩니다. 이렇게 하면 워크플로가 시작되고 이 메서드에 대한 추가 인수가 "타이머" 활동에서 일정 기간 동안 워크플로 실행을 일시 중지하는 데 사용됩니다.

    표 38. 매개변수
    이름 유형 설명
    워크플로우ID 문자열 시작할 워크플로우의 sys_id입니다. 이 sys_id 테이블 wf_workflow 참조합니다.
    소급 Mecs 번호 활동 타이머에서 사용하는 지연 시간(밀리초) 입니다.
    current GlideRecord 이 워크플로우에서 현재로 사용할 기록의 GlideRecord입니다. 이는 일반적으로 이 워크플로우에 Table 대한 워크플로우 속성의 필드에서 가져온 것입니다.
    운영 문자열 수행 중인 데이터베이스 작업입니다. , insertupdate, . delete
    변수 배열 워크플로우에 추가할 변수 컬렉션입니다.
    withSchedule ??? 활동 타이머에서 사용하는 일정
    표 39. 반환
    유형 설명
    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 클래스의 생성자입니다.

    표 40. 매개변수
    이름 유형 설명
    없음
    표 41. 반환
    유형 설명
    void
    var w = new Workflow();