2017-05-10 14 views
1

Microsoft는 BizTalk 파이프 라인 인터페이스에서 아래와 같이 Validate 구성 요소를 제공합니다.BizTalk 파이프 라인 구성 요소의 PropertyBag 값 확인

는 여기에 내가 시도하고, 전혀 작동하지 않았다 무엇 :

public System.Collections.IEnumerator Validate(object projectSystem) 
    { 
     System.Collections.ArrayList errorStringArrayList = new System.Collections.ArrayList(); 
     if (this.Substring1ColumnStart >= this.Substring1ColumnEnd) 
     { 
      errorStringArrayList.Add("Substring1ColumnEnd must be > SubstringColumn1Start"); 
     } 
     return (System.Collections.IEnumerator) errorStringArrayList; 
    } 

이 문서는 https://msdn.microsoft.com/en-us/library/microsoft.biztalk.component.interop.icomponentui.validate.aspx?f=255&MSPPError=-2147217396

는 "이러한 오류 메시지가 컴파일러 오류 메시지로 표시했다. 성공적인 속성 유효성 검사를보고하려면이 메서드는 빈 열거자를 반환해야합니다. "

.

하지만 잘못된 값을 입력하면 컴파일러 메시지가 표시되지 않습니다. 또한 BTS-Admin에서 "컴파일러 메시지"가없는 경우에도 유효성 검사를 수행하지 않을까요 ???

또한 왜 유효성 검증은 강력한 유형의 매개 변수 대신 일반 오브젝트를 parm으로 수신합니까? 그리고 validate는 언제 호출됩니까? propertyBag 값이 변경 될 때마다? 11:55 오전 CT에서

업데이트 2017년 5월 11일는

열심히이 여기에 모두 나열하려면 몇 가지 더 일을 시도했다. 마침내 오류가 발생했지만 VS 컴파일 오류에서 매우 유용하지는 않습니다. 아래 스크린 샷을 참조하십시오. 확실히 내가 돌아온 오류는 아닙니다. VS2015에 문제가있을 수 있습니다.

enter image description here

나는 또한 내 데이터를 고정 된 문제에있어, 여전히 오류가 발생했습니다. Pipeline Componetet이 GAC되어 있기 때문에 매번 Visual Studio를 닫고 다시 열어 새로운 복사본이 있는지 확인했습니다.

null이 아닌 다른 것을 반환하는 것이 문제 일 수 있다고 생각했습니다. 요약하면 BTS-ADMIN에서 작동하지 않으면이 기능이 실제로 쓸모없는 것으로 나타났습니다. 그래서 나는 단지 런타임 오류를 수행 할 것입니다. 아마 그런 이유로이 작은 문서 및이 기사에 몇몇 기사 또는 블로그가있다.

public System.Collections.IEnumerator Validate(object projectSystem) 
{ 

    System.Collections.ArrayList errorStringArrayList = new System.Collections.ArrayList(); 
    if (this.Substring1ColumnStart >= this.Substring1ColumnEnd) 
    { 
     errorStringArrayList.Add("Substring1ColumnEnd must be > SubstringColumn1Start"); 
    } 

    if (errorStringArrayList.Count > 0) 
    { 
     return (System.Collections.IEnumerator)errorStringArrayList; 
    } 
    else 
    { 
     return null; 
    } 
} 
+0

이미 MSDN에서이 질문에 답변했습니다. https://social.msdn.microsoft.com/Forums/en-US/05cdf0ec-6e66-41c1-9faf-8f4ef6bb67f6/how-to-validate-value-in- the-propertybag-from-a-pipeline-component 포럼 = biztalkgeneral –

답변

2

이 유효성 검사 메서드는 파이프 라인 디자인 모드에서만 호출됩니다. BTS Admin에서는 호출되지 않습니다. 그리고 "코드"에 잘못된 값을 설정 한 경우. 이 메소드도 호출되지 않습니다.

+0

감사합니다. 어쨌든 BTSAdmin에서 유효성을 검사 할 수 있습니까? 어떤 다른 방법, 아니면 그냥 가능하지 않니? – NealWalters

+0

그리고 columnEnd 인 NealWalters

+0

코드 구현 방법을 잘 모르지만 유효성 검사 방법 작동 방식의 예입니다. 프로젝트에서 송신 파이프 라인을 만드는 경우 XML 어셈블러를 어셈블 단계로 끌어옵니다. 그런 다음 "Add PI text"속성 필드에서 "<>"와 같은 잘못된 텍스트를 입력한다고 가정 해 봅시다. 컴파일하려고하면 다음과 같은 오류가 발생합니다. 오류 BTP0007 : 'XML 어셈블러'구성 요소 유효성 검사에 실패했습니다. 처리 명령 텍스트 속성은 XML 표준을 준수해야합니다. – Zee

0
검증은 빌드시에 아마도 모든 재산권 후 비주얼 스튜디오에 의해 호출

MSDN

에서

같은 대답 [메모리에서,하지만이 어떻게 작동하는지입니다 93 % 확신 ...] 할당.

0이 아닌 컬렉션이 반환되고 디자인 화면의 구성 요소에 빨간색 윤곽선이 있으면 프로젝트가 빌드되지 않습니다.

IIRC를 사용하면 속성 값의 유효성을 직접 확인하기 만하면됩니다. IPropertyBag.Write가 이미 호출되었으며 속성을 설정해야합니다.

기본적으로 (MyComponent.MySpecialValue! = "B") {ErrorStringArray.Add ("Oh no!"); }

+0

MSDN에서보고 했으므로 작동하지 않았습니다. 위의 코드는 실제로 시도한 코드이므로이 응답은 실제로 도움이되었습니다. – NealWalters

+0

@NalWalters 나는 downvote의 이유를 이해하지 않습니다. 난 그냥 테스트하고 내 대답은 100 % 올바른 빌드 오류로 계산 ArrayList의 내용입니다. 그래서, 더 이상 신경 쓰지 않을 것입니다. 사과. –

+0

전체 유효성 검사 루틴을 게시하는 경우 일 수 있습니다. 내가 말했듯이, 그것은 나를 위해 작동하지 않았다. 나는 원래 테스트 한 정확한 코드로 전체 루틴을 게시했습니다. 그러나 결론은 Zee가 아래에보고 한 BTS-ADMIN에서이 유효성 검사가 작동하지 않는다면 추구할만한 가치가 없다고 생각합니다. Visual Studio에서 작동하는지는 상관하지 않지만 BTS-Admin에서는 작동하지 않습니다. – NealWalters