사용자 정의 ESQL 함수를 사용하여 메시지 플로우 개발

시작하기 전에
이 단계는 단순 메시지 강화를 수행하기 위한 시나리오의 아홉 번째 단계입니다. 이 주제에서는 사용자 정의 ESQL 함수를 사용하여 메시지 플로우를 개발하는 방법에 대해 설명합니다. 해당 메시지 모델 및 인스턴스 문서 개발에도 관련됩니다.
  1. COMPLEX 메시지 정의의 www.complex.net 네임스페이스에서 다음과 같은 구조의 addev5in 및 addev5out 메시지를 작성하십시오.
    addev5in
       value1                    (xsd:decimal) local element
       operator                 (xsd:string) local element
       value2                    (xsd:decimal) local element
       rate                        (xsd:decimal) local element
    addev5out
       grossvalue               (xsd:decimal) local element
       netvalue                   (xsd:decimal) local element
  2. MQInput > Mapping > MQOutput 맵핑을 포함하는 addev5 메시지 플로우를 작성하십시오.
  3. 맵을 열고 addev5in을 소스로, addev5out을 대상으로 선택하십시오.
  4. MAPPING3_COMPLEX_flows 프로젝트에서 addev5라는 ESQL 파일을 작성하고 여기에 다음 함수를 넣으십시오.
    CREATE FUNCTION calcGrossvalue(IN value1 DECIMAL, IN operator CHAR,
     IN value2 DECIMAL) RETURNS DECIMAL
              BEGIN
                  DECLARE outval DECIMAL;
                  CASE operator
                  WHEN 'PLUS' THEN
                      SET outval = value1 + value2;
                  WHEN 'MINUS' THEN
                      SET outval = value1 - value2;
                  WHEN 'MULTIPLY' THEN
                      SET outval = value1 * value2;
                  WHEN 'DIVIDE' THEN
                      SET outval = value1 / value2;
                  ELSE
                      THROW USER EXCEPTION MESSAGE 2949 VALUES('Invalid Operator', operator);
                      SET outval = -999999;
                  END CASE;
                RETURN outval;
               END;
    CREATE FUNCTION calcNetvalue(IN value1 DECIMAL, IN operator CHAR, IN value2 DECIMAL,
     IN rate DECIMAL) RETURNS DECIMAL
        BEGIN
            DECLARE grossvalue DECIMAL;
            SET grossvalue=calcGrossvalue(value1, operator, value2);
            RETURN (grossvalue * rate );
         END;
  5. 메시지 맵핑 편집기 스프레드시트 분할창에서 메시지를 펼치고 grossvalue를 선택하십시오.
  6. 표현식 분할창에서 다음 표현식을 입력하십시오.
    esql:calcGrossvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2)
  7. 대상 최종값을 선택하고 표현식 분할창에서 다음 표현식을 입력하십시오.
    esql:calcNetvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2, 
    $source/comp:addev5in/rate)
  8. 등록 정보 트리를 펼치과 다음 값을 설정하십시오.
    MessageType      |       'addev5out'
  9. 적절한 RFH2 헤더를 사용하여 다음 인스턴스 메시지를 작성하십시오.
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>125.32</value1>
    <operator>PLUS</operator>
    <value2>25.86</value2>
    <rate>0.60</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>118.00</value1>
    <operator>MINUS</operator>
    <value2>245.01</value2>
    <rate>0.30</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>254.02</value1>
    <operator>MULTIPLY</operator>
    <value2>3.21</value2>
    <rate>0.75</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>1456.33</value1>
    <operator>DIVIDE</operator>
    <value2>18.58</value2>
    <rate>0.92</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>254.02</value1>
    <operator>MOD</operator>
    <value2>3.21</value2>
    <rate>0.75</rate>
    </comp:addev5in>
다음과 같은 자원을 작성했습니다.
이제 메시지 세트 및 메시지 플로우를 전개하십시오.

메시지 세트 및 메시지 플로우 전개

이 단계는 단순 메시지 강화를 수행하기 위한 시나리오의 열 번째 단계입니다. 이 주제에서는 메시지 세트 및 메시지 플로우를 전개하고 브로커를 통해 인스턴스 메시지를 실행하는 방법에 대해 설명합니다.
  1. BAR 파일 addev5를 작성하십시오.
  2. MAPPING3_COMPLEX_messages 메시지 세트 및 addev5 메시지 플로우를 BAR 파일에 추가하십시오.
  3. 브로커에 BAR 파일을 전개하십시오.
  4. 인스턴스 문서를 입력 큐에 넣으십시오.
출력 메시지는 다음과 같습니다.
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>151.18</grossvalue>
<netvalue>90.708</netvalue>
</comp:addev5out>
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>-127.01</grossvalue>
<netvalue>-38.103</netvalue>
</comp:addev5out>
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>815.4042</grossvalue>
<netvalue>611.55315</netvalue>
</comp:addev5out>
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>78.38159311087190527448869752421959</grossvalue>
<netvalue>72.11106566200215285252960172228202</netvalue>
</comp:addev5out>
메시지 출력이 없는 경우 이벤트 로그에서 다음과 같은 입력 항목을 찾으십시오.
BIP2949 ( BRK.default ) A user generated ESQL exception has been thrown. The additional information provided with this exception is: ''Invalid Operator'' ''MOD'' 'addev5.Mapping.ComIbmCompute' '%5' '%6' '%7' '%8' '%9' '%10' '%11' 
이 예외는 THROW EXCEPTION 문에 의해 발생하였습니다. 이는 THROW문의 정상적인 작동입니다. 이 예외는 사용자 생성 예외이므로 메시지 플로우 및 발생한 예외 유형으로 사용자 조치를 판별합니다.
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ar25251_9_