2010-12-29 3 views
0

나는 내가 작업하고있는이 오케스트레이션에만 등장한 이상한 상황이있다.BizTalk 메시지를 서로 덮어 쓰시겠습니까?

수신 메시지가 왔습니다. 표현 도형을 사용하여 "xmlDoc"변수에 써서 무엇이 들어 있는지 확인할 수 있습니다. 그런 다음 XML 할당 문자열을 "xmlDoc2"변수에로드하고 두 번째 메시지에 해당 변수를 할당하고이를 검증 할 수 있도록 글을 쓰는 메시지 할당 셰이프가 있습니다. 그런 다음 다른 표현식 모양을 가지고 첫 번째 메시지를 다시 작성하려고 시도하고 두 번째 메시지 정보로 대체되었습니다.

이것은 병렬 모양이 아니며 메시지 할당은 두 번째 메시지 만 작성합니다. 수신과이 문제를보고있는 곳 사이에서 몇 가지 모양 결정 및 수신 메시지에서 다른 메시지 작성 중입니다. 그들은 모두 잘 작동하고 아무것도 덮어 쓰지 않습니다. (나중에 수행하려는 것과 동일한 프로세스를 수행하십시오.)

누구나 전에 본적이 있거나보고 싶지 않은 것이 있습니까?

ETA는 :이 과정은 조금 다음과 같이 작동

Send Message comes in 
xmlDoc = Send Message 
xmlDoc.OuterXml is written to a table 
xmlDoc2 = "<root><xml></xml></root>" 
Second Message = xmlDoc2 
xmlDoc2.OuterXml is written to a table 
xmlDoc = Send Message <-- What should happen 
xmlDoc = Second Message <-- What is happening 
+0

"메일 쓰기"로 보내기 모양을 사용하여 "메시지 보내기"를 의미한다고 가정합니다. 이 경우 각각의 경우에 올바른 메시지를 효과적으로 발송하는지 여부를 확인할 수 있습니다. 설명에 따르면 두 번째 메시지와 연결된 첫 번째 보내기 모양과 원래 메시지와 연결된 두 번째 보내기 모양이 있어야합니다. 그런 경우입니까? –

+0

"write out"을 사용하여 XML에서 메시지를 가져 와서 로그 테이블에 작성하여 올바른 정보를 포함하고 있는지 확인합니다. – Stephanie

답변

0

나는 당신의 정확한 문제를 재현 할 수도 있지만 사랑 받고 있습니다. 귀하의 프로세스 개요에는 실제 상황을 이해하는 것이 중요하다는 암묵적인 진술이 있다고 생각합니다. 어떤 경우 든 BizTalk 메시지를 덮어 쓰지는 않지만 XmlDocument 변수가 있다고 생각합니다.

C#으로 작업 할 때 one of the fundamental confusions Java 또는 VB6 백그라운드에서 발생하는 개발자가 발생했다고 생각합니다.

C#을 관리되는 언어

에게, 그것은 개체에 사용되지 않는 참조를 확보하기 위해 가비지 컬렉터를 사용한다는 점에서 그 C 번호는 관리되는 언어입니다 기억하십시오. 여기에 핵심 단어는 입니다. 참조입니다. 다음과 같은 라인을 쓸 때

: 기본적으로

xmlDoc2 = "<root><xml/></root>"; 
SecondMessage = xmlDoc2; 

을, 당신은 동일한 콘텐츠에 두 개의 참조가 있습니다. 즉, 두 개의 참조 xmlDoc2SecondMessage은 지정된 문자열을 참조합니다.

따라서 BizTalk 메시지의 XML 콘텐츠를 "쓰는"코드에 따라 일부 참조를 덮어 쓸 수 있습니다.

또한 Construct 셰이프의 컨텍스트에서 이런 일이 발생하면 실수로 BizTalk 메시지 자체의 내용을 덮어 쓸 수 있습니다.

해결책?

이 문제는 일반적으로 BizTalk 작업시 나타나지 않습니다. 개인적으로이 문제가 발생하지 않았습니다.

원래 질문을 Expression 셰이프와 Assignment 셰이프의 정확한 코드로 업데이트하면보다 적절한 지침에 따라이 응답을 업데이트 할 것입니다.