열린 티켓의 우선순위 변경 액션
가상의 Demo Ticket 유형에서 Priority를 P0, P1 또는 P2로 바꾸되 Status가 Open인 티켓만 제출하도록 구성합니다.
예제 자료와 편집 준비
유형에는 Ticket ID, Title, Priority와 Status가 있습니다. 예제 객체는 다음과 같으며 같은 구조의 자신의 유형을 사용해도 됩니다.
| Ticket ID | Title | Status | Priority |
|---|---|---|---|
| PDS-123 | Demo Ticket One | Open | P2 |
| PDS-124 | Demo Ticket Two | Closed | P1 |
Object Storage V2에서는 유형의 편집을 허용하는 설정을 켜야 합니다. 구형 V1은 쓰기 반영 데이터셋이 필요했던 별도 경로입니다. 객체와 링크 편집의 조건을 확인합니다.
액션 유형 생성
Ontology Manager의 Action types에서 New action type을 선택합니다.
Action type 단계의 Object에서 Demo Ticket을 고르고 Object actions의 Modify object(s)를 선택합니다. Mapping에서 Add property로 Priority를 추가합니다. Metadata에서 액션 이름을 정하고 마지막 단계에서 Create합니다.
이후 Overview에 설명을 추가하거나 Rules에서 수정할 속성을 늘릴 수 있습니다.
우선순위 입력 제한
Parameters에는 규칙에서 만든 Ticket과 Priority 입력이 나타납니다.
Priority를 선택하고 Constraints를 User input에서 Multiple choice로 바꿉니다. P0, P1과 P2를 선택지로 추가합니다. 이 조건은 가능한 입력값을 정하고, 티켓의 업무 상태는 다음 제출 조건으로 검사합니다.
열린 티켓만 허용
Security & Submission Criteria의 Execution에서 Condition을 추가합니다. Parameter 템플릿으로 Ticket 객체 입력의 Status를 선택하고 is 연산자로 Open과 정확 비교합니다.
실패 이유를 사용자가 알 수 있도록 메시지도 정합니다. 정의 변경을 저장한 뒤 앱에 연결합니다.
객체 뷰에 버튼 추가
Demo Ticket One의 객체 뷰(Object view)를 편집하여 위쪽에 Actions 위젯을 추가합니다. 사이드바의 Add Item에서 Ontology Manager의 액션 RID를 복사해 Action RID에 입력하고 레이블을 Change Ticket Priority로 지정합니다.
기본 폼은 모든 매개변수(Parameter)를 표시하며 현재 객체가 어느 입력인지 자동으로 알지는 못합니다. Ticket의 ID를 ticket으로 정한 예에서는 Default value의 Add Item에 ticket을 입력합니다. 값 종류는 Environment variable, 값은 Current object로 선택하고 표시를 Hidden으로 바꿉니다. 실제 구성에서는 해당 매개변수의 ID를 사용합니다.
이 구성은 사용자의 폼 선택과 입력 실수를 줄이는 방식입니다. 숨김이나 기본값이 다른 호출자의 권한을 제한하는 보안 조건을 대신하지는 않습니다. 서버의 제출 조건과 실행 권한을 함께 사용합니다.
객체 뷰를 저장하고 게시합니다.
적용 결과 확인
운영 적용 전에 시험 실행으로 조건과 제안 편집을 확인할 수 있습니다. 시험 실행도 필요한 외부 함수와 요청은 실제로 실행할 수 있으므로 그 범위를 먼저 확인합니다.
열린 티켓에서 Change Ticket Priority를 선택하고 우선순위를 고른 뒤 Submit하면 객체 뷰가 새 값으로 갱신됩니다.
Closed인 Demo Ticket Two에서는 설정한 제출 조건 때문에 실행할 수 없습니다.
원천 갱신과 사용자 편집의 충돌
같은 기본 키(Primary key)의 객체에 입력 데이터와 사용자 편집이 함께 들어오면 값 선택 전략을 사용합니다. 기본값은 Apply user edits이며, Apply most recent value는 플랫폼 인스턴스에 제공되지 않을 수 있습니다. 이 선택은 동시 액션의 트랜잭션 격리와 구분합니다.