EDI 유효성 검사, 스키마 및 메시지의 알려진 문제
이 항목은 알려진 유효성 검사 문제에 대해 설명합니다.
EDI 유효성 검사가 해제되어 메시지가 일시 중단됨
증상
쌍을 이룬 규칙을 위반하여 유효성 검사가 해제되었는데 메시지가 일시 중단되었습니다(예상된 결과는 메시지가 serialize되는 것임).
가능한 원인
EDI 속성 대화 상자의 유효성 검사 및 ACK 생성 설정 노드에서 EDI 형식 속성이 선택 취소된 경우에도 필드 간/세그먼트 유효성 검사가 수행됩니다. 유효성 검사는 스키마 주석에서 설정되어 있으므로 수행됩니다.
해결 방법
스키마 주석에서 유효성 검사를 해제합니다.
스키마를 편집하고 재배포한 후에는 BizTalk 서비스를 다시 시작해야 함
증상
스키마를 편집하고 재배포한 후 BizTalk Server가 유효한 메시지를 처리하지 않습니다.
가능한 원인
BizTalk Server 제한 시간 제한이 없는 스키마를 캐시합니다.
해결 방법
스키마를 편집하고 재배포한 후 BizTalk Server 응용 프로그램 서비스를 다시 시작합니다. 재배포된 스키마를 사용하는 파이프라인을 호스팅하는 호스트 인스턴스도 다시 시작해야 합니다.
단일 파티에 대한 단일 인코딩 유형 메시지 처리가 중단됨
증상
단일 파티에 대한 단일 인코딩 유형(예: X12 또는 EDIFACT)의 모든 메시지 처리가 중단되었습니다. 동일한 파티에 대한 다른 인코딩 유형 메시지 처리 또는 다른 파티에 대한 다른 메시지 처리는 영향을 받지 않습니다.
가능한 원인
교환, 그룹 또는 트랜잭션 집합 컨트롤 번호 길이가 허용 가능한 최대 길이를 초과했습니다.
X12 메시지의 경우 최대 컨트롤 번호 길이는 9자리입니다. EDIFACT 메시지의 경우 최대 컨트롤 번호 길이는 3개의 필드 전체에서 14자리입니다.
해결 방법
영향을 받는 파티에 대해 EDI 속성 대화 상자의 해당 속성 페이지에서 컨트롤 번호를 다시 설정합니다. 다음 속성 페이지에서 컨트롤 번호를 편집할 수 있습니다.
X12 교환 컨트롤 번호: ISA 세그먼트 정의 페이지(X12 속성의 파티(교환 받는 사람) 노드)
X12 그룹 또는 트랜잭션 집합 컨트롤 번호: GS 및 ST 세그먼트 정의 페이지(X12 속성의 파티(교환 받는 사람) 노드)
EDIFACT 교환 컨트롤 번호: UNB 세그먼트 정의 페이지(EDIFACT 속성의 파티(교환 받는 사람) 노드)
EDIFACT 그룹 또는 트랜잭션 집합 컨트롤 번호: UNG 및 UNH 세그먼트 정의 페이지(EDIFACT 속성의 파티(교환 받는 사람) 노드)
BizTalk Server가 7개의 데이터 요소를 포함한 UNH 세그먼트가 있는 스키마로 유효성을 검사함
이전 버전의 EDIFACT에서 UNH 세그먼트에는 UNH 세그먼트가 이후 버전에서 가지고 있는 7개 요소(그 중 3개는 선택 사항)가 아닌 4개의 요소가 있습니다. BizTalk Server 유효성 검사를 위해 7개의 요소와 함께 이후 버전을 사용합니다.
여러 개의 상호 필드 유효성 검사 규칙에 대해 생성된 오류 메시지가 특정 규칙에 한정적이지 않음
스키마에 메시지의 데이터 요소에 대한 여러 개의 상호 필드 유효성 검사 규칙이 포함된 경우, 해당 데이터 요소에 오류가 발생하면 각 유효성 검사 규칙에 대해 별도의 오류가 생성됩니다. 그러나 이러한 각 오류의 오류 코드와 설명은 같습니다. 즉, 오류가 특정 유효성 검사 규칙에 한정적이지 않습니다.
EDI 유형 유효성 검사가 수신 시 사용되지 않고 송신 시 사용되면 송신 파이프라인에서 메시지를 serialize할 수 없음
수신 측에서 EDI 유형 유효성 검사를 해제하면 EDI 수신 파이프라인이 수신된 EDI 메시지가 유효한지 여부에 상관없이 해당 메시지에서 XML 메시지를 생성합니다. EDI 유효성이 송신 측에서 사용되는 경우 XML 파일에 오류가 포함되어 있어 그 결과 오류가 발생하면 EDI 송신 파이프라인이 XML을 유효한 EDI 파일로 다시 처리할 수 없습니다.
응용 프로그램에 BizTalk EDI 응용 프로그램에 대한 참조가 있는 경우에만 EDI에서 승격된 속성을 사용할 수 있음
증상
EDI 네임스페이스에서 승격된 속성은 오케스트레이션, 송신 포트에 대한 필터 조건 등에서 사용할 승격된 속성 목록에 표시되지 않습니다.
가능한 원인
사용 중인 BizTalk 응용 프로그램에 BizTalk EDI 응용 프로그램에 대한 참조가 없습니다. EDI에서 승격된 속성에 대한 속성 스키마는 Microsoft.BizTalk.Edi.BaseArtifacts.dll에 있으며 이 파일은 BizTalk EDI 응용 프로그램의 Resources 폴더에 포함되어 있습니다.
해결 방법
작업 중인 BizTalk 응용 프로그램에 BizTalk EDI 응용 프로그램에 대한 참조를 추가합니다.
컨텍스트 속성 이름의 데이터 요소 이름에 마침표가 아니라 밑줄이 포함됨
EDI 세그먼트 내의 데이터 요소 이름에는 UNB2 보낸 사람 세그먼트의 ID 필드인 UNB2.1과 같이 마침표가 포함됩니다. 그러나 데이터 요소 이름이 EDI 컨텍스트 속성의 일부로 포함된 경우 마침표가 밑줄로 바뀝니다. 예를 들어 보낸 사람 ID 데이터 요소의 컨텍스트 속성은 EDI.UNB2.1이 아니라 EDI.UNB2_1입니다. 이는 컨텍스트 속성 이름에 마침표가 지원되지 않기 때문입니다.
부적절한 문자열이 인스턴스 유효성 검사 오류 메시지에 추가됨
인스턴스 유효성 검사 도중 오류가 수신될 때마다 오류 메시지에 "BEC 2004" 문자열이 추가됩니다. 이 문자열은 무시해도 됩니다.
EDIFACT 스키마 이름이 대/소문자를 구분함
스키마의 root_reference 데이터 요소에서처럼 EDIFACT 스키마의 스키마 이름이 대/소문자를 구분합니다. 예를 들어 EFACT_D98B_ORDERS와 EFACT_d98B_Orders는 두 개의 서로 다른 스키마입니다.
EDI 유형의 유효성 검사를 사용하지 않더라도 잘못된 EDI 메시지가 일시 중단될 수 있음
EDI 구조 유효성 검사는 EDI 유형 유효성 검사를 사용하지 않더라도 수행됩니다. EDI 유형 유효성 검사를 사용하지 않더라도 기본 구조 유효성 검사가 실패한 교환은 일시 중단됩니다.
봉투(Envelope) 헤더에 구분 기호 문자가 사용되더라도 EDI 어셈블러에서 일괄 처리되지 않는 교환을 serialize함
헤더 필드와 트레일러 필드를 구분하는 데 사용되는 구분 기호 문자는 파티에 대해 교환 받는 사람으로 정의한 교환, 그룹 또는 트랜잭션 집합 헤더 필드 또는 트레일러 필드 정의에 사용하면 안 됩니다. 구분 기호 문자가 사용되면 송신 BizTalk Server의 EDI 어셈블러 또는 수신 파티의 디스어셈블러에서 교환이 처리되지 않습니다. 교환이 아웃바운드 일괄 처리인 경우 EDI 어셈블러에서 교환이 실패합니다. 어셈블러가 헤더 컨트롤(서비스) 스키마에 대해 봉투(Envelope)의 유효성을 검사하기 때문입니다. 교환이 일괄 처리되지 않으면 EDI 어셈블러가 이를 serialize하지만 수신 파티에서 디스어셈블러 처리가 실패합니다.
일치하지 않는 문자 집합으로 인해 교환이 일시 중단됨
나가는 교환에 사용되는 문자 집합은 교환에 삽입되는 문자 집합을 만드는 데 사용되는 문자 집합과 동일해야 합니다. 그렇지 않으면 교환이 일시 중단되어 잘못된 문자가 있음을 나타내는 오류 메시지가 표시될 수 있습니다.
예를 들어 UNOA 문자 집합을 사용하는 EDIFACT 일괄 처리를 만드는 경우 일괄 처리에 추가된 트랜잭션 집합에 소문자가 포함되어 있으면 UNOA에서는 소문자가 허용되지 않으므로 일괄 처리 오케스트레이션은 메시지를 일시 중단합니다.
다른 예로 "기본" 문자 집합으로 X12 교환용 EDI 송신 파이프라인을 구성하는 경우, X12 교환 봉투(Envelope) 생성 페이지에서 파티(교환 보낸 사람)에 대해 선택한 X12 문자 집합이 "확장" 또는 "UTF8/유니코드"로 설정되어 있어 X12에서 일괄 처리된 교환에 소문자가 포함되어 있으면 봉투(Envelope) 설정이 적용될 때 일괄 처리된 메시지가 일시 중단됩니다.
스키마 확인을 위해 UNH2.5를 사용하려면 스키마를 업데이트해야 함
들어오는 EDIFACT 교환의 스키마 확인을 위해 UNH2.5(연결 할당 코드)를 사용하는 경우 \Program Files\Microsoft BizTalk Server 20xx\Schema 폴더에서 관련 문서 스키마를 업데이트해야 합니다. root_reference, display_reference 및 xs:element 이름에 대한 기존 값에 UNH2.5 값을 추가해야 합니다. 예를 들어 UNH2.5가 "EAN008"이고 EFACT_D96A_INVOIC 스키마를 사용 중인 경우 root_reference, display_reference 및 xs:element 이름을 "EFACT_D96A_INVOIC_EAN008"로 설정합니다.
업그레이드가 수행될 때 압축된 스키마 파일이 교체됨
Microsoft BizTalk Server 이후 빌드로 업그레이드하면 설치의 MicrosoftEdiXSDTemplates.exe 파일이 업그레이드와 연결된 MicrosoftEdiXSDTemplates.exe 파일로 대체됩니다. 이전 압축 파일의 스키마를 계속 사용하려는 경우 이전 압축 파일을 백업하지 않으면 업그레이드 후에 압축 파일에 더 이상 액세스할 수 없습니다.
한 그룹에 여러 X12 트랜잭션 집합이 포함되는 경우 모두 유형이 동일해야 함
BizTalk Server 동일한 그룹 내에서 서로 다른 트랜잭션 집합을 혼합하는 것을 지원하지 않습니다. 한 그룹에 여러 트랜잭션이 포함되어 있으면 ST01 값이 모든 트랜잭션에 대해 동일해야 합니다.
ASCII가 아닌 구분 기호가 포함된 X12 교환을 수신하면 메시지가 일시 중단될 수 있음
증상
ASCII가 아닌 구분 기호 값을 사용하는 X12 교환을 수신할 때 메시지가 일시 중단되고 오류가 응용 프로그램 이벤트 로그에 기록될 수 있습니다.
가능한 원인
이 문제는 교환이 UTF-8로 인코딩되지 않은 경우 발생할 수 있습니다.
해결 방법
ASCII가 아닌 구분 문자를 포함한 들어오는 X12 교환이 UTF-8로 인코딩되었는지 확인합니다.