WorkflowModelManager - 전역

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기23분
  • WorkflowModelManager 스크립트 포함은 워크플로우 모델을 쿼리하고, 지정된 워크플로우 기록 항목 사이를 앞뒤로 이동하고, 내역에서 활동 및 전환 관련 정보를 쿼리하는 메서드를 제공합니다.

    WorkflowModelManager 스크립트 포함과의 상호 작용은 ActivityHistoryRecord 데이터 개체를 통해 이루어집니다. ActivityHistoryRecord 개체는 내부 클래스이며 WorkflowModelManager와 상호 작용하는 동안에만 사용됩니다.

    워크플로우 활동의 실행 이력을 가져오려면 다음을 수행합니다.
    var model = new WorkflowModelManager('myContextId');
    var activities = model.getExecutedHistory();
    
    워크플로우의 재생을 출력하려면:
    var model = new WorkflowModelManager('myContextId');
    model.getExecutedHistory();
    model.playBack();
    

    이때, 실행된 트랜지션을 로드하기 위해 playBack이 필요합니다. 이것은 또한 특정 활동으로 롤백하기 위해 모델에서 뒤로 이동하는 역할도 합니다.

    캐시된 모델의 상세 정보를 보려면 다음을 수행합니다.
    var model = new WorkflowModelManager('myContextId');
     model.getExecutedHistory();
     model.dump();

    WorkflowModelManager - WorkflowModelManager(문자열 contextId)

    지정된 컨텍스트 내에 새 WorkflowModelManager 개체(생성자)를 만듭니다.

    표 1. 매개변수
    이름 유형 설명
    contextId 문자열 WorkflowModelManager를 만들 컨텍스트의 ID입니다.
    표 2. 반환
    유형 설명
    활동 이력 기록 요청된 ActivityHistoryRecord JavaScript 객체입니다.
    var model = new WorkflowModelManager('MyContextId');

    WorkflowModelManager - getActivityHistoryRecordById(String haRecordSysId)

    인수에 제공된 항목에 의해 wf_history.sys_id 캐시된 이력 활동을 조회합니다.

    표 3. 매개변수
    이름 유형 설명
    ha기록 시스템 ID 문자열 원하는 활동 이력 [wf_history] 기록의 Sys_id입니다.
    표 4. 반환
    유형 설명
    활동 이력 기록 요청된 ActivityHistoryRecord JavaScript 객체입니다.

    이 예는 메소드를 사용하여 지정된 이력 활동 기록을 확보하는 방법을 보여줍니다.

    var model = new WorkflowModelManager('a71efa6345550110a86630cf9552f3af');  // The sys_id of the wf_context
    model.getExecutedHistory();
    var current_hist_obj = model.getActivityHistoryRecordById('2b1efa6345550110a86630cf9552f3bc'); // The sys_id of the desired record
    gs.info(JSON.stringify(current_hist_obj));

    출력:

    
    {
       "sys_id":"2b1efa6345550110a86630cf9552f3bc",
       "index":"3",
       "startTime":1643795456000,
       "endTime":1643795456000,
       "wfaId":"31bf2a05e7c133009a610558d2f6a968",
       "wfaIsParent":{
         
       },
       "parent":"",
       "wfaName":{
         
       },
       "adId":"db8c65aec0a8016501d00259bc7203a4",
       "adName":{
         
       },
       "transitions":[
          {
             "sys_id":"e31efa6345550110a86630cf9552f3c0",
             "ahrId":"2b1efa6345550110a86630cf9552f3bc",
             "to":"39bf2a05e7c133009a610558d2f6a970",
             "from":"31bf2a05e7c133009a610558d2f6a968",
             "rolledBack":"false",
             "rolledBackBy":""
          },
          {
             "sys_id":"e71efa6345550110a86630cf9552f3c0",
             "ahrId":"2b1efa6345550110a86630cf9552f3bc",
             "to":"7dbf2a05e7c133009a610558d2f6a96b",
             "from":"31bf2a05e7c133009a610558d2f6a968",
             "rolledBack":"false",
             "rolledBackBy":""
          }
       ],
       "rolledBackBy":"",
       "ARRIVED":true,
       "NOT_ARRIVED":false,
       "joinFroms":[
         
       ],
       "joinSatisfied":false,
       "rollingBackBy":0
    }

    WorkflowModelManager - getAllTransitionedIntoActivity(개체 설명)

    인수에 표시된 sys_id 활동으로 실행되고 전환된 이력 활동을 조회합니다.

    다음 상태는 워크플로우의 기록에서 실행된 ActivityHistoryRecords와 연결된 전환에서 TO로 존재하는 haRecord에 표시된 활동과 연결된 활동을 기반으로 wf_activity.sys_id 합니다. (이는 실행 순서(시간별)에서 haRecord 앞에 오는 TO 전환만 반환하는 getPreviousByTransition과 다릅니다.) 반환 값은 haRecord.wfaId 인수를 TO 활동으로 식별하는 ActivityHistoryRecords의 컬렉션입니다. 반환 값은 실행된 기록 컬렉션의 모든 전환을 기반으로 합니다. 이 활동 이전에 실행된 활동을 시간 내에 가져오려면 getPreviousByExecutedOrder를 사용합니다.

    표 5. 매개변수
    이름 유형 설명
    설명 객체 ActivityHistoryRecord JavaScript 개체입니다.
    표 6. 반환
    유형 설명
    객체 배열 ActivityHistoryRecord JavaScript 객체의 배열입니다.

    WorkflowModelManager - getAllTransitionedIntoActivityId(String haRecordSysId)

    인수에 표시된 sys_id 활동으로 실행되고 전환된 이력 활동을 조회합니다. next 상태는 워크플로우의 기록에서 실행된 ActivityHistoryRecords와 연결된 전환에서 TO로 존재하는 haRecord에 표시된 활동과 연결된 활동을 기반으로 wf_activity.sys_id 합니다. (이는 실행 순서(시간별)에서 haRecord 앞에 오는 TO 전환만 반환하는 getPreviousByTransition과 다릅니다.) 반환 값은 haRecord.wfaId 인수를 TO 활동으로 식별하는 ActivityHistoryRecords의 컬렉션입니다.

    next 상태는 워크플로우의 기록에서 실행된 ActivityHistoryRecords와 연결된 전환에서 TO로 존재하는 haRecord에 표시된 활동과 연결된 활동을 기반으로 wf_activity.sys_id 합니다. (이는 실행 순서(시간별)에서 haRecord 앞에 오는 TO 전환만 반환하는 getPreviousByTransition과 다릅니다.) 반환 값은 haRecord.wfaId 인수를 TO 활동으로 식별하는 ActivityHistoryRecords의 컬렉션입니다.

    표 7. 매개변수
    이름 유형 설명
    ha기록 시스템 ID 문자열 활동 이력의 sys_id입니다(테이블 wf_history).
    표 8. 반환
    유형 설명
    객체 배열 요청된 ActivityHistoryRecord JavaScript 객체의 배열입니다.
    var model = new WorkflowModelManager('a143585c3b001000dada82c09ccf3d44');
          model.getExecutedHistory();
          var activity = model.begin;
          gs.print('activity: ' + activity.wfaName + ', transitions: ' + activity.transitions.length);
          while( activity != null){    
              gs.print('activity: ' + activity.wfaName + ', transitions: ' + activity.transitions.length);    
              var parents = model.getAllTransitionedIntoActivity(activity);
              for( var i = 0; i < parents.length; i++ ){
                  gs.print(' ---------------  parent activity: ' + parents[i].wfaName );
                }
               activity = model.getNextByExecutedOrder( activity );
          }
        

    WorkflowModelManager - getExecutedHistory( )

    이 메서드는 WorkflowModelManager 개체를 초기화하기 위해 호출해야 하는 작업자 메서드입니다. WorkflowModelManager 객체를 초기화하는 과정에서 getExecutedHistory()activityHistoryRecord 데이터 객체 배열( WorkflowModelManager 클래스의 멤버)을 만들고 채웁니다. 대부분의 WorkflowModelManager 메서드는 activityHistoryRecord 배열의 하위 집합을 반환합니다. 그런 다음 스크립트에서 하나 이상의 activityHistoryRecord 메서드를 호출하여 추가 작업을 수행할 수 있습니다.

    표 9. 매개변수
    이름 유형 설명
    없음
    표 10. 반환
    유형 설명
    문자열 배열 테이블 wf_history에서 sys_ids의 정렬된 배열입니다. 클라이언트 코드에서 반환 값을 사용할 가능성은 거의 없습니다. 후속 메서드 호출에서 사용할 수 있도록 이 개체 내부에 보관됩니다.
    var model = new WorkflowModelManager('myContextId');
    var activities = model.getExecutedHistory();
    var current = model.getActivityHistoryRecordById('d6681d573b130000dada82c09ccf3d10');

    WorkflowModelManager - getFinalExecutedActivityList( )

    컨텍스트별로 wf_history 테이블을 쿼리하고 이 객체의 생성에 설정된 컨텍스트에 의해 지정된 워크플로우에서 실행된 모든 활동을 검색합니다.

    이 함수는 각 활동이 서버 측을 통과한 정확한 순서로 실행된 활동 목록을 생성ActivityManager.java 새 activity_index 사용하여 데이터베이스에서 순서가 나오도록 합니다. 이 호출은 전체 그림을 제공하지 않습니다. 전환을 로드하고 매핑해야 합니다.

    표 11. 매개변수
    이름 유형 설명
    없음
    표 12. 반환
    유형 설명
    객체 배열 ActivityHistoryRecord javascript 객체의 배열입니다.

    WorkflowModelManager - getFinalExecutedActivityIdList( )

    함수가 호출된 순간까지 롤백되거나 건너뛰지 않고 성공적으로 실행된 모든 활동의 목록을 wf_history.sys_ids 가져옵니다.

    표 13. 매개변수
    이름 유형 설명
    없음
    표 14. 반환
    유형 설명
    문자열 배열 실행된 활동에 대한 wf_history.sys_id 값의 배열입니다.
    var model = new WorkflowModelManager('ee3e0a053b101000dada82c09ccf3d7c');
          model.getExecutedHistory();
          var finals = model.getFinalExecutedActivityIdList();
          gs.print(' EXECUTION PATH IDs --------------- : '  + finals.length);
          
          for ( var x = 0; x < finals.length; x++ ) {
              gs.print(finals[x] );
          }

    WorkflowModelManager - getNextByExecutedOrder(Object haRecord)

    인수에 제공된 활동 바로 다음에 실행된 이력 활동을 조회합니다.

    상태는 next 가장 가까운 이전 활동을 반영하는 활동 인덱스를 기반으로 하며 제공된 활동이 전환된 가장 가까운 다음 wf_activity일 필요는 없습니다. 전달된 이 haRecord로 전이된 가장 가까운 다음 활동을 가져오려면 getNextByTransitionOrder(haRecord)를 사용합니다.
    주:
    실행 순서 배열을 어셈블하는 과정에서 기록 개체가 삭제된 배열에 공백이 남습니다. 이는 배열의 인덱스와 객체의 activity_index가 동기화된 상태로 유지되도록 하기 위해 수행됩니다. 이러한 이유로 실행 순서 배열에서 나오는 모든 객체는 nil()에 대해 테스트되어야 하며 activity_index 또는 배열 인덱스 값만을 기반으로 이전 레코드로 가정해서는 안 됩니다.
    표 15. 매개변수
    이름 유형 설명
    ha기록 객체 ActivityHistoryRecord JavaScript 개체입니다.
    표 16. 반환
    유형 설명
    객체 요청된 ActivityHistoryRecord JavaScript 개체입니다.

    다음 예제에서는 getNextByExecutedOrder() 메서드를 사용하여 지정된 활동 후에 실행된 기록 활동을 검색하는 방법을 보여 줍니다.

    var model = new WorkflowModelManager('34451ec2cb200200d71cb9c0c24c9c66'); // Sys_id of the workflow context
    model.getExecutedHistory();
    var current_hist_obj = model.getActivityHistoryRecordById('0199483adba52200a6a2b31be0b8f562');// Sys_id of the current activity from wf_history table
    var next_hist_obj = model.getNextByExecutedOrder(current_hist_obj);
    gs.info(JSON.stringify(next_hist_obj));

    출력:

    {
       "sys_id":"b2c5a06e07e0011094b4fe4f7c1ed049",
       "index":"3",
       "startTime":1640265864000,
       "endTime":1640265864000,
       "wfaId":"64d4e4aa07e0011094b4fe4f7c1ed060",
       "wfaIsParent":{
         
       },
       "parent":"",
       "wfaName":{
         
       },
       "adId":"1ca8d7cf0a0a0b265e9a000c2c08248c",
       "adName":{
         
       },
       "transitions":[
          {
             "sys_id":"bac5a06e07e0011094b4fe4f7c1ed07d",
             "ahrId":"b2c5a06e07e0011094b4fe4f7c1ed049",
             "to":"e0d4acaa07e0011094b4fe4f7c1ed062",
             "from":"64d4e4aa07e0011094b4fe4f7c1ed060",
             "rolledBack":"false",
             "rolledBackBy":""
          }
       ],
       "rolledBackBy":"",
       "ARRIVED":true,
       "NOT_ARRIVED":false,
       "joinFroms":[
         
       ],
       "joinSatisfied":false,
       "rollingBackBy":0
    }
    

    WorkflowModelManager - getNextByExecutedOrderId(String haRecordSysId)

    인수에 제공된 활동에 의해 wf_history.sys_id 캐시된 이력 활동을 검색한 후 검색된 JavaScript 객체로 getNextByExecutedOrder() 를 호출합니다.

    표 17. 매개변수
    이름 유형 설명
    ha기록 시스템 ID 문자열 활동 이력의 sys_id입니다(테이블 wf_history).
    표 18. 반환
    유형 설명
    객체 요청된 ActivityHistoryRecord JavaScript 객체입니다.
    var model = new WorkflowModelManager('7b3e01573b130000dada82c09ccf3dcf');
          model.getExecutedHistory();
          var current = model.getActivityHistoryRecordById('d6681d573b130000dada82c09ccf3d10');
          current.debugDump();
          
          var results = model.getNextByExecutedOrderId(current.sys_id);
          results.debugDump();

    WorkflowModelManager - getNextByTransitionId(String haRecordSysId)

    인수에 제공된 sys_id으로 식별된 활동 바로 다음에 실행된 이력 활동을 조회합니다.

    이 함수는 제공된 wf_history.sys_id 것과 연결된 캐시된 이력 기록을 검색한 다음 getNextByTransition을 호출합니다. 반환 값은 제출 전에 haRecord 발생한 전환을 기반으로 하며 반드시 제출 직전에 haRecord 실행된 활동을 기반으로 하는 것은 아닙니다. 이 활동 이전에 실행된 활동을 시간 내에 가져오려면 getNextByExecutedOrder를 사용합니다.

    표 19. 매개변수
    이름 유형 설명
    ha기록 시스템 ID 문자열 원하는 활동 이력 [wf_history] 기록의 Sys_id입니다.
    표 20. 반환
    유형 설명
    객체 배열 ActivityHistoryRecord JavaScript 객체의 배열입니다.
    var model = new WorkflowModelManager('7b3e01573b130000dada82c09ccf3dcf');
    model.getExecutedHistory();
    model.playBack();
          
    var current = model.getActivityHistoryRecordById('d6681d573b130000dada82c09ccf3d10');
    current.debugDump();
    var results = model.getNextByTransitionId(current.sys_id);
    gs.print('COMPLETED NEXT' + results.length );
    for(var i = 0; i < results.length; i++){
      results[i].debugDump();
    }

    WorkflowModelManager - getPreviousByExecutedOrder(Object haRecord)

    인수에 제공된 활동 바로 전에 실행된 이력 활동을 조회합니다.

    이전 상태는 가장 가까운 이전 활동을 반영하는 활동 인덱스를 기반으로 하며, 이 활동에 대한 유효한 전환이 있는 가장 가까운 이전 활동일 필요는 없습니다. 이 haRecord로 전이된 가장 가까운 이전 활동을 가져오려면 getPreviousByTransition( haRecord)을 사용하십시오.
    주:
    실행 순서 배열을 어셈블하는 과정에서 기록 개체가 삭제된 배열에 공백이 남습니다. 이렇게 하면 배열의 인덱스와 개체의 activity_index이 동기화된 상태로 유지됩니다. 이러한 이유로 실행 순서 배열에서 나오는 모든 객체는 nil()에 대해 테스트되어야 하며 activity_index 또는 배열 인덱스 값을 기반으로 이전 레코드로 가정해서는 안 됩니다.
    표 21. 매개변수
    이름 유형 설명
    ha기록 객체 ActivityHistoryRecord JavaScript 객체
    표 22. 반환
    유형 설명
    객체 요청된 ActivityHistoryRecord JavaScript 객체입니다.

    WorkflowModelManager - getPreviousByExecutedOrderId(문자열 haRecordSysId)

    인수에 제공된 항목에 wf_history.sys_id 의해 캐시된 이력 활동을 검색한 다음, 검색된 JavaScript 객체로 getPreviousByExecutedOrder() 를 호출합니다.

    표 23. 매개변수
    이름 유형 설명
    ha기록 시스템 ID 문자열 워크플로우 이력 시스템 ID(wf_history.sys_id)
    표 24. 반환
    유형 설명
    활동 이력 기록 요청된 ActivityHistoryRecord JavaScript 객체입니다.
    var model = new WorkflowModelManager('contextId');
          model.getExecutedHistory();
          var current = model.getActivityHistoryRecordById('wf_history.sys_id');
          current.debugDump();
          
          var results = model.getPreviousByExecutedOrderId(current.sys_id);
          results.debugDump();

    WorkflowModelManager - getPreviousByTransition(객체 haRecord)

    인수에 제공된 활동 직전에 실행된 이력 활동을 검색합니다.

    다음 상태는 실행 시퀀스에서 haRecord 앞에 오는 모든 ActivityHistoryRecords와 연결된 전환에서 TO로 존재하는 haRecord에 표시된 활동과 연결된 wf_activity.sys_id를 기반으로 합니다. (이는 실행 시퀀스에서 지정된 haRecord 까지 모든 TO 전환을 반환하는 getAllTransitionedIntoActivity 와 다릅니다.) 반환 값은 haRecord.wfaId 인수를 TO 활동으로 식별하는 ActivityHistoryRecords의 컬렉션입니다. 반환 값은 haRecord 제출 전에 발생한 전환을 기반으로 하며 시간 내 haRecord 직전에 실행된 활동을 기반으로 할 필요는 없습니다. 이 활동 이전에 실행된 활동을 시간 단위로 가져오려면 getPreviousByExecutedOrder를 사용합니다.

    표 25. 매개변수
    이름 유형 설명
    ha기록 객체 ActivityHistoryRecord JavaScript 개체입니다.
    표 26. 반환
    유형 설명
    객체 배열 요청된 ActivityHistoryRecord JavaScript 객체의 배열입니다.

    WorkflowModelManager - getPreviousByTransitionId(문자열 haRecordSysId)

    인수에 제공된 활동 직전에 실행된 이력 활동을 검색합니다.

    next 상태는 실행 시퀀스에서 haRecord 앞에 오는 모든 ActivityHistoryRecords와 연결된 전환에서 TO로 존재하는 haRecord에 표시된 활동과의 연관을 기반으로 wf_activity.sys_id 합니다. 반환 값은 haRecord.wfaId 인수를 TO 활동으로 식별하는 ActivityHistoryRecords의 컬렉션입니다. 반환 값은 haRecord 합계 이전에 발생한 전환을 기반으로 하며 반드시 haRecord 직전에 실행된 활동을 기반으로 하는 것은 아닙니다. 이 활동 이전에 실행된 활동을 시간 내에 가져오려면 getPreviousByExecutedOrder()를 사용합니다.

    표 27. 매개변수
    이름 유형 설명
    ha기록 시스템 ID 문자열 활동 이력의 Sys_id입니다. wf_history 테이블에 있습니다.
    표 28. 반환
    유형 설명
    객체 요청된 ActivityHistoryRecord JavaScript 객체의 배열입니다.

    다음 예제에서는 getPreviousByTransitionId() 메서드를 사용하여 ActivityHistoryRecord 객체를 가져오는 방법을 보여 줍니다.

    var w_history = new GlideRecord('wf_history');
    w_history.addQuery('context.id', '089ebdad1b420110c97a40c6cc4bcbf7'); // Pass sys_id of record -> Requested Item / Change Request / Request, etc....
    w_history.query();
    if (w_history.next()) {
        var model = new WorkflowModelManager(w_history.context); // Call sys_id of the workflow context
        model.getExecutedHistory();
        var previousObje_hist_obj = model.getPreviousByTransitionId(w_history.sys_id); // Sys_id of wf_history table
        gs.info(JSON.stringify(previousObje_hist_obj));
    }

    출력:

    [
      {
        "sys_id": "a40a92950721011094b4fe4f7c1ed05e",
        "index": "1",
        "startTime": 1644255752000,
        "endTime": 1644255758000,
        "wfaId": "28200e2a77873300b473455caa1061cd",
        "wfaIsParent": {},
        "parent": "",
        "wfaName": {},
        "adId": "3961a1da0a0a0b5c00ecd84822f70d85",
        "adName": {},
        "transitions": [
          {
            "sys_id": "060ad6950721011094b4fe4f7c1ed016",
            "ahrId": "a40a92950721011094b4fe4f7c1ed05e",
            "to": "24204e2a77873300b473455caa10611a",
            "from": "28200e2a77873300b473455caa1061cd",
            "rolledBack": "false",
            "rolledBackBy": ""
          }
        ],
        "rolledBackBy": "",
        "ARRIVED": true,
        "NOT_ARRIVED": false,
        "joinFroms": [],
        "joinSatisfied": false,
        "rollingBackBy": 0
      }
    ]