메시지 맵핑 이주 제한사항

.mfmap 파일 이주가 지원되지 않는 일부 시나리오가 있습니다. 이 주제에서는 이런 상황에서 이주가 자동으로 이루어지지 않는 이유를 설명하고 이주를 완료하는 방법에 대한 지시사항을 제공합니다.

버전 5.0(파일 형식: .mfmap)와 버전 6.0(파일 형식: .msgmap)은 메시지 맵 프로그래밍 모델이 상이합니다. 버전 5.0 메시지 맵에는 본질적으로 대체 ESQL인 절차상의 프로그래밍 모델이 있는데, 사용자는 변환을 수행하는 데 필요한 모든 단계를 여기서 설명합니다. 버전 6.0은 선언적 프로그래밍 모델을 사용하는데, 사용자는 여기서 변환의 결과를 설명하며 도구가 해당 결과를 얻는 방법을 판별합니다.

대부분의 이주 실패는 변환을 수행하는 단계에 대한 정보는 너무 많이 포함되어 있고 원하는 결과에 대한 정보는 부족한 메시지 맵으로 인해 발생합니다. 이런 메시지 맵의 경우, 특정 "how to" 섹션을 메시지 맵이 호출할 수 있는 ESQL 함수나 프로시저로 분리할 수 있도록 .mfmap 파일을 변경하면 이주가 가능합니다. .mfmap 파일은 이를 표현식으로 포함하는 대신 ESQL을 호출합니다. 그러면 mqsimigratemfmaps 명령이 .mfmap 파일을 이주하지만 이주 오류를 로그 기록하는 대신 ESQL을 호출합니다.

제한사항은 ESQL(.mfmap 및 .msgmap 파일의 경우 런타임)이 복합(complex) 요소(또는 REFERENCE) 값을 리턴하는 함수를 정의할 수 없다는 것입니다. 다음 프로시저는 이 복합(complex) 요소 대상 제한사항을 일시적으로 해결하는 방법을 설명하며, 대부분의 경우에 이는 맵을 ESQL로 다시 작성해야 함을 의미합니다. 맵에서 ESQL을 호출하는 방법에 대한 자세한 예와 정보는 도움말 > 샘플 갤러리 > Technology 샘플 > Message Brokers > 메시지 맵WebSphere Message Brokers 맵핑 샘플을 참조하십시오.

  1. .mfmap 파일에 대해 ESQL 함수를 정의할 수 있는지 여부를 판별하십시오.
    1. 대상 값이 복합(complex) 요소이거나 ESQL 용어로 REFERENCE인 경우, .msgmap 파일에서 개별 맵핑을 다시 작성해야 합니다. .mfmap 파일에서 맵핑을 삭제하고 4단계로 진행하십시오.
    2. 기타 모든 경우에는 함수(CHAR 문자열, 숫자, 날짜 및 시간)를 사용하십시오. 2단계로 진행하십시오.
  2. 소스 매개변수를 및 함수에 필요한 리턴 유형을 판별하십시오.
    1. 맵핑의 각 소스 경로마다 함수 또는 프로시저에 하나의 매개변수가 있어야 합니다. 함수의 경우, 모든 매개변수를 변경할 수 없습니다. 매개변수 유형은 소스 데이터 유형과 일치해야 합니다.
    2. 함수 리턴 유형은 위에서 식별한 ESQL 데이터 유형입니다.
  3. 이주가 가능하도록 .mfmap 파일을 갱신하십시오. .mfmap 파일을 변경하여 맵핑에서 함수를 호출하고 2a단계에 나열된 순서로 소스 매개변수를 함수로 전달하십시오.
  4. mqsimigratemfmaps 명령을 재실행하여 수정된 .mfmap 파일을 이주하십시오.
  5. 이주 로그에 오류가 없을 때까지 1 - 4단계를 반복하십시오.
  6. 버전 6.0 Message Brokers Toolkit을 시작한 후 이주된 .msgmap 파일을 여십시오.
    1. 함수로 이주된 ESQL의 경우, 오류가 없어야 합니다.
    2. 복합(complex) 요소 대상의 경우, 버전 6.0 기능을 사용하여 맵핑을 다시 작성하십시오.
다음 예는 .mfmap파일에서 .msgmap 파일로의 이주를 설명합니다.
  • 반복 소스 표현식에 대한 다중 참조 이주:
    src_msg.e[1] + src_msg.e[2]  
    다음과 같이 ESQL 함수에서 결과를 처리하십시오.
    CREATE FUNCTION addOneAndTwo(IN src_msg)
    BEGIN
    	RETURN src_msg.e[1] + src_msg.e[2]; 	
     END;  
    .msgmap 파일에서, src_msg 상위 요소를 매개변수로 사용하여 ESQL 함수 addOneAndTwo를 호출하십시오.

  • 요소 이름을 사용하지 않는 표현식:
    src_msg.* 
    또는
    src_msg.*[]  	
    를 반복 필드의 상위를 갖는 함수를 사용하여 처리할 수 있습니다.
    CREATE FUNCTION processAny(IN src_msg)  	
    BEGIN 		
    	DECLARE nodeRef REFERENCE TO src_msg.e.*; 		
    	DECLARE result <dataType> <initialValue>;
    	WHILE LASTMOVE nodeRef DO 			
    		--expression goes here 			
    		SET result = result; 		
    	END WHILE;
    	RETURN RESULT; 	
     END;  
    .msgmap 파일에서, src_msg 상위 요소를 매개변수로 사용하여 ESQL 함수를 호출하십시오.

  • 요소 이름을 동적으로 처리하는 표현식:
    src_msg.{'a' || 'b'}  
    를 반복 필드의 상위를 처리하는 ESQL 함수로 처리할 수 있습니다.
    CREATE FUNCTION processDynamicName(IN src_msg)  	
    BEGIN 		
    	RETURN src_msg.{'a' || 'b'}; 	
     END;  
    .msgmap 파일에서, src_msg 상위 요소를 매개변수로 사용하여 ESQL 함수를 호출하십시오.

  • select MIN, MAX 및 COUNT 함수를 사용하는 표현식:
    SELECT MAX("#T".FIRSTNAME)  		
    	FROM Database.CUSTOMER AS "#T"  		
    	WHERE "#T".CUSTOMERID = custId  
    를 반복 필드의 상위를 처리하는 ESQL 함수로 처리할 수 있습니다.
    CREATE FUNCTION processMAX(IN custId)  	
    BEGIN 		
    	RETURN  			
    	SELECT MAX("#T".FIRSTNAME) 				
    		FROM Database.CUSTOMER AS "#T" 				
    		WHERE "#T".CUSTOMERID = custId 	
     END;  
    .msgmap 파일에서, custId 요소를 매개변수로 사용하여 ESQL 함수를 호출하십시오.

  • 표현식에서 mfmap 색인 변수를 사용하는 .mfmap 파일:
    e || "#I"  
    를 ESQL로 완전히 다시 작성해야 합니다. 정의에 의해 복합 반복 상위 요소가 있어야 하며 이는 ESQL 함수에서는 지원되지 않습니다.

  • 소스 표현식을 사용하여 값을 처리하는 표현식
    src_msg.e[src_msg.a]  
    을 if 행, msgmap:occurrence() 함수, ESQL 함수를 사용하여 다시 작성해야 합니다.
    for src_msg.e 		
    	if 			
    		condition msgmap:occurrence(src_msg/e) = src_msg/a 

  • 색인 표현식을 사용하여 값을 처리하는 표현식:
    src_msg.e["#I" +5] 	
    src_msg.e[< 3]  
    .msgmap 파일이 반복 필드에 대한 색인화된 액세스를 아직 지원하지 않으므로 전체 .mfmap 파일을 ESQL로 다시 작성해야 합니다.

  • ROW 표현식을 사용하여 값을 처리하는 .mfmap 파일:
    src_msg.e IN (1, 2, 3)  
    을 ESQL로 다시 작성해야 합니다(.msgmap 파일이 ESQL ROW 표현식을 지원하지 않음).
관련 태스크
ESQL 개발
관련 참조
mqsimigratemfmaps 명령
버전 5.0에서 메시지 맵핑 이주
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ar25255_