Aaron H. Kim Fearless Integration Maniac

Infopath에서 PI가져오기.

2007-03-02
Aaron Kim

BizTalk 프로젝트를 하다보면 소스 document가 Infopath인 경우가 있습니다. Infopath의 특성상 데이터가 xml로 저장되므로, BizTalk과의 궁합이 잘 맞는다고 할 수 있습니다.

Infopath document에는 PI(Processing Instruction)라고 하는 정보가 있는데 이를 가져오는 일이야말로 가장 처음 마주치게 되는 과제라고 할 수 있습니다.

보통의 시나리오라면 어떨까요? 소스 document에서 PI를 뽑아내어 저장해뒀다가 타겟 document를 만들때 PI 정보를 input할 것입니다.

다음은 일단 PI를 가져오기위한 C# 소스입니다.

// Get PI from infopath form
XmlNodeList nodeList = objDoc.SelectNodes(processing-instruction());
string node = string.Empty;
StringBuilder strProcessingInstructions = new StringBuilder();
if (nodeList.Count > 0) { strProcessingInstructions.Append(nodeList[0].OuterXml); }
if (nodeList.Count > 1) { strProcessingInstructions.Append(nodeList[1].OuterXml); }
if (nodeList.Count > 2) { strProcessingInstructions.Append(nodeList[2].OuterXml); }
if (nodeList.Count > 3) { strProcessingInstructions.Append(nodeList[3].OuterXml); }
if (nodeList.Count > 4) { strProcessingInstructions.Append(nodeList[4].OuterXml); } 

다음은 저장해둔 PI를 Orchestration에서 Output Message에 할당하는 XLANG/S입니다.

OutMessage(XMLNORM.ProcessingInstructionOption) = 1;

OutMessage(XMLNORM.ProcessingInstruction) = strProcessingInstructions;


Similar Posts

Comments