내장
또는 사용자 정의 노드를 포함할 때와
동일한 방법으로 메시지 플로우에 서브플로우를 포함시킬 수 있습니다.
또한 동일한 방법으로 다른 노드에도
서브플로우를 연결할 수도 있습니다. 서브플로우를 한 번 정의하여 둘 이상의
메시지 플로우(및 둘 이상의 메시지 플로우 프로젝트)에서 사용할 수 있으므로 서브플로우에는 몇 가지 장점이 있습니다.
- 재사용 및 개발 시간 감소
- 특정 기능을 아카이브하는 일관된 방법 및 메시지 플로우의
증가된 유지보수 가능성(프로그래밍 매크로 또는 하나를 작성하여 여러 곳에서 사용하는 인라인 코드와 유사한
서브플로우를 고려하십시오.)
- 유연성. 서브플로우의 일부
또는 모든 노드 등록 정보를 확장하면 특정 컨텍스트에 맞게 서브플로우를
구성할 수 있습니다(예: 출력 큐 또는 데이터 소스 정보를 갱신하여).
그러나 서브플로우는 단일 노드가 아니며, 이를 포함시키면 성능에 영향을 미치는 메시지 플로우의 노드 수를
증가시킵니다.
서브플로우 사용에 대한 다음 예를 고려하십시오.
- 오류를 발견할 경우 여러 메시지 플로우에 적용되는 공용 조치 순서를 제공하는 서브플로우를 정의할 수 있습니다.
예를 들면, Warehouse 노드를 통해 메시지를 데이터베이스에 기록한 다음 오류 복구 루틴이 처리할 수 있도록 이를 큐에 넣는 공용 오류 루틴이 있을 수 있습니다. 다중 메시지 플로우 또는
한 메시지 플로우 내의 여러 장소에 이 루틴을 사용하면 자원을 효율적이고 일관성있게 사용할 수 있으며
오류가 발생할 때마다 이러한 루틴을 고려하지 않아도 됩니다.
- 여러 다른 메시지 플로우를 통과하는 메시지에 대해 수행할 공용 계산이 있을 수 있습니다.
예를 들면, 데이터베이스의 현재 환율에 액세스하여 이를 여러 다른 통화 가격을 계산하는 데 적용할 수 있습니다. 적절한 각 메시지 플로우에 통화 계산기 서브플로우를 포함시킬 수 있습니다.

Passthrough 노드를 사용하여 실행 시 서브플로우를 버전화하십시오. Passthrough 노드를 사용하면
메시지 플로우 또는 서브플로우에 레이블을 추가할 수 있습니다. 이 레이블과 버전 제어 시스템의 키워드 대체를 결합함으로써 전개된 메시지 플로우에 어떤
버전의 서브플로우가 포함되어 있는지 알 수 있습니다. 사용자의 목적을 위해 이 레이블을 사용할 수 있습니다.
레이블에 올바른 버전 키워드가 포함되어 있으면 다음과 같은 레이블의 값이 표시됩니다.
- 브로커 아카이브(BAR) 파일에 저장, mqsireadbar 명령 사용
- 특정 브로커에 마지막으로 전개, Message Brokers Toolkit에서 전개된 메시지 플로우의 등록 정보
- 실행 시에, 해당 메시지 플로우에 대한 사용자 추적을 사용하는 경우
out 터미널에서 전달하는
메시지는 in 터미널에서 수신하는 메시지와 동일합니다. 예를 들면,
여러 메시지 플로우에 포함시킬 오류 처리 서브플로우를 개발하는 경우,
해당 서브플로우를 수정하려고 할 수 있습니다. 그러나 시작 시에 그 안에 포함되는 메시지 플로우 서브세트로만 수정된
버전을 소개하려고 할 수도 있습니다. 포함시킨 서브플로우 버전을 식별하는 Passthrough 노드 인스턴스의 값을
설정하십시오.

서브플로우의 사용법이 다음 샘플에 설명되어 있습니다.
서브플로우의 사용법이 Error Handler 샘플 및 Coordinated Request Reply 샘플에 설명되어 있습니다. Error Handler
샘플은 서브플로우를 사용하여 오류에 대한 정보를 트랩하고 데이터베이스에 해당
정보를 저장합니다. Coordinated Request Reply 샘플은 서브플로우를 사용하여
WebSphere MQ 메시지의 ReplyToQ 및 ReplyToQMgr 값의 저장영역을 캡슐화하므로
처리 논리가 기타 메시지 플로우에서 쉽게 다시 사용될 수 있으며 대체 구현으로
바꿀 수 있습니다.