외부 EIS(Enterprise Information System)에서 제공되는 데이터의 경우,
서비스 데이터 오브젝트를 지원되는 양방향 언어 형식으로 변환하고 WebSphere® ESB에서
외부 EIS로 보내는 데이터를 특정 EIS에서 사용되는 양방향 형식으로 변환하는 API를 작성할 수 있습니다.
시작하기 전에
양방향 언어 지원에 대한 자세한 정보는
다국어 번역을 참조하십시오. 다국어 번역 테이블을 사용하여
DataObject 유형 데이터를 한 형식에서 다른 형식으로 변환할 때 사용할 입력 문자열 또는
출력 문자열에 대한 올바른 값을 판별하십시오.
데이터 오브젝트의 양방향 언어 형식을
변환하기 위한 API를 작성하려면 다음 단계를 수행하십시오.
프로시저
- 양방향 엔진 구현을 포함하는 모든 양방향 클래스를 포함하십시오. 예를 들면, 다음과 같습니다.
import com.ibm.bidiTools.bdlayout.*;
- DataObject 유형 오브젝트를 처리하는 데 필요한 모든 클래스를 포함하십시오. 예를 들면, 다음과 같습니다.
import commonj.sdo.DataObject;
import commonj.sdo.Type;
import commonj.sdo.Property;
- DataObject 유형 오브젝트가 포함하는 여러 문자열 유형을 포함하는 문자열 변수를 정의하십시오. 이는
DataObject를 반복적으로 사용하는 동안 type String 속성을 필터링합니다. 예를 들면, 다음과 같습니다.
String STRING_STR_TYPE = "String";
String NORM_STRING_STR_TYPE = "normalizedString";
String TOKEN_STR_TYPE = "token";
String LANG_STR_TYPE = "language";
String NAME_STR_TYPE = "Name";
String NMTOKEN_STR_TYPE = "NMTOKEN";
String NCNANE_STR_TYPE = "NCName";
String ID_STR_TYPE = "ID";
String IDREF_STR_TYPE = "IDREF";
String IDREFS_STR_TYPE = "IDREFS";
String ENTITY_STR_TYPE = "ENTITY";
String ENTITIES_STR_TYPE = "ENTITIES";
- 특성 유형이 String인지 확인하는 함수를 정의하십시오. 예를 들면, 다음과 같습니다.
private static boolean isStringFamilyType (Property property) {
boolean rc = false;
if ((property.getType().getName().equalsIgnoreCase(STRING_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(NORM_STRING_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(TOKEN_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(LANG_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(NAME_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(NMTOKEN_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(NCNANE_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(ID_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(IDREF_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(IDREFS_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(ENTITY_STR_TYPE)) ||
(property.getType().getName().equalsIgnoreCase(ENTITIES_STR_TYPE)))
rc = true;
return rc;
}
- 전체 DataObject에 양방향 변환을 적용하는 반복 함수를 정의하십시오.
주: 코드 논리에는 다음 가정이 포함됩니다.
- 양방향 변환은 문자열 유형의 특성에만 적용됩니다.
- DataObject에서 문자열 유형의 특성은 하나의 양방향 형식으로 저장됩니다.
예를 들면, 다음과 같습니다.DataObject BiDiDataObjTransformationBO(DataObject boIn, String formatIn, String formatOut){
Type type;
Property property;
if (boIn == null) return null;
type = boIn.getType();
List propertyList = type.getProperties();
for (int propertyNumber = 0; propertyNumber < propertyList.size(); propertyNumber++){
property = (Property) propertyList.get(propertyNumber);
String propertyName = property.getName();
- 비문자열 특성은 모두 건너뜁니다. 예를 들면, 다음과 같습니다.
if (!isStringFamilyType(property))
continue;
if (property.isContainment()) {
if (property.isMany()) {
List childsList = boIn.getList(property);
- 하위 오브젝트를 처리하는 변환을 반복적으로 호출합니다. 예를 들면, 다음과 같습니다.
for (int childNumber = 0; childNumber < childsList.size();
childNumber++){ BiDiDataObjTransformationBO(connectionContext,
((DataObject)childsList.get(childNumber)),formatIn, formatOut);
}
} else {
- 포함된 비즈니스 오브젝트의 하위 오브젝트를 처리하는 변환을 반복적으로 호출합니다. 예를 들면, 다음과 같습니다.
BiDiDataObjTransformationBO(connectionContext,
((DataObject)boIn.get(property)),formatIn, formatOut);
}
} else {
- 단순한 문자열 속성을 변환합니다. 예를 들면, 다음과 같습니다.
String str = BiDiStringTransformation(
(boIn.getString(propertyName),formatIn, formatOut);
boIn.setString(propertyName, str);
}
}
return boIn;
}