WebSphere Adapter从JCA的第一个版本(6.0.0)开始就十分重视对多语言及本地化的支持。除了对大家所熟悉的诸如简体中文,法文,俄文等语言的支持之外,WebSphere Adapters还支持另外一类比较特殊的语言,比如波斯语、阿拉伯语、希伯来语和乌尔都语,这类语言的文字读写顺序是从右向左的,和我们习惯的语言方向相反。在应用程序中这些语言的文字往往嵌入在英文等从左向右的文字中。这样的应用程序就需要配制对双向文字(Bi-driectional Text即BIDI)的支持。
本文中我们先简单了解一下BIDI的基本知识,然后以WebSphere Adapter for JDE为例介绍WebSphere Adapters在WPS中支持BIDI所需的配制。我们使用的各个产品的版本是:
JDE Adapter - IBM WebSphere Adapters For JD Edwards 6.2.0.0
WID - IBM WebSphere Integration Developer 6.2
WPS - IBM WebSphere Process Server 6.2
我们一般对具有以下特点的语言称为是BIDI(bi-directional text)的:
例如:
阿拉伯文
希伯来文
因为BIDI语言从右向左的特点,往往它们会表现出与一般语言不同的特性,在程序中应该对它们进行特别的考虑和处理。比方说下面的这些情况:
3 > 2 -->
2 < 3 <--

.while english is left to right TFEL OT THGIR SI CIBARA
---------英文子句方向---------><------阿拉伯文子句方向------
<------------------------------全句方向--------------------------------
在换行的时候应该写成:
while TFEL OT THGIR SI CIBARA
.english is left to right
而不是:
right TFEL OT THGIR SI CIBARA
.while english is left to
根据BIDI语言的以上特性,我们可以用五个属性来描述一段文本的BIDI属性:
接下来我们看一下每个属性的具体情况。
排序方案 (Ordering Scheme)
排序方案(Ordering Scheme) 从字面意义上理解就是程序如何对相邻的字符的顺序进行处理,其实就是对不同类型字符的不同处理顺序。一共有3种: Visual, Implicity和Explicity.
Visual方案是一种最原始的排序方案。因为早期程序处理方式有一定的局限性,文档内容会被原封不动地从存储区照搬到显示屏幕上,无论是拉丁字母还是阿拉伯字母,不区分不同语言字符的方向性。这种方案的优点是易于理解,因为显示方式和存储结构是一致的。缺点是程序员必须对每个嵌入的子句了如指掌以便使每个子句的方向都得到合适的处理。
Implicity方案又被称为Logical方案。在这种方案中由拉丁字母组成的语句被固有的定义成具有从左向右的方向,而由阿拉伯语,希伯来语等字母构成的语句则默认具有从右向左的方向。文本依照逻辑顺序进行存储,在存储的时候会有专门的算法来识别不同属性的子句方向并且自动对他们进行处理。Implicity方案从理论上说是非常简单的,但是有一些特定情况它还是不能处理。比如,一个产品编号是由一些数字,拉丁字母和阿拉伯字母共同构成的, 对于这样的字段Implicity方案就束手无策了。
Explicity方案在原始的文本中插入了一些控制字符,这些字符会告诉程序什么时候该对文本进行倒置,什么时候需要处理字符的形状以及一些其他的转换。Explicity方案的文本一般也是按照逻辑的顺序进行存储的,它的缺点是控制字符会使文本的处理复杂化。
全局方向 (Global Orientation)
相对于晦涩的排序方案(Ordering Scheme)来说全局方向(Global Orientation)就好理解多了,它表示的就是从整个应用程序范围来看的文本的方向,或者说走向。选择也很简单:
全局的:
从左向右(Left to Right, LTR)
从右向左(Right to Left, RTL)
与上下文有关的:
从左向右(Contextual Left to Right, Contextual_LTR)
从右向左(Contextual Right to Left, Contextual_RTL)
语义交换 (Symmetric Swapping)
语义交换(Symmetric Swapping)涉及的是是否对我们前面提到的那些具有方向性的字符进行处理,选择只有Yes和No。
如果在缓冲区存有 A>B 并且Global Orientation是RTL,这时如果Symmetric Swapping是Yes, 那么我们会看到 B把’>’转换成了’<’,如果Symmetric Swapping是No,我们就会看到 B>A 即没有转换’>’.
字符形状处理 (Shaping)
这里设定的是对字符的形状要进行怎样的处理。包括:
Shaped – 对形状进行处理
Nominal – 对形状不进行处理
Initial – 在字符作为首字母时进行处理
Middle – 对处于中间的字符进行处理
Final – 在字符是末尾字符时进行处理
Isolated – 对孤立字符进行处理
数字形状处理 (Numeral Shaping)
这个设定的是如何对数字的形状进行处理。包括:
Hindi – 以Hindi语的方式进行处理
Contextual – 依照上下文进行处理
Nominal – 不进行处理
在这五个属性中,前两个属性的组合不太好理解。下表列出的是在一些组合下后台存储和屏幕显示的对照。小写的字母代表英文,大写的字母代表阿拉伯文,英文的阅读顺序从左向右,阿拉伯文的阅读顺序从右向左。
| 排序方案 | 全局方向 | 后台存储 |
屏幕显示 |
| Visual | LTR | englichCIBARA | englichCIBARA |
| Visual | RTL | ARABIChsilgne | englichCIBARA |
| Implicity | LTR | englishCIBARA | englichCIBARA |
| Implicity | RTL | ARABICenglish | englichCIBARA |
| Visual | LTR | englishCIBARA | englichCIBARA |
| Visual | RTL | englishCIBARA | ARABIChsilgne |
| Implicity | LTR | englishCIBARA | englishARABIC |
| Implicity | RTL | englishCIBARA | ARABICenglish |
WebSphere Adapter对BiDi语言的支持需要对Adapter所运行的环境进行相应的配置包括操作系统的区域设置和应用程序服务器的设置以及Adapter所连接的EIS环境的设置。
配置操作系统
关于操作系统的区域设置,不同的操作系统的设置方法各不相同。
在Windows中,我们可以通过控制面板中的“区域和语言选项”来安装语言,输入法和设置区域。
以Windows Server 2008为例,在Location选项卡中可以设置操作系统的区域。
在Keyboards and Language选项卡中点击Change Keyboards…按钮可以添加输入法:
在启动了BiDi语言的输入法以后我们可以通过”Ctrl + Left Shift”和”Ctrl + Right Shift”来切换文字的方向:
Ctrl + Left Shift
Ctrl + Right Shift
配置应用程序
应用程序服务器的设置包括对开发环境(WID )和服务器(WPS)的设置。
对WID的设置只需要更改Eclipse的语言环境。方法是
更改Eclipse中的语言编码:
1. 从菜单中选择Windows > Preferences.
2. 在弹出窗口中选择General > Workspace.
3. 在右边的Text file encoding中选择Other: UTF-8.
对WPS的设置分为两个方面:一个是显示在控制台中的运行时数据,一个是显示在trace/log中的数据。方法是
1. 启动WPS server.
2. 登录控制台(WPS本机的默认URL是http://localhost:9060/ibm/console)
3. 在左边的菜单中选择Servers > Application Servers
4. 在右边的列表中选择刚刚启动的server (server1).
5. 在Configuration这一页选择Server Infrastructure > Java and Process Management > Process Definition
6. 在接下来的一页选择Java Virtual Machine.
7. 然后在General Properties的Generic JVM arguments中添加:
-Dclient.encoding.override=UTF-8 (控制台数据编码)
-Dfile.encoding=UTF-8 (trace/log数据编码)
配置EIS
WebSphere Adapter支持多种不同的EIS: SAP, Siebel, PeopleSoft, JDE等等。对于不同的EIS会有不同的配置,对多语言的支持和设定请参考相关的帮助文档或者联系系统管理员。
配置Adapter
接下来我们就可以运行Adapter了。WebSphere Adapter 沿用了我们前面提到的五个属性对BiDi进行配置。为了方便观察我们采用了比较有特色的一组设定:
Ordering Scheme = Visual
Global rientation = Right to Left
Symmetric swapping = Yes
Shaping = Nominal
Numeral Shaping = Nominal
这组设定的特点是我们不用更改EIS端的任何设置,甚至不用引入英文之外的其他文字。在连接EIS server的时候我们只需要传入反写的连接信息,Adapter会自动将这些连接信息转换为正确的顺序。对于EIS端感觉不到任何变化。
下面是JDE Adapter在EMD发掘数据时的界面:
在点击Advance按钮后出现的Bidi Properties下正是我们前面提到的五个属性,这里的设定是对EMD在EIS中发掘数据时的设定,之后我们还会看到一个对运行时的BiDi设定。
在选则了Visual, RTL之后我们需要输入反向的连接信息,所以图中的Environment, Role, User Name和Password都是反向的。
在接下来列出的EIS数据我们会发现会被反向列出:
其他的生成步骤和正常的数据发掘一样,直到生成服务和部署设置的页面,会出现相同的BiDi设置,这个设置是对运行时的设定,我们选择和EMD相同的设定:
生成Artifact之后我们会看到Business Object Name(GetEffectiveAddress)是反向的:
在Business Object中的ASI(Application Specific Information)记录的Business Function也是反向的。如果不对Business Object进行配置,在运行时Adapter会试图在EIS端调用一个叫做sserddAevitceffEteG的Business Function,但实际上这个Function并不存在。
因此我们需要在Business Object的ASI中添加一些BiDi的设定信息。
1. 用Business Object Editor打开sserddAevitceffEteG.xsd
2. 在Properties中选则Application Info,并展开JDE ASI schema
3. 右键选择JDEBFNBusinessObjectTypeMetadata, 选择New > BiDiContext
4. 右键选择BiDiContext, 添加BiDiEIS和BiDiMetadata.
5. 分别设定BiDiEIS和BiDiMetadata中的五个属性如图,然后保存。
之后就可以把应用程序部署到WPS服务器上运行了。以下两图分别是输入和返回结果:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21375089/viewspace-604128/ ,如需转载,请注明出处,否则将追究法律责任。