salesforce 제로 기초 개발 입문 학습 (9) 승인 프로 세 스 소개
http://www.cnblogs.com/mingmingruyuedlut/p/3765777.html
Approval Process 는 프로 세 스 승인 에 사 용 됩 니 다. Apex 는 주로 Approval 네 임 스페이스 와 System 네 임 스페이스 의 Approval 클래스 와 관련 됩 니 다.
그 중에서 Approval 네 임 스페이스 의 주요 유형 은 다음 과 같다.
다음은 이러한 종류의 역할 과 사용 방식 을 코드 를 통 해 소개 합 니 다. 이 코드 는 공식 PDF 문서 의 sample 에 복사 되 어 있 습 니 다.
1 public class TestApproval {
2 void submitAndProcessApprovalRequest() {
3 // Insert an account
4 Account a = new Account(Name='Test',annualRevenue=100.0);
5 insert a;
6 User user1 = [SELECT Id FROM User WHERE Alias='SomeStandardUser'];
7 // Create an approval request for the account
8 Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
9 req1.setComments('Submitting request for approval.');
10 req1.setObjectId(a.id);
11 // Submit on behalf of a specific submitter
12 req1.setSubmitterId(user1.Id);
13 // Submit the record to specific process and skip the criteria evaluation
14 req1.setProcessDefinitionNameOrId('PTO_Request_Process');
15 req1.setSkipEntryCriteria(true); // Submit the approval request for the account
16 Approval.ProcessResult result = Approval.process(req1); // Verify the result
17 System.assert(result.isSuccess());
18 System.assertEquals( 'Pending', result.getInstanceStatus(), 'Instance Status'+result.getInstanceStatus());
19 // Approve the submitted request
20 // First, get the ID of the newly created item
21 List<Id> newWorkItemIds = result.getNewWorkitemIds();
22 // Instantiate the new ProcessWorkitemRequest object and populate it
23 Approval.ProcessWorkitemRequest req2 = new Approval.ProcessWorkitemRequest();
24 req2.setComments('Approving request.');
25 req2.setAction('Approve');
26 req2.setNextApproverIds(new Id[] {UserInfo.getUserId()});
27 // Use the ID from the newly created item to specify the item to be worked
28 req2.setWorkitemId(newWorkItemIds.get(0));
29 // Submit the request for approval
30 Approval.ProcessResult result2 = Approval.process(req2);
31 // Verify the results
32 System.assert(result2.isSuccess(), 'Result Status:'+result2.isSuccess());
33 System.assertEquals( 'Approved', result2.getInstanceStatus(), 'Instance Status'+result2.getInstanceStatus());
34 }
35 }
주: 이 코드 는 직접 실행 할 수 없습니다. 이 코드 를 실행 하려 면 위의 링크 를 참조 하여 Account 표 로 'PTO' 라 고 설정 하 십시오.Request_Process 의 심사 비준 절차.
상기 코드 를 통 해 다음 과 같은 종류의 사용 을 더욱 잘 이해 할 수 있다.
1) 프로 세 스 요청
ProcessRequest 클래스 는 ProcessSubmitRequest 와 ProcessWorkitem Request 클래스 의 부모 클래스 로 서 네 가지 내장 방법 을 제공 합 니 다.
ProcessRequest 패 키 징 방법 은 가장 기본 적 인 절차 승인 방법 이 며, 이 방법 들 은 모두 실례 화 방법 입 니 다.일반적으로 새 절차 의 심사 비준 유형 은 이러한 것 을 예화 하 는 것 이 아니 라 그 가 대응 하 는 두 가지 유형 을 예화 하 는 것 이다.
2) 프로 세 스 제출 요청
이 를 통 해 프로 세 스 승인 에 기록 하 는 방법 을 제출 합 니 다. ProcessRequest 류 를 계승 하 는 방법 을 제외 하고 다음 과 같은 방법 입 니 다.
이런 방법 으로 설명 을 통 해 알 수 있 듯 이 이런 것 은 주로 하나의 데 이 터 를 절차 심사 비준 에 제출 할 때 사용 하 는 것 이다.
3) ProcessWorkitem 요청
이 는 하나의 기록 이 절차 승인 에 제출 된 후에 하나의 절차 승인 요 구 를 처리 하 는 데 사 용 됩 니 다. 처리 상 태 는 Approve, Reject, Removed 세 가지 상황 으로 나 눌 수 있 습 니 다.ProcessRequest 클래스 를 계승 하 는 방법 을 제외 하고 다음 과 같은 방법 을 사용 합 니 다.
이런 방법 을 통 해 알 수 있 듯 이 이런 것 은 절차 에 제출 된 심사 비준 기록 을 심사 처리 할 때 사용 하 는 유형 이다.
4) 프로 세 스 결과
절차 심사 비준 에 기록 을 제출 한 후, 이러한 절 차 를 통 해 심사 비준 의 결과 상 태 를 처리 할 수 있다.
이러한 방법 은 다음 과 같다.
5) 승인
Approval 은 System 네 임 스페이스 에 위치 하고 상기 1 - 4 는 모두 Approval 네 임 스페이스 에 있 습 니 다.
Approval 류 는 여러 가지 방법 을 포함 하고 있 습 니 다. 여 기 는 주로 process () 방법 을 소개 합 니 다. 다른 방법 은 공식 PDF 문 서 를 직접 보 세 요.이 방법 은 새로운 요청 을 제출 하거나 이미 존재 하 는 승인 기록 을 통과 하거나 거부 하 는 역할 을 합 니 다.이 방법 은 ProcessRequest 라 는 항목 이 있 습 니 다. ProcessSubmitRequest 나 ProcessWorkitemRequest 류 를 매개 변수 로 지정 하여 다양한 기능 을 수행 할 수 있 습 니 다. 이 방법 은 Approval. ProcessResult 대상 으로 되 돌아 갑 니 다.승인 절차 에 기록 되 어 있 는 프로 세 스 인 스 턴 스 워 크 아 이 템 표 와 프로 세 스 인 스 턴 스 표를 정확하게 제출 하면 이 기록 에 대한 정보 기록 이 추 가 됩 니 다.
요약: ProcessRequest 는 승인 요청 의 부모 클래스 로 서 두 가지 중요 한 방법 을 봉 인 했 습 니 다. 확 장 된 두 개의 하위 클래스 는 각각 다른 기능 을 실 현 했 습 니 다. ProcessSubmitRequest 는 하나의 기록 을 승인 절차 에 전달 하고 ProcessWorkitem Request 는 승인 절차 에 이미 존재 하 는 기록 을 실 현 했 습 니 다.
상기 예 를 조정 하여 선배 의 그런 방식 (위 에 링크) 을 통 해 조작 하지 않도록 한다.
위 에서 소개 한 바 와 같이 setProcessDefinitionNameOrId () 방법 파 라미 터 를 null 로 설정 하거나 이 방법 을 호출 하지 않 을 때 상기 방법 을 실행 하지 않 을 수 있 습 니 다. 부모 클래스 의 setNextApproverIds () 방법 을 정의 하여 승인 사용자 번 호 를 설정 하면 승인 흐름 을 통과 할 수 있 습 니 다. 따라서 상기 코드 는 다음 과 같은 변형 을 해서 바로 통과 할 수 있 습 니 다.
1 public class TestApproval {
2 public void submitAndProcessApprovalRequest() {
3 // Insert an account
4 Account a = new Account(Name='Test',annualRevenue=100.0);
5 insert a;
6 User user1 = [SELECT Id FROM User WHERE Alias='zero'];
7 // Create an approval request for the account
8 Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
9 req1.setComments('Submitting request for approval.');
10 req1.setObjectId(a.id);
11 // Submit on behalf of a specific submitter
12 req1.setSubmitterId(user1.Id);
13 ID[] ids = new ID[]{user1.Id};
14 req1.setNextApproverIds(ids);
15 // Submit the record to specific process and skip the criteria evaluation
16 //req1.setProcessDefinitionNameOrId('PTO_Request_Process');
17 req1.setSkipEntryCriteria(true); // Submit the approval request for the account
18 Approval.ProcessResult result = Approval.process(req1); // Verify the result
19 System.assert(result.isSuccess());
20 System.assertEquals( 'Pending', result.getInstanceStatus(), 'Instance Status'+result.getInstanceStatus());
21 // Approve the submitted request
22 // First, get the ID of the newly created item
23 List<Id> newWorkItemIds = result.getNewWorkitemIds();
24 // Instantiate the new ProcessWorkitemRequest object and populate it
25 Approval.ProcessWorkitemRequest req2 = new Approval.ProcessWorkitemRequest();
26 req2.setComments('Approving request.');
27 req2.setAction('Approve');
28 req2.setNextApproverIds(new Id[] {UserInfo.getUserId()});
29 // Use the ID from the newly created item to specify the item to be worked
30 req2.setWorkitemId(newWorkItemIds.get(0));
31 // Submit the request for approval
32 Approval.ProcessResult result2 = Approval.process(req2);
33 // Verify the results
34 System.assert(result2.isSuccess(), 'Result Status:'+result2.isSuccess());
35 System.assertEquals( 'Approved', result2.getInstanceStatus(), 'Instance Status'+result2.getInstanceStatus());
36 }
37 }
setup - > Create - > Workflow & Approvals - > Approval Processes 에서 사용자 정의 승인 절 차 를 새로 만 드 는 것 이 좋 습 니 다. 프로그램 에서 다음 승인 자 를 동적 으로 설정 하 는 것 이 좋 습 니 다. 구체 적 인 프로젝트 요 구 를 보 세 요.두 가지 차이 점 에 대해 저 는 깊이 이해 하지 못 했 습 니 다. 더 잘 알 고 싶 은 것 은 관련 포럼 이나 공식 문 서 를 조회 할 수 있 습 니 다.내용 에 잘못된 부분 이 있 으 면 비판 하고 지적 해 주세요. 모 르 는 부분 이 있 으 면 댓 글로 연락 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.