플로에서 플로 실행
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- 하위 플로 요소를 사용하여 작업을 최소화합니다.
- 다른 플로 내에서 실행되는 플로를 만듭니다.
- 참조된 플로의 변수가 상위 플로로 데이터를 다시 전달하도록 구성합니다.
게으름의 힘
믿기 어렵겠지만, 관리자가 가질 수 있는 가장 중요한 자질 중 하나는 바로 게으름입니다.
정말이에요! Salesforce 조직에서 4개의 서로 다른 플로에 영향을 미치는 변경을 수행해야 하는 경우 4개의 플로를 모두 업데이트할 것인가요, 아니면 하나만 업데이트할 것인가요? 엉뚱하게 들릴 수 있지만 여러분도 게으름의 힘으로 불필요한 작업과 같은 장애물을 극복할 수 있습니다.
예를 들어, Flo의 조직에는 동일한 메시지를 Chatter에 게시하는 4개의 플로가 있습니다. 해당 Chatter 게시물의 내용이 변경될 때마다 Flo는 네 개의 플로 모두에서 중복된 요소를 업데이트합니다. Flo는 너무 많은 중복 작업이 번거롭다고 생각하게 됩니다. 다행히도 아직 사용하지 않은 또 다른 요소, 즉 하위 플로 요소가 있습니다.
플로(상위 플로)에서 하위 플로 요소를 사용하면 다른 플로(하위 플로)를 참조하여 현재(상위) 플로 내에서 실행할 수 있습니다. 네 개가 아닌 하나의 플로만 변경하면 된다는 점에 Flo는 매우 기뻐했습니다. 또한 적은 수의 플로를 구성하면 무언가를 간과하거나 잘못 구성할 가능성이 줄어듭니다.
Flo는 여러분에게 Chatter 게시물에 대해 별도의 플로를 만들어 달라고 요청합니다. Flo는 새 하위 플로를 사용하여 4개의 개별 플로에서 중복되는 요소를 대체할 계획입니다. 이렇게 Chatter 게시물과 관련된 내용이 변경되면 Flo는 4개의 개별 플로를 모두 업데이트하는 대신 하나의 하위 플로만 업데이트하면 됩니다.
입력 및 출력 변수
하위 플로의 변수는 특별합니다. 변수를 만들 때 Available for input(입력에 사용 가능) 및 Available for output(출력에 사용 가능) 설정을 보셨나요? 이러한 설정을 사용하면 변수가 상위 플로에서 하위 플로로 입력을 전달하고 하위 플로에서 상위 플로로 다시 출력을 전달할 수 있습니다.
하지만 왜 하위 플로에서 데이터를 주고받을까요? Flo의 예시에서 하위 플로는 상위 플로의 트리거 레코드에 있는 Chatter에 게시하므로 하위 플로에는 해당 트리거 레코드의 ID가 필요합니다. 하위 플로는 상위 플로의 트리거 레코드에 액세스할 수 없으므로 상위 플로가 이를 하위 플로로 보내야 합니다. 또한 상위 플로가 하위 플로에서 만든 Chatter 게시물의 ID를 알아야 하는 경우 하위 플로는 해당 ID를 상위 플로로 다시 보내야 합니다.
하위 플로에서 입력 또는 출력에 사용할 수 있는 변수를 정의하세요.
- 상위 플로에서 데이터를 받으려면 하위 플로에 입력 가능한 변수가 있어야 합니다.
- 하위 플로가 완료되어 데이터를 상위 플로로 다시 보내려면 하위 플로에 출력 가능한 변수가 필요합니다.
- 어느 방향으로든 데이터를 전송할 필요가 없는 경우에는 입력 또는 출력 변수가 필요하지 않습니다.
하위 플로 요소 만들기
다른 플로 내에서 플로를 실행하려면 먼저 상위 플로와 하위 플로를 만듭니다. 그런 다음 상위 플로에 하위 플로 요소를 추가합니다.
하위 플로 만들기
- 플로를 만들고 Autolaunched Flow(자동 실행 플로) 유형을 선택합니다.
- 텍스트 변수를 만듭니다.
- API Name(API 이름):
userMentionID
- Available for input(입력에 사용 가능): Checked(확인됨)
- 다른 텍스트 변수를 만듭니다.
- API Name(API 이름):
postTargetID
- Available for input(입력에 사용 가능): Checked(확인됨)
- 또 다른 텍스트 변수를 만듭니다.
- API Name(API 이름):
chatterPostID
- Available for output(출력에 사용 가능): Checked(확인됨)
- 텍스트 템플릿을 만듭니다.
- API Name(API 이름):
chatterBody
- Body(본문):
@[{!userMentionID}], please review this record.
(@[{!userMentionID}] 님, 이 레코드를 검토해 주세요.) - 본문 편집기에서 "View as Rich Text(서식 있는 텍스트로 보기)"를 "View as Plain Text(일반 텍스트로 보기)"로 변경합니다.
- 작업 요소를 추가합니다.
- Action(작업): Post to Chatter(Chatter에 게시)
- Label(레이블):
Chatter Mention Post
(Chatter 멘션 포스트) - API Name(API 이름):
Chatter_Mention_Post
- Message(메시지): chatterBody
- Target Name or ID(대상 이름 또는 ID): postTargetID
- Show advanced options(고급 옵션 표시)에서 Manually assign variables(변수 수동 할당)를 선택합니다.
- Feed Item ID(피드 항목 ID): chatterPostID
- 플로를 저장합니다. Flow Label(플로 레이블)의 경우
Post to Chatter
(Chatter에 게시)를 입력합니다.
- 플로를 활성화합니다.
하위 플로 요소로 상위 플로 만들기
- 레코드 트리거형 플로를 만듭니다.
- Object(개체): Case(사례)
- Trigger the Flow When(플로를 트리거해야 하는 경우): A record is created or updated(레코드가 생성되거나 업데이트되는 경우)
- Condition Requirements(조건 요구 사항): All Conditions Are Met (AND)(모든 조건이 충족됨(AND))
- Condition(조건): Priority(우선 순위), Equals(같음), High(높음)
- When to Run the Flow for Updated Records(업데이트된 레코드 플로 실행 시기): Only when a record is updated to meet the condition requirements(조건 요구 사항을 충족하기 위해 레코드가 업데이트되는 경우만):
- Optimize the Flow for(플로 최적화 대상): Actions and Related Records(작업 및 관련 레코드)
- 하위 플로 요소를 추가합니다.
-
Post to Chatter(Chatter에 게시) 플로를 선택합니다.
- Label(레이블):
Post to Chatter
(Chatter에 게시) - API Name(API 이름):
Post_to_Chatter
- postTargetID 필드를 활성화하고 Triggering Case(트리거 사례) > Case ID(사례 ID)를 선택합니다.
- userMentionID 필드를 활성화하고 Triggering Case(트리거 사례) > Owner ID(소유자 ID)를 선택합니다.
아래로 스크롤한 다음 Owner ID (Group)(사용자 ID(그룹) 또는 Owner ID (User)(사용자 ID(사용자))가 아닌 Owner ID(사용자 ID)를 선택해야 합니다.
- 플로를 저장합니다. Flow Label(플로 레이블)에
Case Priority is High
(사례 우선 순위가 높음)를 입력합니다.
이제 레코드 생성에 변경이 필요할 때마다 Flo는 단일 하위 플로만 업데이트하면 됩니다. 결론적으로 게으름 한 스푼, 업무 과중 제로라고 할 수 있겠네요!
고려 사항
하위 플로로 작업할 때는 다음 사항을 염두에 두세요.
- 하위 플로 요소는 자동 실행 플로와 화면 플로만 참조할 수 있습니다.
- 화면 플로에서는 다른 화면 플로만 참조할 수 있습니다.
- 비활성 플로를 참조하는 경우 해당 플로는 플로 관리 권한이 있는 사용자에 대해서만 실행됩니다.
- 하위 플로에 여러 버전이 있는 경우 상위 플로는 하위 플로의 활성 버전을 실행합니다. 하위 플로에 활성 버전이 없는 경우 상위 플로가 최신 버전을 실행합니다.
리소스