중개 기본요소 플러그인 제공

사용자 자신의 중개 기본요소를 개발하고 해당 기본요소를 중개 플로우 편집기 팔레트에 제공할 수 있습니다. 그런 다음 통합 개발자는 제공된 중개 기본요소(예: 메시지 필터)를 사용하는 것과 같은 방식으로 이 중개 기본요소를 사용할 수 있습니다.

다음 주제에서는 사용자의 중개 기본요소 개발, 중개 플로우 편집기 팔레트에 기본요소 제공 및 기본요소 배치를 위해 실행해야 하는 조치에 대해 설명합니다. 그런 다음 예제를 사용하여 필요한 단계를 표시하고 참조 문서에 링크를 제공합니다.

참고: 다음 단계는 앞으로의 릴리스에서 변경될 수 있으며 앞으로의 릴리스에 대한 제공을 재사용하는 데 노력이 필요할 수도 있습니다.

플러그인 작성

다음 정의를 가진 Eclipse 플러그인 개발 환경(PDE)에서 사용자의 기본요소에 해당하는 플러그인을 작성하십시오.
  1. 플러그인 프로젝트 작성
  2. plugin.xml로 다음 확장자를 작성하십시오.
    • com.ibm.wbit.sib.mediation.primitives.registry.mediationPrimitiveHandlers - 사용자 기본요소의 터미널을 정의하고 기본요소의 특성이 정의된 특성 파일 및 "중개 메타데이터 생성"을 주제로 생성될 .mednode 파일을 식별합니다..
    • com.ibm.wbit.sib.mediation.primitives.registry.mediationPrimitiveUIContribution - medationPrimitiveHandler를 빌드하고 정보를 추가하여 중개 플로우 편집기 팔레트에 medationPrimitiveHandler를 제공합니다.
    참고®:
    • mediationPrimitiveUIContribution이 medationPrimitiveHandler와 연관될 수 있도록 하려면 medationPrimitiveHandler와 mediationPrimitiveUIContribution의 typeName 및 typeNamespace가 동일해야 합니다.
    • typeNamespace는 mednode://mednodes로 시작하여 FileName.mednode로 끝납니다. 이 이름을 가진 파일은 중개 메타데이터 생성 시 작성됩니다.
  3. 특성 그룹 XML 파일을 작성하여 XML 파일에 중개 기본요소의 특성을 정의하십시오. 참조를 위해 이 파일의 스키마는 이 문서 맨 아래 참조 섹션에 첨부됩니다.

중개 메타데이터 생성

중개 메타데이터 생성 보기를 사용하여 중개 기본요소용 중개 메타데이터(.mednode 파일)를 생성하십시오. .mednode 파일에는 mediationPrimitiveHandlers의 런타임 표시가 있으며, 이 파일은 3단계에서 작성하는 Java™ 프로젝트의 루트에 위치해야 합니다.

작성자 Java 코드

Java 프로젝트를 작성하고 코드를 기록하여 사용자 중개 기본요소를 구현하십시오.

  1. Java 프로젝트 작성
  2. 라이브러리 WebSphere® ESB Server v6.0을 프로젝트 빌드 경로에 추가하십시오.
  3. 플러그인 프로젝트에서 Java 프로젝트의 루트로 .mednode 파일을 복사하십시오.
  4. com.ibm.wsspi.sibx.mediation.esb.ESBMediationPrimitive를 확장하는 Java 클래스를 작성하고 특성 그룹 파일에 정의된 각 특성의 Getter 및 Setter 메소드를 정의하십시오.

    참고: Getter 및 Setter 메소드 이름은 특성 이름과 일치해야 합니다. 예를 들어, 특성 이름이 값이면 Getter 및 Setter 메소드는 getValue() 및 setValue()로 명명되어야 합니다.

  5. 상속된 mediate() 메소드로 중개 기본요소의 Java 구현 코드를 기록하십시오. 중개 메소드는 InputTerminal 및 DataObject를 사용합니다. 다중 입력 터미널이 있는 경우에만 InputTerminal을 사용하십시오. DataObject는 사용자 메시지입니다. DataObject 인터페이스에서 Getter 및 Setter를 사용하여 XPath 식을 통해 식별된 메시지의 값을 읽고 쓸 수 있습니다. DataObject는 서비스 데이터 오브젝트(SDO) 새 표준 파트입니다. 이 메시지 매개변수는 서비스 메시지 오브젝트 API의 파트인 com.ibm.websphere.sibx.smobo 패키지의 ServiceMessageObject에 캐스트될 수 있습니다. 해당 인터페이스는 본문, 컨텍스트 및 헤더 등의 서비스 메시지 오브젝트의 개별 섹션에 액세스하는 데 유용합니다. 다음 예제는 서비스 데이터 오브젝트 및 서비스 메시지 오브젝트 API로의 링크를 위해 이 문서 맨 아래에 있는 출력 터미널 .DataObject 참조 보기 섹션에 메시지를 발생시키는 방법을 표시합니다.

플러그인 배치

중개 기본요소가 중개 플로우 편집기 팔레트에 표시되도록 플러그인을 배치하십시오.

  1. 플러그인 프로젝트를 위해 빌드 특성을 설정하십시오. 2진 빌드 특성에 mednode 및 propertygroup 폴더가 있는지를 확인하십시오.
  2. 기본요소 아이콘을 플러그인 프로젝트에 가져오십시오.
  3. 배치 가능한 플러그인 및 단편 옵션으로서의 플러그인 프로젝트를 디렉토리 WIDInstallDir\wstools\eclipse로 내보내십시오.
  4. WebSphere Integration Developer를 종료하십시오.
  5. –정리 옵션을 사용하여 WebSphere Integration Developer를 다시 시작하십시오.
  6. 중개 플로우 편집기에서 중개 플로우 컴포넌트를 여십시오. 기본요소 아이콘은 팔레트에 표시되어야 합니다.
  7. 기본요소 아이콘을 편집기의 캔버스에 끌어다 놓고 특성 보기에서 특성을 확인하십시오.

기본요소를 런타임에 배치

중개 기본요소를 WebSphere Enterprise Service Bus 또는 WebSphere Process Server 런타임에 배치하려면 다음을 실행하십시오.

  1. JAR(예: myPrimitives.jar)로 Java 프로젝트를 내보내십시오. 루트 폴더에서 .mednode만을 선택하되, 선택한 Java 클래스는 변경하지 마십시오.

    참고: .mednode 파일은 서브디렉토리가 아닌, 배치된 JAR의 루트에 있어야 합니다.

  2. WebSphere 런타임이 오른쪽 클래스 로더 범위에 있는 클래스에 액세스할 수 있는 디렉토리 WAS_HOME/lib/ext를 선택하십시오.

예제

플러그인 프로젝트 작성

  1. 창 > Perspective 열기 > 기타...에서 PDE Perspective를 열어 제공된 목록에서 플러그인 개발을 선택하십시오. PDE를 찾지 못하는 경우, 모두 표시 옵션을 선택하십시오.
  2. Create a plug-in project from 파일 > 새로 작성 > 플러그인 프로젝트.
  3. 프로젝트 이름으로 com.ibm.websphere.esb.mediation.example.contribution을 입력하십시오. 기본 옵션을 그대로 유지하고 다음을 클릭하십시오.
  4. Java 클래스를 생성하려면 옵션을 선택 취소하고 완료를 클릭하십시오.

plugin.xml 편집

플러그인 Manifest 편집기에서 plugin.xml을 열어 확장 페이지로 전환하십시오.

  1. 추가를 클릭하십시오. 새 확장 마법사에서 플러그인 목록을 보려면 필요한 플러그인에서 확장점만을 표시를 선택 취소하십시오.
  2. com.ibm.wbit.sib.mediation.primitives.registry.mediationPrimitiveHandlers를 선택하십시오. 완료를 클릭하십시오. 항목이 모든 확장 목록에 표시됩니다.
  3. com.ibm.wbit.sib.mediation.primitives.registry.mediationPrimitiveHandlers를 마우스 오른쪽 단추로 클릭한 다음 새로 작성 > medationPrimitiveHandler를 선택하십시오.
  4. medationPrimitiveHandler는 확장을 위해 추가됩니다.
  5. 아래와 같이 핸들러를 선택하고 해당 특성을 설정하십시오.



    참고: 이름공간은 mednode://mednodes로 시작되어야 합니다.
  6. 핸들러를 선택하여 짧거나 긴 해당 설명 및 터미널 카테고리를 추가하고 > 새로 작성...을 마우스 오른쪽 단추로 클릭하십시오.
  7. 짧은 설명을 선택하여 확장 페이지 맨 아래에서 본문 텍스트를 클릭하십시오. 기본요소에 대한 짧은 설명 입력 - "선택한 통화로 값 변환". 추가를 클릭하십시오. 이와 유사하게 긴 설명을 위해 텍스트 추가 - "기본요소는 입력 메시지 값을 미리 정의된 통화 목록에서 선택한 통화로 변환합니다."
  8. 각 터미널을 선택하고 오른쪽에 있는 세부사항 섹션에서 터미널 유형(예: 입력, 출력 및 실패)을 설정하십시오. 각 터미널 이름(예: 내부, 외부 및 실패)을 입력하십시오. 실패 터미널은 실패로 명명되어야 함을 참고하십시오.



  9. 다른 확장자 com.ibm.wbit.sib.mediation.primitives.registry.mediationPrimitiveUIContribution를 추가하십시오.
  10. com.ibm.wbit.sib.mediation.primitives.registry.mediationPrimitiveUIContribution을 마우스 오른쪽 단추로 클릭한 다음 새로 작성 > medationPrimitiveUIContribution을 선택하십시오.
  11. 아래와 같이 medationPrimitiveUIContribution의 특성을 설정하고 저장하십시오.

플러그인 프로젝트에 필수 폴더 작성

  1. 플러그인 프로젝트에서 아이콘이라는 이름의 폴더를 작성하여 사용자 아이콘을 해당 폴더에 추가하십시오. 작은 아이콘(16x16)은 팔레트에 표시됩니다. 큰 아이콘(32 x 32)은 캔버스에 표시됩니다.
  2. 플러그인 제공 프로젝트에서 propertygroups라는 이름의 폴더를 작성 후, 파일 > 새로 작성 > 기타 > XML. > XML로 이 폴더에 특성 그룹 XML 파일을 작성하십시오. 다음을 클릭하십시오.스크래치에서 XML 파일을 작성하기로 선택하십시오. 다음을 클릭하십시오.파일을 CurrencyConverterPropertyGroup.xml로 명명하고 완료를 클릭하십시오.

XML 파일에 특성 추가

CurrencyConverterPropertyGroup.xml에서 해당 새 기본요소의 특성을 설명하여 중개 플로우 편집기에서 특성 보기 상세 페이지의 UI를 유도할 수 있습니다. Java 클래스에는 각 특성에 해당하는 Getter 및 Setter 메소드가 있어야 합니다. 자세한 정보는 특성 XML 파일특성 그룹 스키마 정의 파일을(를) 참조하십시오.

다음 XML 코드를 입력하여 필수 특성을 CurrencyConverterPropertyGroup.xml에 추가하십시오.
<pg:BasePropertyGroups name="CacheReaderPropertyGroups" resourceBundle="ESBMediationExamples" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pg="http://www.ibm.com/propertygroup/6.0.1">
<propertyGroup name="CurrencyConverterPropertyGroup" xsi:type="pg:BasePropertyGroup" >
<!-- currency path using XPathProperty  -->
<property name="currencyPath" displayName="Currency Path" defaultValue="/body" required="true" propertyType="String" id="com.ibm.propertygroup.ext.ui.XPathProperty" xsi:type="pg:ConstraintSingleValuedProperty">
<description>
입력 통화 값의 XPath 식.
</description>
</property>
<!-- currency rate using Combo box -->
<property name="currencyRate" displayName="Currency" required="true" defaultValue="1.0" propertyType="float" xsi:type="pg:ConstraintSingleValuedProperty">
<description>
입력 통화 값을 변환하는 데 사용하는 비율.
</description>
<validValue value="1.0" displayValue="USD"/>
<validValue value="1.15091" displayValue="CAD"/>
<validValue value="0.836371" displayValue="EUR"/>
<validValue value="119.895" displayValue="JPY"/>
<validValue value="8.07560" displayValue="CNY"/>
</property>
</propertyGroup>
</pg:BasePropertyGroups>

메타데이터 생성

PDE에서 런타임 Workbench를 실행하십시오.
  1. 메뉴에서 실행 > 실행 도구 > 런타임 Workbench를 선택하십시오. 필요하면 런타임 Workbench를 선택하고 새로 작성을 클릭하여 새 구성을 작성하십시오. 기본값을 승인하십시오. 실행을 클릭하십시오.
  2. 실행된 새 IDE에서 창 > 보기 표시 > 기타 > 중개 개발 > 중개 메타데이터 생성을 클릭하십시오.
  3. 작성한 중개 기본요소가 이 문서에 표시되어 있습니다. 기본요소용 .mednode 파일을 생성하려면 해당 보기를 사용하십시오. 원하는 기본요소를 선택하여 생성을 클릭하십시오. 확인 상태는 .mednode 파일이 생성되었음을 표시합니다.
  4. CurrencyConverter.mednode라는 이름의 파일은 플러그인 프로젝트의 mednodes 폴더에서 작성됩니다. 이 파일을 보려면 사용자 보기를 새로 고쳐야 합니다.

작성자 Java 코드

  1. 파일 > 새로 고침 > 프로젝트 > Java 프로젝트를 통해 Java 프로젝트를 작성하십시오. 다음을 클릭하십시오.프로젝트 이름 com.ibm.websphere.esb.mediation.example.logic을 입력한 후 다음을 클릭하십시오.
  2. 라이브러리 페이지로 전환한 다음 라이브러리 추가를 클릭하십시오. WebSphere ESB Server v6.0을 선택한 후 다음을 클릭하십시오. WebSphere ESB Server의 클래스 경로를 구성하려면 옵션을 선택하십시오. 완료를 클릭하십시오.
  3. CurrencyConverter.mednode를 플러그인 프로젝트에서 Java 프로젝트의 루트로 복사하십시오.
  4. Java Perspective로 전환하십시오. Java 프로젝트를 선택한 다음 파일 > 새로 작성 > 클래스를 클릭하십시오. 패키지 이름으로 com.ibm.websphere.esb.mediation.example.logic을, 클래스 이름으로 CurrencyConverterMediation을 입력하십시오. 완료를 클릭하십시오. 다음 코드를 CurrencyConverterMediation으로 복사하십시오.
    package com.ibm.websphere.esb.mediation.example.logic;
    import com.ibm.wsspi.sibx.mediation.InputTerminal;
    import com.ibm.wsspi.sibx.mediation.MediationBusinessException;
    import com.ibm.wsspi.sibx.mediation.MediationConfigurationException;
    import com.ibm.wsspi.sibx.mediation.OutputTerminal;
    import com.ibm.wsspi.sibx.mediation.esb.ESBMediationPrimitive;
    import commonj.sdo.DataObject;
    /**
    * This mediation converts from one currency value to another currency value.
    */
    public class CurrencyConverterMediation extends ESBMediationPrimitive {
    private static final String OUTPUT_TERMINAL_NAME = "out";
    private String currencyPath;
    private float currencyRate;
    /**
    * Default constructor.
    */
    public CurrencyConverterMediation() {
    super();
    }
    /**
    * @return Returns the currencyPath.
    */
    public String getCurrencyPath() {
    return currencyPath;
    }
    /**
    * @param currencyPath
    * The currencyPath to set.
    */
    public void setCurrencyPath(String currencyPath) {
    this.currencyPath = currencyPath;
    }
    /**
    * @return Returns the currencyRate.
    */
    public float getCurrencyRate() {
    return currencyRate;
    }
    /**
    * @param currencyRate
    * The currencyRate to set.
    */
    public void setCurrencyRate(float currencyRate) {
    this.currencyRate = currencyRate;
    }
    /*
    * (non-Javadoc)
    *
    * @see com.ibm.wsspi.sibx.mediation.Mediation#mediate(com.ibm.wsspi.sibx.mediation.InputTerminal,
    * commonj.sdo.DataObject)
    */
    public void mediate(InputTerminal inputTerminal, DataObject message)
    throws MediationConfigurationException, MediationBusinessException {
    // retrieves the input currency value
    float inputCurrencyValue = message.getFloat(getCurrencyPath());
    // converts to the new currency value
    float newCurrencyValue = inputCurrencyValue * getCurrencyRate();
    // update the new currency value to the message
    message.setFloat(getCurrencyPath(), newCurrencyValue);
    // gets the out terminal from the mediation services
    OutputTerminal outTerminal = getMediationServices().getOutputTerminal(
    OUTPUT_TERMINAL_NAME);
    if (outTerminal != null) {
    // fires the message to the out terminal
    outTerminal.fire(message);
    }
    }
    }
플러그인 배치
  1. 빌드 특성 편집기에서 플러그인 프로젝트의 build.properties를 열고, mednodespropertygroups 폴더가 2진 빌드에서 선택되었는지를 확인하십시오.
  2. 배치 가능한 플러그인 및 단편으로서의 프로젝트를 내보내십시오. 디렉토리 구조로 내보내기를 선택하고 대상 디렉토리 WIDInstall\wstools\eclipse를 지정하십시오.
  3. 중개 플로우에서 기본요소를 테스트하려면, 해당 기본요소를 JAR로 WIDInstall\runtimes\bi-v6\lib\ext에 내보내어 Java 프로젝트를 UTE에 배치하십시오.
  4. WebSphere Integration Developer를 종료한 다음 -정리 옵션을 사용하여 테스트를 시작하십시오.
  5. 중개 플로우 편집기에서 중개 플로우 컴포넌트를 여십시오. CurrencyConverter 중개 기본요소 아이콘(CurrencyConverter 아이콘)은 팔레트에 표시되어야 합니다.
  6. 기본요소 아이콘을 편집기의 캔버스에 끌어다 놓고 특성 보기에서 특성을 확인하십시오. CurrencyConverter의
특성 보기

런타임에 배치

JAR(예: myPrimitives.jar)로 Java 프로젝트를 내보내십시오. 루트 폴더에서 .mednode만을 선택하되, 선택한 Java 클래스는 변경하지 마십시오. JAR를 WAS_HOME/lib/ext에 내보내십시오.

참조

다음 API에 대한 자세한 정보는 WebSphere Integration Developer 6.0.1 정보에서 참조 섹션을 확인하십시오.
  • 서비스 메시지 오브젝트(SMO) API
  • 중개 엔진 SPI
  • 중개 플로우 조치 SPI
  • 중개 컨텍스트 저장 SPI

서비스 데이터 오브젝트 API에 대한 정보는 http://download.eclipse.org/tools/emf/sdo/javadoc/을(를) 참조하십시오.

특성 XML 파일

중개 기본요소의 특성을 정의하려면 특성 정의 XML 파일을 작성해야 합니다. 이 XML 파일은 디렉토리 <Widinstall>\eclipse\plugins\com.ibm.propertygroup.ext.model/src/model에서 propertygroup.xsd로 정의된 스키마에 따라야합니다. 다음은 특성 정의 XML 파일을 작성하는 일반적인 단계입니다.
  1. propertyGroups 정의:
    각 특성 정의 XML 파일에는 일련의 0개 이상의 propertyGroup 요소를 포함한 오직 하나의 propertyGroups 요소가 있어야 합니다.
    <pg:BasePropertyGroups name="myGroups" resourceBundle="mypacakage.myProperties">
    표 1. propertyGroups의 속성
    속성 설명
    이름 특성 그룹 이름. 이 이름은 중개 플로우 편집기에서 표시되지 않습니다.
    resourceBundle 자원 번들은 문자열 값을 해석하는 데 로드됩니다. 이는 글로벌화를 위해 사용됩니다.
  2. propertyGroups 요소 정의
    각 propertyGroup 요소는 특성 보기 세부사항 페이지에서 가로 탭 페이지로 표시됩니다. 각 propertyGroup에는 다중 특성이 있을 수 있습니다. 특성은 표준 특성 또는 사용자 정의 특성일 수 있습니다.
    <propertyGroup name="myGroup" xsi:type="pg:BasePropertyGroup">
    표 2. propertyGroup 속성
    속성 설명
    이름 특성 그룹 이름. 둘 이상의 propertyGroup이 있는 경우, 각 propertyGroup 요소는 세부사항 페이지에서 탭 페이지로 렌더링됩니다. 이름 속성은 탭 페이지의 이름이 됩니다.
  3. 단순 표준 특성 정의
    다음 표준 특성은 propertygroups 스키마 정의에 미리 정의되어 있습니다. 양쪽 특성에는 동일한 속성이 있습니다.
    표 3. 표준 특성 및 해당 특성의 속성
    특성 속성 설명
    1. ConstraintSingleValuedProperty - 여러 가지 사용자 입력 유효성 검증 규칙이 있는 단일값 특성
    2. ConstraintMultiValuedProperty - 다중값 특성. 모든 값은 동일한 유형을 공유합니다.
    name / displayName 이름은 특성의 ID입니다. DisplayName은 특성 입력 제어에 우선하는 레이블로 사용됩니다.
    설명 도구 팁 텍스트로 표시
    propertyType 값 유형(문자열 / 부울 / float / 정수) 정의
    defaultValue 특성의 기본값
    숨겨짐 특성이 숨겨져 있는지 또는 표시되는지의 여부를 정의
    readOnly 특성이 읽기 전용인지의 여부를 정의
    필수 특성에 값이 필요함을 표시
    구분 값 유형이 문자열이면 이 속성은 해당 문자열이 대소문자 구분인지의 여부를 결정
    validValuesEditable 사용자가 validValues로 정의된 값과 다른 값을 입력할 수 있는지의 여부를 정의
    validValues 올바른 값 목록
    패턴 값 유형이 문자열이면 편집기는 패턴을 일치시켜 사용자 입력의 유효성을 검증
    maxLength 값 유형이 문자열이면 편집기는 입력할 수 있는 크기를 제한
    minValue / maxValue 값 유형이 정수 또는 float면 편집기는 입력 범위 확인을 실행합니다.
    validValueGeneratorClass 올바른 값을 동적으로 생성하는 데 책임이 있는 클래스 위치.. 클래스는 interface com.ibm.propertygroup.ext.api .IValidValuesGenerator를 구현해야 함
  4. 테이블 특성 정의
    각 테이블 특성은 다중 열로 구성될 수 있으며 단일값 특성(예: ConstraintSingleValuedProperty)입니다.
    <property name="filters" displayName="% displayname" xsi:type="pg:TableProperty">
    <column name="pattern" required="true" .../>
    <column name="terminalName" required="true" .../>
    </property>
  5. 사용자 정의 특성 정의
    The implementation class must implement com.ibm.propertygroup.ext.ICustomProperty
    <property name="myCustomProperty" class=â€MyCustomImpl†xsi:type="pg:CustomProperty">
  6. 특성에 규정자 추가
    위에 설명한 특성 모델은 모든 UI 렌더링 메커니즘 또는 처리 하부구조에 중립입니다. 그러나 어떤 시나리오에는 몇몇 UI 또는 런타임 종속자 정보가 제공되어야 합니다. 예를 들어, 테이블 특성에 필요한 테이블 레이아웃을 정의하려 할 수도 있습니다. 또는 특정 특성 처리 시 특수 핸들링 실행을 위해 런타임을 지시하려 할 수도 있습니다. 규정자는 이러한 목적을 수행하기 위해 소개됩니다. 규정자가 UI 및 런타임에 유효한 경우, 필요한 만큼 많은 규정자를 특성에 첨부할 수 있습니다. 예를 들어, TableLayoutQualifier를 TableProperty에 첨부할 수 있습니다.
    <property name="filters" xsi:type="pg:TableProperty">
    <qualifier preferredHeight="100" xsi:type="pg:TableLayoutQualifier">
    <column name="pattern" preferredWidth="100" xsi:type="pg:TableColumnQualifier"/>
    <column name="terminalName" preferredWidth="200" xsi:type="pg:TableColumnQualifier"/>
    </qualifier>
    ...
    </property>

특성 그룹 스키마 정의 파일

아래 표시된 propertygroup.xsd로 명명된 특성 그룹 스키마 정의 파일은 디렉토리 Widinstall\eclipse\plugins\com.ibm.propertygroup.ext.model/src/model에 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:propertygroup="http://www.ibm.com/propertygroup/6.0.1" targetNamespace="http://www.ibm.com/propertygroup/6.0.1">
<element name="propertyGroups" type="propertygroup:BasePropertyGroups"/>
<element name="description" type="string"/>
<complexType name="PersistentFormatter">
</complexType>
<complexType name="StringFormatter">
<complexContent>
<extension base="propertygroup:PersistentFormatter">
<attribute name="escapeCharacter" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="StringListFormatter">
<complexContent>
<extension base="propertygroup:StringFormatter">
<attribute name="separator" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="StringTableFormatter">
<complexContent>
<extension base="propertygroup:StringFormatter">
<attribute name="rowSeparator" type="token" use="optional"/>
<attribute name="columnSeparator" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="Qualifier">
</complexType>
<complexType name="TableColumnQualifier">
<complexContent>
<extension base="propertygroup:Qualifier">
<attribute name="name" type="token" use="required"/>
<attribute name="preferredWidth" type="token" use="required"/>
</extension>
</complexContent>
</complexType>
<complexType name="TableLayoutQualifier">
<complexContent>
<extension base="propertygroup:Qualifier">
<choice>
<element maxOccurs="unbounded" minOccurs="0" name="column" type="propertygroup:TableColumnQualifier"/>
</choice>
<attribute name="preferredHeight" type="token" use="required"/>
</extension>
</complexContent>
</complexType>
<complexType name="PropertyClassificationQualifier">
<complexContent>
<extension base="propertygroup:Qualifier">
<attribute name="name" type="token" use="required"/>
</extension>
</complexContent>
</complexType>
<complexType name="PropertyDescriptor">
<choice>
<element ref="propertygroup:description" minOccurs="0"/>
<element name="persistentFormatter" type="propertygroup:PersistentFormatter" minOccurs="0"/>
<element maxOccurs="unbounded" minOccurs="0" name="qualifier" type="propertygroup:Qualifier"/>
</choice>
<attribute name="id" type="token" use="optional"/>
<attribute name="name" type="token" use="required"/>
<attribute name="displayName" type="token" use="optional"/>
</complexType>
<complexType name="BasePropertyDescriptor">
<complexContent>
<extension base="propertygroup:PropertyDescriptor">
</extension>
</complexContent>
</complexType>
<complexType name="BaseProperty">
<complexContent>
<extension base="propertygroup:BasePropertyDescriptor">
<attribute name="validationMessage" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="BaseNodeProperty">
<complexContent>
<extension base="propertygroup:BaseProperty">
<sequence>
<element maxOccurs="0" minOccurs="0" name="children" type="propertygroup:BaseNodeProperty"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ValidValue">
<sequence>
<element ref="propertygroup:description" minOccurs="0"/>
</sequence>
<attribute name="displayValue" type="token" use="optional"/>
<attribute name="value" type="token" use="required"/>
</complexType>
<complexType name="BaseSingleTypedProperty">
<complexContent>
<extension base="propertygroup:BaseProperty">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="validValue" type="propertygroup:ValidValue"/>
</sequence>
<attribute name="defaultValue" type="token" use="optional"/>
<attribute name="propertyType" type="token" use="required"/>
<attribute name="expert" type="boolean" use="optional"/>
<attribute name="hidden" type="boolean" use="optional"/>
<attribute name="readOnly" type="boolean" use="optional"/>
<attribute name="required" type="boolean" use="optional"/>
<attribute name="sensitive" type="boolean" use="optional"/>
<attribute name="validValuesEditable" type="boolean" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="BaseMultiValuedProperty">
<complexContent>
<extension base="propertygroup:BaseSingleTypedProperty">
</extension>
</complexContent>
</complexType>
<complexType name="BaseBoundedMultiValuedProperty">
<complexContent>
<extension base="propertygroup:BaseMultiValuedProperty">
<attribute name="boundedSize" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="File">
<attribute name="extension" type="token" use="optional"/>
<attribute name="pattern" type="token" use="optional"/>
</complexType>
<complexType name="MultiFileProperty">
<complexContent>
<extension base="propertygroup:BaseMultiValuedProperty">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="fileExtension" type="propertygroup:File"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="MultiFolderProperty">
<complexContent>
<extension base="propertygroup:BaseMultiValuedProperty">
</extension>
</complexContent>
</complexType>
<complexType name="ConstraintMultiValuedProperty">
<complexContent>
<extension base="propertygroup:BaseBoundedMultiValuedProperty">
<attribute name="pattern" type="token" use="optional"/>
<attribute name="minValue" type="integer" use="optional"/>
<attribute name="maxValue" type="integer" use="optional"/>
<attribute name="maxLength" type="integer" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="BaseSingleValuedProperty">
<complexContent>
<extension base="propertygroup:BaseSingleTypedProperty">
</extension>
</complexContent>
</complexType>
<complexType name="FileProperty">
<complexContent>
<extension base="propertygroup:BaseSingleValuedProperty">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="fileExtension" type="propertygroup:File"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="FolderProperty">
<complexContent>
<extension base="propertygroup:BaseSingleValuedProperty">
</extension>
</complexContent>
</complexType>
<complexType name="ConstraintSingleValuedProperty">
<complexContent>
<extension base="propertygroup:BaseSingleValuedProperty">
<attribute name="pattern" type="token" use="optional"/>
<attribute name="minValue" type="integer" use="optional"/>
<attribute name="maxValue" type="integer" use="optional"/>
<attribute name="maxLength" type="integer" use="optional"/>
<attribute name="validValuesGeneratorClass" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="PropertyGroup">
<complexContent>
<extension base="propertygroup:BaseProperty">
</extension>
</complexContent>
</complexType>
<complexType name="BasePropertyGroup">
<complexContent>
<extension base="propertygroup:PropertyGroup">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="property" type="propertygroup:PropertyDescriptor"/>
<element maxOccurs="unbounded" minOccurs="0" name="customProperty" type="propertygroup:CustomProperty"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="CustomPropertyGroup">
<complexContent>
<extension base="propertygroup:PropertyGroup">
<attribute name="class" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="BasePropertyGroups">
<complexContent>
<extension base="propertygroup:BaseProperty">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="propertyGroup" type="propertygroup:PropertyGroup"/>
</sequence>
<attribute name="resourceBundle" type="token" use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType name="BaseTreeProperty">
<complexContent>
<extension base="propertygroup:BaseProperty">
</extension>
</complexContent>
</complexType>
<complexType name="TableProperty">
<complexContent>
<extension base="propertygroup:PropertyDescriptor">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="column" type="propertygroup:BaseSingleTypedProperty"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="TreeProperty">
<complexContent>
<extension base="propertygroup:PropertyDescriptor">
<sequence>
<element maxOccurs="1" minOccurs="0" name="root" type="propertygroup:BaseNodeProperty"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="CustomProperty">
<attribute name="class" type="token" use="required"/>
</complexType>
</schema>
관련 개념
중개 서비스 개요
중개 플로우 편집기
관련 태스크
중개 플로우 컴포넌트 작성
중개 플로우 편집기 열기
소스 및 대상 조작 연결
요청 및 응답 플로우 빌드
사용자 정의 중개 기본요소 구현
중개 모듈 테스트 및 디버깅

관련 정보

학습서: 중개 플로우 작성
샘플: 중개 플로우 편집기

피드백
(C) Copyright IBM Corporation 2005, 2006. All Rights Reserved.