AE工具使用SQL和PeopleCode运行批处理进程,不需要编译,也不需要产生SQL语句,只执行SQL语句。AE集成进PeopleTools套件中。执行部分是用C++语言编写的。AE中的所有对象都保存在数据库中。所有fields、records、functions、component interfaces、Meta-SQL以及其他对象都能够在AE程序中使用。可重用性是AE程序最大的优点之一。
历史
PeopleTools前几个版本并不包含AE,进行批处理的唯一方式就是使用COBOL和SQR。一个PeopleSoft代码开发员在前端使用PeopleTools、在后台使用COBOL创建了AE程序。AE基于SQL逻辑,作用于PeopleTools对象,而不是过程化的程序。当PeopleTools团队决定将AE包含进PeopleTools中时,他们将后台程序转换成C++,并且加入了PeopleCode。伴随着新的特性,AE不断进化升级,然而COBOL和SQR却没怎么变化。AE的主要问题是不具有报表工具。但是随着8.46版本引入了XMLP技术,AE能够用于创建报表和图标了。
Application Engine
所有的AE程序都是通过Application Designer来进行设计和维护的。登录到Application Designer,然后选择File>New,选择App Engine Program。然后会打开一个包含
MAIN 区段(Section)的AE程序(如下图)。MAIN通常是第一个区段的名字。在开始编程之前,必须保存该AE程序。
也可以通过点击“Program Flow“ tab查看AE程序,如下图:
程序结构
AE程序的结构可以通过“Definition” tab或者”Program Flow“ tab查看。Definition结构使用文件夹表示对象,可以展开和折叠每个文件夹。要展开所有文件夹,选择View > Expand All。程序要想运行成功必须遵循层次结构。层次结构中有三个组成部分:section、step 和 action。
Section(区段)
一个AE程序必须总是包含一个MAIN区段。一个区段包含一个或者多个步骤(step)来进行相应的操作(action)。AE 程序可以创建多个区段。通过一个叫作 Call Section 的 action 来调用其他区段。可以通过右击一个区段,然后选择Insert Section。
Section 参数:
每个section都可以设置一些参数以对程序进行维护。下面显示了section的默认参数:
这些参数是可选的,没必要进行修改。但是使用某些参数可以使程序更加易于理解。
参数 描述
Sectoin Name Section的名称。当创建一个section时,会赋予该section一个默认的值。该名字可以更改,但是至多8个字符。
Description Section的功能描述。20个字符限制。
Market 默认值为GBL即Global。如果需要特定的market,可以更改该参数值。
Platform
默认为当前平台,但是可以设置成运行在某个平台。
Effective Date 只有当该日期在系统日期之前,该section才会被执行。默认值为01/01/1900。
Effective Status 该参数可以使section生效或者无效。默认为Active。
Auto Commit 如果想要每个step完成后自动提交就勾选该复选框。否则只会在程序结束之后才提交。
Access 如果勾选Public,其他AE程序就能够调用该sectoin。否则只能在当前AE程序中使用。
Comments 添加备注信息。右击该区段,选择Show Comments。
Step(步骤)
Section中的steps顺序执行。一个section可以有多个step。每个step可以有一个或多个action。可以右击section或者其他step,然后选择Insert Step/Action,添加step。该step会添加至光标所在位置之下。
Step 参数:
每个step都有三个参数,用于对程序进行维护。如下图:
参数 描述
Step Name Step 的名称。当添加一个step时,会赋予该step一个默认的值。该名字可以更改,但是至多8个字符。
Description Step 的功能描述。20个字符限制。
Commit After 通知AE程序什么时候提交。有三个选择:
Default : 遵循section上的Auto Commit参数。
Later : 稍后提交
After Step : 该step结束时提交
Frequency 控制Do While、Do Until、Do Select 三个action中commit 的频率。默认为空。
On Error 如果step运行出错就执行如下三种选项:
Abort-Default : 消息会被写到日志中,然后程序终止。
Ignore : 消息会被写到日志中,程序继续运行
Suppress : 没有消息会被写到日志中,程序继续运行
Active 该参数可以使step有效或者无效。在开发的时候,通过使其他step无效来测试某个step。
Comment 添加备注信息。
Action(操作)
一个step中可以处理多个action,但是在同一个step中每种action的类型只能出现一次。一当在step中创建了某种类型的action,该action还不能够被使用。Action的类型有Do When、Do While、Do Select、PeopleCode、SQL、Call Section、Log Message、Do Until 以及 XSLT。
Action 参数:
下面显示了SQL action的参数:
参数 描述
Action Name Action 的名称。下拉列表中显示的是当前可用的action。
Description Action 的功能描述。20个字符限制
Reuse Statement 默认为No。该参使SQL可以将state record中的任何 %band 变量转换成真实的绑定变量
:1 , :2 .......。
可以在AE程序的其他SQL语句中使用这些真实的绑定变量。
No Rows 只有当action为SQL时才可用。该参数默认值为Continue。其他值为 Abort、Section Break、Skip Step。
Do Select Type 只有当action为Do Select时才可用。默认值为Select/Fetch,一次获取一条记录。其他值为 Re-Select、Restartable。
On Return 只有当action为PeopleCode时才可用。默认值为 Skip Step。其他值为Abort、Break。
Message Set, 只有当action为Log Message时才可用。可以将log table 中的消息发送到jobs日志文件。
Number,Parameters
属性
每个AE程序都有一个属性对话框。使用属性对话框可以跟踪更正历史记录、关联表以及设置AE程序的属性。在属性对话框中共有四个页签:General、State Record、Temp Tables、Advanced。在AE程序打开的情况下,选择File > Definition Properties,或者点击Properties按钮,可以打开属性对话框。
General
在 General tab 中输入AE程序的描述以及可用于documentation 和 change control 的备注。可以指定一个Owner ID。当点击OK时,Last Updated框中的信息会相应的更新。
State Records
在 State Records tab 中可以将一个或者多个state record关联到该AE程序上。State record 使变量能够在不同的 action 之间传递。State record 可以是SQL table,也可以是derived work record。保存在derived work record中的变量会在AE程序结束时丢失掉。
State record 必须有某些限制:
- 该 record 的第一个字段必须是PROCESS_INSTANCE,且该字段必须是一个key。然后其他字段都可以被插入到这个State Record 中。
- State record 的名字必须以 AET 结尾。
- State record 上的任何 PeopleCode 在 AE 程序执行期间都不会执行。
如:PS_TEST_AET 为 Derived work record,具有如下字段:
可以在SQL action 中使用
%Select 将来自运行参数页面的数据保存到state record中:
%Select(Year)
Select Year
From PS_TEST_RUN_CONTROL
然后使用%Bind 将state record 中的数据检索出来,如下面的例子将检索出来的Year插入到 PS_TEST_FILE 表中:
Insert %Bind(Year) into PS_TEST_FILE
Temp Tables
临时表用于并行处理。这就使得AE 程序能够在相同的时间运行多次。要让AE程序利用并行处理,必须进行如下 6 个步骤:
- 定义临时表 当创建一个新的记录时选择Temporary Table 类型。PROCESS_INSTANCE作为该记录的key。该临时表的名字必须以TAO结尾。
- 设置临时表 根据PeopleTools Options 中的设置(如下图)创建临时表的实例数量。Build 临时表,然后
- 将临时表指定给AE 在AE属性对话框中的Temp Tables 页签中将该临时表添加到Selected列表中。
- 针对批处理 在Temp Tables 页签上,设置AE程序要使用的临时表实例数量。同时判断如果所有的实例都被占用了,AE程序应该怎么做:Continue 或者 Abort。
- Build/Rebuild临时表 更改实例之后,需要rebuild临时表
- 利用Meta-SQL 使用%Table 引用临时表。AE程序会跟踪哪个临时表实例正在被使用。在AE中使用临时表之前,临时表中所有的数据都会被删除。