PeopleSoft-多语言开发流程
多语言流程简介
主要开发点
基语言&已安装语言
基语言PS页面路径:主菜单-PeopleTools-实用程序-管理-PeopleTools选项
数据库查询:
1 | select language_cd from psoptions; |
已安装语言PS页面路径:主菜单-PeopleTools-实用程序-国际-语言
数据库查询:
1 | select language_cd,installed from pslanguages where installed='1'; |
启用官方语言&新增语言
启用官方语言
- 在上面的【管理已安装语言】页面进行启用
- 对PS的Web配置文件进行修改。默认情况下,官方已经安装的语言不需要做修改,只要重启PS的Web服务即可。
新增语言
对于官方未安装的语言,需要自己新增语言包。主要步骤:
1.字段LANGUAGE_CD中新增转换值(以IDN为例Indonesian 印尼语);
2.页面配置新增语言;
3.修改【登陆页面】signin.html;
4.修改signin.html同路径下的属性文件text_zhs.poperties;主要是用于增加Web页面的悬浮提示;
5.开发工具新增语言(PeopleTools8.57)
在PeopleTools pscfg中新增IDN语言(需要修改windows配置)。
思路:
- 安装工具VS;
- 修改中文ZHS语言的pscfg.rc文件;
- Copy ZHS语言的文件夹为IDN;
- 配置工具并且设置路径后,使用工具基于刚刚Copy出来的IDN文件夹,生成PSCFGIDN.DLL;
- 将PSCFGIDN.DLL文件和IDN文件夹放置到对应的位置;
- 在pscfg.exe中选择新增的语言,即可在对应语言环境中进行开发。
首先安装Visual Studio Community 2019(默认C盘安装)
以英文为基础,编辑PeopleTools工具安装路径下的:\src\res\eng\pscfg下的pscfg.rc
复制 \src\res\eng\inc\version.rcx 到 \src\res\eng\pscfg
把中文D:\peopletools\src\res\ZHS文件夹Copy一份修改名字为IDN,修改其pscfg.rc文件(前面是以ENG语言为例,这里是以ZHS为例,后面也都是使用ZHS,修改方式同上)。
Use the MAKEALTL.BAT batch file to compile PSCFGENG.DLL. For example: makealtl ENG PSCFG Then copy the DLL file to the PS_HOME\bin\client\winx86 directory.
使用 MAKEALTL.BAT 生成DLL文件。设置环境变量,新建批处理文件env.bat(PS_HOME的位置根据PS_HOME\bin\client\winx86找),bat文件内容如下(注释部分内容/**/,需要删除):
1 | set VS140COMNTOOLS= C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools /*VS工具路径*/ |
注意:需要修改makealtl.bat 文件,运行makealtl需要在其路径下
使用cmd,切换至res/路径下,执行makealtl IDN PSCFG,生成DLL文件。
然后,将生成的PSCFGIDN.DLL文件放置到bin/client/winx86/路径下;
将复制并修改好的IND文件夹放置到src/res/路径下:
打开工具中的绿帽子 pscfg.exe;
至此,开发工具新增语言完成!
最后,重启PS Web服务,页面上即可选择刚刚新增的语言。
多语言关联表
PS中实现多语言功能是靠基表关联related language record实现的。
原理:
- 基表中存储所有字段,多语言表(related language record)中存储需要翻译的字段(描述性字段)。
- 多语言表的keys比基表多一个key值,即language_cd。
- 在页面加载数据时,优先取对应的多语言表中的描述性字段的值,如该多语言表无数据,那么则取默认的基表中描述性字段的值。
- 如果登陆对应语言页面,修改了描述性字段的值后,自动在多语言表中创建一条对应language_cd的记录,且不会修改基表中的描述性字段的值。
- 如果修改了非描述性字段的值,那么基表中非描述性字段的值也会进行修改。(这很好理解,因为多语言表只有描述性字段,而没有非描述性字段,改了以后存不了,只能存到基表中)
简单的说,PS的多语言原理就是针对基表,创建一张多语言表以此来保存对应语言的翻译内容,所以需要language_cd字段来指定语言代码。这样每个语言都可以存在自己对应语言的描述性字段。而非描述性字段,一般是ID值,下拉值等。ID值不需要翻译;下拉值就需要在对应语言的PeopleTools开发工具中,删除原基表带出的描述,同时进行翻译,保存后即可。
以上是实体表Table关联多语言表,视图View也是同理。
官方给出的创建多语言表操作如下:
- The keys of the related language record should contain all the keys of the base record in the same order.(多语言关联表的keys需要跟基表顺序一致);
- You should add an extra key, LANGUAGE CD, as the last key for the record(exception is only for EFFDT field).(多语言关联表需要额外在keys最后添加language_cd字段,并设置为key,如果keys中有effdt,那么放置于effdt字段前面);
- Apart from the keys, your language record needs only the fields which need to be translated. le. DECR etc.(除了基表的keys外,多语言表只能添加需要翻译的字段,即描述性字段。如果放置非描述性字段,那么会造成基表中的非描述字段存储的值与多语言表中值不一致)。
示例:
以C_PRH_EDU_TBL基表为例,创建该表时设置5个keys。
创建对应多语言表,就需要有6个keys,即添加一个key字段-language_cd;注意:基表中无effdt字段,如果有,那么多语言表中的language_cd需要放置在effdt字段前。同时,只需并只能在多语言表中添加需要翻译的描述性字段,同时为了记录多语言修改的‘最后更新人’和‘最后更新时间’,需要添加日志子表sRec-C_LASTUPD_SBR。
在基表的Record Properties中关联多语言表即可。
以上为’实体表’创建&关联多语言表示例,创建’多语言视图’同理。
页面
PS页面的多语言开发,主要使用PeopleTools 开发工具设置对应语言后,需要处理以下几个点:
1.页面字段label修改,包含字段翻译、隐藏、不可编辑,页面路径、内容概要名称翻译;注意:,对于标准页面来说,有些字段的label值来自标准的【消息目录】,例如:【受款人消息】页面的标题,搜索视图的搜索范围限定字段,‘包含’、‘不包含’、‘大于等于’等;还有些字段的label则是由代码取自于【结构与内容】的组件描述,例如:【期间】、【日历组】、【一次性导入】等页面的标题。
示例:
需要翻译COUNTRY字段的label翻译为英语,只要将长、短描述中的‘国家/地区’删除,输入对应的英文描述即可(翻译的长度有限制long Name为30,Short Name为10)。
2.页面多语言表建立,并与基表关联(前面已经介绍,不赘述);
3.页面查询多语言视图建立,并与基表关联。主要包括组件查询视图,查询放大镜、动态视图等(前面已经介绍,不赘述);
4.页面下拉框字段翻译,将原来的字段translate values,翻译为对应语言即可;
示例:
需要翻译C_EDCT_LRNG_STYLE字段的translate values,只需要将对应的长、短描述均改为对应语言翻译即可(也有长度限制);
注意:也可以直接登陆对应语言的PS系统,找到【转换值】页面,直接将原数据覆盖即可。
5.页面报错信息翻译。如果是开发官方已安装语言,则只需要翻译客制的消息即可,例如:结束日期必须大于开始日期。而针对新增的语言,那么不仅需要翻译客制的消息,还需要翻译标准的消息(这是一个很大工程,同时,需要注意翻译的长度限制);
示例:
标准消息
客制化消息
6.页面逻辑多语言调整,主要包含:获取数据SQL,页面HTML、CSS样式代码等;主要是对应的代码逻辑的调整,含component peoplecode、page peoplecode、component record peoplecode等。具体代码逻辑需要具体分析,这里不详细介绍。
7.流页面拼贴向导(此处暂不做介绍)。
AE进程
AE进程即 App Engine Program ,一般用于后台进程处理用户需要进行的复杂逻辑。在用户提交处理请求后,将工作交予服务器处理,故用户无须在页面等待运行结果。
多语言开发时主要在代码中考虑以下两点:
1.数据获取来源是‘基表’或‘多语言表’。
1 | --基表 |
2.落地数据时切换语言。切换后,系统会将数据落入到语言表中对应语言代码的记录中。
1 | /*获取当前用户ID*/ |
同时,处理多语言时需要根据实际情况考虑以下两类进程:
1.自动循环进程。
2.手动执行进程。
报表
PS的报表主要分为三类报表:
1.页面报表
2.BI报表(单个)
前两者多语言开发需要注意点:a.页面-字段显示;b.代码-取数逻辑。
3.AE报表。AE报表又可以细分为:
(1)Excel报表。注意点:a.报表名称;b.报表表头;c.报表内容。
(2)BI报表(批量)。注意点:a.报表样式;b.报表内容。
以上报表的具体代码不作详解,之前的笔记已经对其有所介绍,只要注意多语言取值即可。
示例:
PeopleSoft-页面报表多条件搜索功能 | Gek’Blog (gek96.top)
PeopleSoft-如何实现AE报表程序 | Gek’Blog (gek96.top)
PeopleSoft-报表示例(WriteExcelEx_2010类和ReportDefinition类) | Gek’Blog (gek96.top)
PeopleSoft-BI-Publisher-打印PDF证明 | Gek’Blog (gek96.top)
接口
PS的接口主要分为:
- 对外提供监听接口-PeopleSoft-外部request通过CI操作组件(soapUI模拟) | Gek’Blog (gek96.top)
- PS调用外部接口-PeopleSoft-PS调用外部接口 | Gek’Blog (gek96.top)
针对多语言开发时,不论是提供给外部的监听接口,还是请求外部的接口,都需要进行语言区分。前者,需要考虑外部系统在请求PS系统时,带上语言标识进行语言区分;后者需要在请求外部接口时区分语言。
AWE流程
AWE引擎是PS系统内置的一套审批工作流引擎,是为了解决审批操作而建立的一个通用的、模块化的程序块,它将一次审批流程肢解开来,一方面有助于功能顾问对系统标准的工作流进行配置,另一方面使技术顾问在开发全新工作流时,开发步骤更加清楚,开发更加简单。
AWE的设计框架采用面向对象的手法,将审批的步骤以及事件的触发封装在类中,开发人员在开发时候只需要调用这些类中的方法即可。
一般来说,审批工作流通常为以下三个部分构成:
可以看出,AWE引擎只是整个流程的一部分,用于处理审批操作。
AWE引擎的多语言开发,需要注意以下两点:
- AWE流程引擎中页面展示的多语言处理。
- AWE流程引擎中落地处理逻辑的多语言处理。
这里不对AWE引擎的具体业务和逻辑代码进行赘述,后续会有对应的详解笔记。(偷个懒😎)
结语
以上就是针对PS系统的多语言开发整个流进行了程简单介绍,部分内容梳理的比较简洁,不过,对于拥有一定的PeopleSoft相关开发经验的朋友,理解起来应该也不难。我写这篇流程笔记的目的,主要是想通过这篇笔记,对PS系统的多语言开发做一个梳理和巩固,同时也希望能够为想了解相关技术的朋友提供一定的帮助。