PeopleSoft技术(PeopleCode学习1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34417749/article/details/79975291

本片文章主要讲一些PeopleCode的基础知识,后面会有PeopleCode练习的篇章

一、PeopleCode概述

  • 当业务数据自身的约束不能满足业务需求时,使用PeopleCode实现复杂的业务逻辑
  • 当业务数据的保存逻辑过于复杂,无法通过Component Processing实现时,使用PeopleCode+SQL实现复杂的数据保存逻辑
  • PeopleCode Definition是存放在数据库中的
  • 事件(Event)驱动,面向操作(用户的业务处理)的编程语言

二、PeopleCode对象和事件

(1)PeopleCode中的对象
Record Field
Component Record Field
Component Record
Component
Page
Menu Item 几乎用不到
注意:我们在写代码的时候优先级是从下往上的,可以在Component Record中写的不在Record中写,因为如果你把Code写在Record中,别人用这个Record时也会执行该Code,除非你的Code在所有用到这个Record时都可以用到,否则不建议使用。

(2)PeopleCode中的事件
(a)下面是PeopleCode中的所有事件
这里写图片描述
(b)下面是用户更改FIELD后触发的事件顺序
这里写图片描述
(c)用户点击Save按钮时触发的事件顺序
这里写图片描述
(d)FieldEdit VS FieldChange
FieldEdit比FieldChange先触发,并且是所有Field的FieldEdit事件触发完之后才触发FieldChange事件
一边情况,数据校验类型的code会放在FieldEdit事件中去写,按钮点击等方法会在FieldChange事件中去写。
FieldEdit事件会根据代码执行情况对当前字段进行特殊标记
(e)SaveEdit VS SavePreChange VS SavePostChange
触发的顺序是SaveEdit>>SavePreChange>>SavePostChange,并且是所有Field的某个事件都触发完之后再触发下一个事件
SaveEdit一般是在保存前字段信息校验时写在该事件中;SavePreChange保存在数据库之前进行数据合法性校验,比如已有该员工身份证号则不能录入;SavePostChange一般是保存到数据库之后触发,比如保存到数据库后给用户一个友好型提示。

三、PeopleCode语法

分隔符:PeopleCode和大多数编程语言一样都是用分号(;)结束的
赋值语句:Varname = expression
数据声明:数据范围 数据类型 变量名
例如:

        Local number #
        Local Field &DATE; 
        Local array of number &AN;

条件语句:

 if  条件  then
    语句;
 end-if;

Evaluate left_term 
When [relop_1] right_term_1 [statement_list] . . .
When [relop_n] right_term_n [statement_list] 
[When-other [statement_list]] 
End-evaluate;

循环语句:

Repeat statement_list 
Until <logical_expression>;

While <logical_expression >
statement_list 
End-while; 

For <&var>= <start-value> to <end-value> [Step i]; 
    statement_list 
End-for; 

PeopleCode的数据类型:加粗的是常用的数据类型
Any、StringBooleanNumber、Float、Integer、Date、DateTime、Time

用户自定义常量:constant &str = “A”;
用户自定义变量:Local Field &DATE;
&DATE = GetRecord(RECORD.DERIVED_HR);

变量有效范围:
Global: 全局变量,在整个session中有效
Component: 在被激活的Component中包含的所有页面有效
Local: 在被定义的程序段或函数中有效

常用系统变量:
%Date 当前时间
%EmployeeId 当前登录员工id

运行操作:
数学运算:+ - * /
日期和时间的运算:
Time +/- Number (seconds) = Time
Time – Time = Number (seconds)
Date +/- Number (days) = Date
Date – Date = Number (days)
Date + Time = Datetime (Date and Time combined)
字符串连接运算: |
@ 操作.
比较操作: >,=,<,>=,<=,<>
逻辑操作: And, Or, Not

PeopleCode的函数
Function_name([parameter-list]);
PeopleCode 中使用的函数
Build-in函数 (不用声明,直接使用)
Internal 函数 (在Peoplesoft程序中声明、定义的函数).
External PeopleCode (defined outside the calling program-generally contained in record definitions serving as function libraries)
External non-PeopleCode(外部函数)

常用的系统Build-in函数
Warning
Error
All
None
GetLevel0
GetRowSet
GetRow
SQLEXEC

自定义函数的声明:
在Formula事件中定义函数
格式:
Function name [(paramlist)] [Returns data_type]
[statements]
End-function

PeopleCode中的注释:
单行注释: REM XXXXXXXX ;
多行注释: <*
XXXX
XXXXX
XXXXX
*>
多行注释: /* XXXXXXXX */

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页