PeopleCode 语言结构
本主题假定您熟悉一种编程语言,例如 C、Visual Basic 或 Java。
在其基础上,PeopleCode 语法类似于其他编程语言。但是,PeopleCode 语言的某些方面与 PeopleTools 环境特别相关。例如,定义名称引用使您能够在不使用硬编码字符串文字的情况下引用 PeopleTools 定义,例如记录定义或页面。其他语言特性,如 PeopleCode 数据类型和元字符串,反映了 PeopleTools 和 SQL 的密切交互。PeopleCode 中的点符号、类和方法类似于其他面向对象的语言,如 Java。
数据类型
常规数据类型包括数字、日期、字符串。将它们用于基本计算。对象数据类型从 PeopleTools 类实例化对象。在文档讨论使用该数据类型的 PeopleCode 的地方演示了每种数据类型的适当使用。
在使用变量之前声明变量。
本节讨论:
- 常规数据类型。
- 对象数据类型。
常规数据类型
PeopleCode 包括这些常规数据类型:
- any 当变量和函数返回值声明为 any 时,数据类型是不确定的,使 PeopleTools 能够根据上下文确定适当的值类型。默认情况下,未声明的局部变量是 any。
- boolean
- date
- datetime
- float
- integer **注意:**只有当性能分析表明提高的速度是有用的并且应用程序分析表明不同的表示不会影响计算结果时,才应使用浮点数和整数数据类型而不是数字。
- number
- string
- time
浮点型、整数和数字类型的注意事项
Integer 类型是一个表示为 32 位有符号二进制补码的数字,因此它的范围是 -2,147,483,648 到 2,147,483,647。
Float 类型是使用机器浮点二进制小数点(双精度)表示法表示的数字。这种浮点二进制表示不适用于涉及十进制小数的精确计算;特别是涉及金钱的计算。例如,由于十分之一(1/10 或 .1)不能用浮点二进制小数点精确表示,浮点二进制小数点和 0.10 .10 不等于 .20。
Number 类型的大小限制为 34 位,不包括小数点,小数点右侧最多 32 位。由于 Number 类型是浮点小数点表示,因此它是涉及货币计算的适当数据类型。
如果操作数都是整数且目标是整数,则操作(除除法外)使用整数算术完成,即使变量被声明为 Number 类型。如果以下条件之一为真,则目的地被视为整数:
- 目标是对整数变量或参数的赋值。
- 目标是数组下标。
- 目标是比较的右侧操作数,左侧操作数是整数。
- 目标是一个evaluate 语句的when-expression 部分,并且在evaluate 语句开始处计算的表达式是一个整数。
- 目标是 for 循环的初始值、限制值或步长表达式,而 for 循环的控制变量是整数。
除法(/ 运算符)永远不会使用整数算术来执行。它始终使用浮点小数点算术执行,即使结果变量被声明为 Integer 类型。
请按照以下建议为数字分配类型:
- 对大多数应用程序数据值使用数字。
- 在计算项目(例如行集中的行)时使用 Integer。
- 仅在您调整代码以提高性能时(在它已经工作之后)才使用 Float。 此外,仅当您确定由此导致的精度损失不会影响应用程序并且计算速度的增加对事务产生影响时,才应使用 Float 类型。一般来说,很少有应用程序应该使用 Float 类型。
对象数据类型
对于 PeopleTools 中的大多数类,您需要相应的数据类型来实例化该类中的对象。
请参阅类和对象。
PeopleCode 包括这些内置的组件缓冲区访问类型:
- Field
- Record
- Row
- Rowset
PeopleCode 还包括这些内置的显示数据类型:
- AnalyticGrid
- Chart
- Gantt
- Grid
- GridColumn
- OrgChart
- Page
- RatingBoxChart
PeopleCode 还包括这些内置的 Internet 脚本数据类型:
- Cookie
- Request
- Response
PeopleCode 包括许多杂项数据类型,例如,数组、图表、异常、文件、消息、XmlDoc 等等。
API 对象类型
将此数据类型用于任何 ApiObject,例如会话对象、树对象、组件接口、门户注册表等。
以下 ApiObject 数据类型对象可以声明为 Global 类型:
- 会议
- PSMessages 集合
- PS消息
- 所有树类(树、树结构、节点、级别等)
- 所有查询类
所有其他 ApiObject 数据类型对象(例如所有 PortalRegistry 类)必须声明为 Local。
注释
使用注释来解释代码的作用,最好使用任何阅读您程序的人都能理解的语言。注释还使您能够区分随产品提供的 PeopleCode 和您添加或更改的 PeopleCode。这种区分有助于您分析调试和升级。
**注意:**使用注释放置唯一标识符,标记您对 PeopleSoft 应用程序所做的任何更改或增强。此标记使您可以搜索所做的所有更改,这在升级数据库时特别有用。
您可以通过以下方式将注释插入 PeopleCode:
- 您可以使用**/*开头和*/**插入跨多行的 C 样式注释。
- 您可以使用Rem(备注)语句进行注释。 在 Rem 注释的末尾放置一个分号。如果不这样做,直到下一条语句结束的所有内容都被视为注释的一部分。
- 您可以使用开头的**<*和结尾的*>**注释代码块和嵌套的 C 样式注释。 使用这种类型的注释将一组注释包含在另一组注释中。当您测试代码并想要注释掉已经包含注释的部分时,您通常会使用它。
**警告!在应用程序类中,您将看到/ /**样式注释的使用。 *不要在 PeopleCode 程序中使用这些。*这些注释由编译器生成。如果您使用它们,系统会在您下次验证、编译或保存 PeopleCode 时删除它们。它们用于提供有关应用程序类方法和属性的签名信息,并且每次编译器编译您的应用程序类 PeopleCode 时都会重新生成它们。相反,请使用上面列出的标准评论机制。
**注意:**注释文本最多不能超过 16383 个字符。
以下代码示例显示了注释格式:
代码语言:javascript复制<* this program is no longer valid commenting out
entire thing
Rem This is an example of commenting PeopleCode;
/* ----- Logic for Compensation Change ----- */
/* Recalculate compensation change for next row.
Next row is based on prior value of EFFDT. */
calc_next_compchg(&OLDDT, EFFSEQ, 0);
/* Recalculate compensation change for current row and next row.
Next row is based on new value of EFFDT. */
calc_comp_change(EFFDT, EFFSEQ, COMP_FREQUENCY, COMPRATE,
CHANGE_AMT, CHANGE_PCT);
calc_next_compchg(EFFDT, EFFSEQ, 0);
*>
Jetbrains全家桶1年46,售后保障稳定
注意: <* 和 *> 注释标记之间的所有文本都会被扫描。使用这种类型的注释时,您可能会收到针对某些情况的错误消息,例如引号不匹配。
声明
语句可以是声明、赋值、程序构造(例如 Break 语句或条件循环)或子例程调用。
本节讨论:
- 分隔符。
- 赋值语句。
- 语言结构。
- 分支语句。
- 条件循环。
展开所有部分
分离器
PeopleCode 语句通常以分号结尾。PeopleCode 语言接受分号,即使它们不是必需的,例如在 If 语句中完成的最后一个语句之后。此功能使您能够在每个语句后始终添加分号。
多余的空格被忽略。当您保存代码时,它们会被 PeopleCode 编辑器删除。
赋值语句
赋值语句是 PeopleCode 中最基本的语句类型。它由等号和左边的变量名和右边的表达式组成:
代码语言:javascript复制variableName = expression;
计算右边的表达式,并将结果放在左边命名的变量中。根据所涉及的数据类型,赋值通过值或引用传递。
按值分配
在大多数类型的赋值中,右侧表达式的结果作为新创建的值分配给变量,位于变量自己分配的内存区域中。对该变量值的后续更改不会影响任何其他数据。
参考赋值
当赋值语句的两边都是对象变量时,赋值的结果不是在唯一的内存位置创建对象的副本并赋值给变量。相反,变量指向对象的内存位置。附加变量可以指向相同的对象位置。
例如,&AN 和 &AN2 都是 Number 类型的数组。分配和AN2到与AN并没有AN2的&副本分配到与AN。两个数组对象都指向内存中的相同信息。
代码语言:javascript复制Local array of number &AN, &AN2;
Local number &NUM;
&AN = CreateArray(100, 200, 300);
&AN2 = &AN;
&NUM = &AN[1];
在代码示例中,&AN2 和 &AN 指向同一个对象:三个数字的数组。如果您将 &AN[2] 的值更改为 500,然后引用 &AN2[2] 的值,您将得到 500,而不是 300。另一方面,将 &NUM 分配给 &AN (100) 中的第一个元素是不是对象分配。它是按值赋值。如果将 &AN[1] 更改为 500,则 &NUM 仍为 200。
**注意:**在 PeopleCode 中,等号可以用作赋值运算符或比较运算符,具体取决于上下文。
语言结构
PeopleCode 语言结构包括:
- 分支结构:If 和 Evaluate。
- 循环和条件循环:For、Repeat 和 While。
- Break、Continue 和 Exit 语句循环控制和终止程序。
- 用于从函数返回的 Return 语句。
- 变量和函数声明语句:变量的全局、局部和组件,以及函数的声明函数。
- 用于定义函数的 Function 语句。
- 类定义语句。
- 用于错误处理的 Try、Catch 和 Throw 语句。
作为子程序的函数
PeopleCode 和 C 一样,没有我们通常所说的子程序。PeopleCode 子例程只是 PeopleCode 函数的子集,这些函数被定义为不返回值或可选地返回值。调用子程序与调用没有返回值的函数是一样的:
代码语言:javascript复制function_name([param_list]);
分支语句
分支语句基于条件表达式的评估控制程序流。
If、Then 和 Else 语句
If、Then 和 Else 语句的语法是:
代码语言:javascript复制If condition Then
[statement_list_1;]
[Else
[statement_list_2;]]
End-If;
此语句计算布尔表达式条件。如果条件为 True,则 If 语句执行 statement_list_1 中的语句。如果condition为False,则程序执行Else子句中的语句;如果没有 Else 子句,则程序继续执行下一条语句。
Evaluate(评估声明)
使用 Evaluate 语句检查多个条件。它的语法是:
代码语言:javascript复制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;
Evaluate 语句采用表达式left_term,并在一系列 When 子句中使用关系运算符 ( relop )将其与兼容表达式 ( right_term ) 进行比较。如果relop省略,则假定为等号。如果比较的结果为 True,则程序执行 When 子句中的语句,然后继续评估以下 When 子句中的比较。程序执行比较结果为 True 的所有 When 子句中的语句。如果 When 比较的计算结果均不为 True,则程序将执行 When-other 子句中的语句(如果提供)。例如,以下 Evaluate 语句仅执行第一个 When 子句。以下示例中的 &USE_FREQUENCY 只能具有三个字符串值之一:
代码语言:javascript复制Evaluate &USE_FREQUENCY
When = "never"
&PROD_USE_FREQ = 0;
When = "sometimes"
&PROD_USE_FREQ = 1;
When = "frequently"
&PROD_USE_FREQ = 2;
When-Other
Error "Unexpected value assigned to &USE_FREQUENCY."
End-Evaluate;
要在执行 When 子句后结束 Evaluate 语句,可以在子句末尾添加 Break 语句,如下例所示:
代码语言:javascript复制Evaluate &USE_FREQUENCY
When = "never"
&PROD_USE_FREQ = 0;
Break;
When = "sometimes"
&PROD_USE_FREQ = 1;
Break;
When = "frequently"
&PROD_USE_FREQ = 2;
Break;
When-Other
Error "Unexpected value assigned to &USE_FREQUENCY."
End-Evaluate;
在极少数情况下,您可能希望执行多个 When 子句,如以下示例所示:
代码语言:javascript复制Evaluate &PURCHASE_AMT
When >= 100000
&BASE_DISCOUNT = "Y";
When >= 250000
&SPECIAL_SERVICES = "Y";
When >= 1000000
&MUST_GROVEL = "Y";
End-Evaluate;
对于声明
For 语句将一系列语句重复指定的次数。它的语法是:
代码语言:javascript复制For count = expression1 to expression2 [Step i]
statement_list;
End-For;
For 语句将count的值初始化为expression1,然后每次执行statement_list 中的语句后将count增加i 。程序在此循环中继续,直到计数等于表达式 2。如果省略 Step 子句,则i等于 1。要从较高值向后计数到较低值,请对i使用负值。您可以使用 Break 语句退出 For 循环。
以下示例演示了 For 语句:
代码语言:javascript复制&MAX = 10;
Local integer &COUNT;
For &COUNT = 1 To &MAX;
WinMessage("Executing statement list, count = " | &COUNT);
End-For;
条件循环
条件循环,即Repeat 和While,重复一系列语句,每次通过循环评估一个条件表达式。当条件评估为 True 时,循环终止。您可以使用 Break 语句退出条件循环。如果 Break 语句位于嵌入另一个循环的循环中,则中断仅适用于内部循环。
重复语句
Repeat 语句的语法是:
代码语言:javascript复制Repeat
statement_list;
Until logical_expression;
Repeat 语句执行 statement_list 中的语句一次,然后计算logical_expression。如果logical_expression为False,则重复语句序列直到logical_expression为True。
While 语句
While 语句的语法是:
代码语言:javascript复制While logical_expression
statement_list;
End-While;
While 语句在执行 statement_list 中的语句之前计算logical_expression 。 它继续重复语句序列,直到logic_expression 的计算结果为 False。
创建应用程序包
本节概述了包名称并讨论了如何创建应用程序包定义。
了解包名
您可以在同一应用程序包定义中创建与另一个包或子包同名的子包,只要每个子包的完全限定名称是唯一的。每个子包通过类的完整路径名(来自包定义名称和子包名称)来区分。
图像:应用程序包命名约定示例
以下是应用程序包命名约定的示例,它显示了一种情况,假设在应用程序类 PT_FRUIT 中,其中 PT_FRUIT 是主类,您具有以下子包结构(此示例中未列出类):
在此示例中,三个子包被命名为 Raw,但每个子包的完全限定名称是唯一的。例如,第一个由主包的名称限定。它的完全限定名称是 PT_FRUIT:Raw。
其他 Raw 子包也由包含它们的子包限定。它们的名称是 PT_FRUIT:Reciepies:Raw 和 PT_FRUIT:Smoothies.Raw。
同样,您不能在给定的包或子包中创建两个具有相同名称的类。您可以在同一个应用程序包定义中创建具有相同名称的类,就像子包一样,只要完全限定名称是唯一的。每个类都通过类的完整路径名来区分。
**注意:**您不能创建在主包下定义了两个以上子包级别的结构。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A15ClDUL-1634795321210)(https://docs.oracle.com/cd/E17566_01/epm91pbr0/pbcmn/images/down_thin.svg)]创建应用程序包定义
本节讨论如何创建新的应用程序包或将新的包或类插入到应用程序包中。
要创建新的应用程序包,请访问应用程序设计器并选择文件、新建、应用程序包。
要插入新包或类,请打开应用程序包定义。选择一个包或子包,然后选择插入、包或插入、应用程序类。
应用程序包名称和应用程序类名称必须以字母字符开头,并且只能由字母数字字符和下划线 ( _ ) 组成。
**注意:**在某些情况下,如果您使用另存为创建新的应用程序包,您可能会遇到错误。
当您选择将 PeopleCode 与应用程序包一起保存并且 PeopleCode 使用 %This 系统变量时,就会发生错误。%This 系统变量在应用程序类 PeopleCode 中用于引用当前对象。
开发中遇到的错误
- 已被另一用户更改 关闭当前Page,并不保存
- 单选框变成多选,不能取消
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kvakd6QY-1634795321211)(学习笔记.assets/image-20211012165454003.png)]
解决方法:挨着
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Idz4Cdte-1634795321213)(学习笔记.assets/image-20211012165617044.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TsHP1tCm-1634795321213)(学习笔记.assets/image-20211012181537550.png)]
系统表
record信息表:SELECT * FROM psrecdefn WHERE recname=‘HK_LH_RECORD’;
field信息表:SELECT * FROM psdbfield WHERE fieldname =‘HK_LH_NAME’
学习总结:
1.field
filed属性:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tt9VVfnt-1634795321214)(学习笔记.assets/image-20211011110527193.png)]
Audit选中,会在PSAUDIT中记录字段的日志
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EKLimk9K-1634795321215)(学习笔记.assets/image-20211011111753823.png)]
2.grid
1.冻结网格Freeze Grid Column
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4sscouX-1634795321215)(学习笔记.assets/image-20211012145843430.png)]
效果:无论切换到哪个标签页,次列将被固定显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xyla0Saa-1634795321216)(学习笔记.assets/image-20211012145957330.png)]
Secondary Page
1.Display control field & Related Field
效果如下:详细见学习资料中链接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QHA1fRsh-1634795321217)(学习笔记.assets/image-20211012160423279.png)]
2.标题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WfKnsMvy-1634795321217)(学习笔记.assets/image-20211012162908924.png)]
所需配置:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPvF3H5v-1634795321218)(学习笔记.assets/image-20211012165757032.png)]
3.复选框
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHhnO7iC-1634795321218)(学习笔记.assets/image-20211012170303507.png)]
4.修改页面title
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XObnB1fS-1634795321219)(学习笔记.assets/image-20211012170708702.png)]
效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QW9nScUs-1634795321220)(学习笔记.assets/image-20211012170735713.png)]
3.Page
1.Allow Deferred Processing
FiledEdit事件会在保存时触发验证。如果把这里属性Allow Deferred Processing去掉,则变成与FiledChange一样的效果。这个属性好像是保存后才执行和立即执行的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-khIRPMAH-1634795321221)(学习笔记.assets/image-20211014140108489.png)]
4.Compont
1.组件新增一个Page
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ti7hBvIZ-1634795321221)(学习笔记.assets/image-20211012173529036.png)]
需要操作如下:(暂不知道原因2021-10-12)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5yI48AgQ-1634795321222)(学习笔记.assets/image-20211012173516150.png)]
2.Use>Add、Update/Display
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhitjcmP-1634795321222)(学习笔记.assets/image-20211012175040887.png)]
3.Internet
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hKBu2hGO-1634795321223)(学习笔记.assets/image-20211012182707375.png)]
4.组件生命周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cWukXXiq-1634795321223)(学习笔记.assets/image-20211013152521599.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ud3oQSAr-1634795321224)(学习笔记.assets/image-20211014144937351.png)]
优先级:Record>Compont
- Searchinit: 此事件是在显示搜索对话框、添加对话框或数据输入对话框之前生成的。在显示搜索页面之前 **注:**如果从复合接口运行,此事件及其所有关联的PeopleCode都不会触发。 **用法:**SearchInit可以与记录字段和组件搜索记录相关联。
- SearchSave: 当用户单击搜索时
**注:**如果从复合接口运行,此事件及其所有关联的PeopleCode都不会触发。
**用法:**如果最终用户条目没有通过在PeopleCode中实现的验证,我们可以使用SearchSavePeopleCode中的错误和警告语句将最终用户发送回搜索对话框。
- RowSelect: 在任何更新操作模式(更新、更新/显示全部、更正)下的组件生成过程开始时激发。 **注:**执行ScrollSelect或相关函数后也会发生此事件。 **用法:**RowSelectPeopleCode用于过滤数据的外部,因为这些数据正在被读取到复合缓冲区中。
- PreBuild: 在组件生成事件恢复之前激发。 **注:**预构建PeopleCode只与组件关联。 **用法:**此事件通常用于隐藏或取消页面。它还用于设置组件变量
- FieldDefault:必须为真时,在字段最初显示时以编程方式为其设置默认值 **注:**在应用任何页面后,页面字段仍然为空(如果没有指定默认值,如果指定了空值,或者如果为数字字段指定了“a0”,则为真。) **用法:**FieldDefault PeopleCode通常在向组件添加新数据时将字段设置为默认值;也就是说,在添加模式下,当新行插入到ascroll中时。
- FieldFormuta: **注:****不要在您的组件中使用EieldFundPeopleCode。**仅用于将外部PeopleCode函数存储在FCALIB_Record定义中。 **用法:**作为一种惯例,Field公式现在常用于FCALIB_(FunctionLibrary)记录定义中,以存储共享函数。
- Rowinit:发生在组件构建过程和行插入时 **注:**在执行Select或SelectAll Rowset方法或ScrollSelect或相关函数之后也会发生这种情况。 用法:
- PostBuild:PostBuild事件只在组件所有其他事件发生后才会触发。 **用法:**常用于who create Record and When
- Actiave 每次页面被激活时都会触发激活事件。 **注:**对subpage无效 用法:
- FieldEdit FieldEdit事件会触发刚才更改的特定字段和行。 **用法:**验证字段内容
- FieldChange **用法:**处理来自验证字段内容以外的改变
- RowInsert
- RowDelete
- SaveEdit 用户通过系统Save保存后触发 **用法:**您可以使用SaveEdit PeopleCode来验证组件字段中数据的一致性!每当验证涉及多个分量字段时,都应该使用SaveEdit
- SavePreChange SavePreChange事件在SaveEdit完成后触发,没有出现错误。 **用法:**提供了在系统更新数据库之前操作数据的最终机会
- WorkFlow Workflow事件的主要目的是将与工作流相关的PeopleCode与应用程序PeopleCode的其余部分隔离开来 工作流PeopleCode在SavePreChange之后和SavePostChange之前的数据库更新之前立即执行
- SavePostChange
5.事件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BeZH1get-1634795321224)(学习笔记.assets/image-20211014114647112.png)]
6.函数
1.WinMessage(1);
代码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OJmx982b-1634795321224)(学习笔记.assets/image-20211013160142001.png)]
效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXZeTbdd-1634795321225)(学习笔记.assets/image-20211013160117905.png)]
2.error(1)
代码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LjP7EeXr-1634795321225)(学习笔记.assets/image-20211013164647032.png)]
效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-raCwGGNN-1634795321226)(学习笔记.assets/image-20211013164605703.png)]
3.warning(1)
代码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x32HcJFX-1634795321226)(学习笔记.assets/image-20211013164714156.png)]
效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LTbaetbL-1634795321227)(学习笔记.assets/image-20211013164725336.png)]
4.MsgGetText(1,2,3)
如果参数1,参数2可以在7-1配置到值,则显示自定义信息,否则显示当前定义信息
代码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAkDycSo-1634795321227)(学习笔记.assets/image-20211013165705563.png)]
效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-giRi6IVn-1634795321228)(学习笔记.assets/image-20211013165839474.png)]
5.
7.变量
1.%Component:当前上下文组件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b8LGceJW-1634795321228)(学习笔记.assets/image-20211013162132654.png)]
2.%Mode:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSSejOrE-1634795321228)(学习笔记.assets/image-20211013162808394.png)]
3.
7.配置
1.message catalog(消息目录)
主菜单>PeopleTools>实用程序>管理>消息目录
8.快捷键
1.Ctr G
通过报错信息查找代码行数Statement Number
9.App Engine
1.新建App Engine
定义:
1.它是一种用于开发、测试和运行后台数据处理程序的人员工具。
2.开发批处理程序和在线程序,在不需要用户干预的情况下执行大容量的后台处理。
Action:
有8种类型的操作,我们可以包含在一个步骤中,一个步骤可以包含多个步骤。
- SQL
- 此操作用于执行续集(如更新、插入、删除或选择)。
- Do(When,While,Select,Until)
- 通常,Do Action控制节的执行。
- People Code
- 编写人员代码的部分。
- Call Section
- 调用SAMEAE或其他程序中的另一节。
- Log Message
- 根据某些条件向Message_LOG写入消息。
State Record:
它是将值从一个步骤/操作传递到另一个步骤/操作的工作表。每个AE可以有一个或多个与其相关的状态记录。我们使用它作为AE程序的工作存储器。
2.测试
这里运行的是整个Program,不是单一的Section/Step/Action
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2dQrLI6t-1634795321229)(学习笔记.assets/image-20211015152827910.png)]
3.执行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDlpbVfR-1634795321229)(学习笔记.assets/image-20211015152946556.png)]
这里选择的组件PRCSMULTI是接下来要打开页面中一个组件对应的表名,选择了才可以在对应的组件显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YSaymPci-1634795321230)(学习笔记.assets/image-20211015153128993.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Ty9OjaG-1634795321230)(学习笔记.assets/image-20211015153320707.png)]
选择要执行的App Engine
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Agu5CKKl-1634795321230)(学习笔记.assets/image-20211015153408346.png)]
查看运行情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6QlyN4he-1634795321231)(学习笔记.assets/image-20211015153513568.png)]
通过点击刷新按钮,查看任务运行状态
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cLgEJ2Nb-1634795321232)(学习笔记.assets/image-20211015153534390.png)]
10.Application Package
11.PeopleSoft集成代理
1.介绍:
PeopleSoft系统提供了PeopleSoft和非PeopleSoft应用标准之间的数字集成。IntegrationBroker是一个经过验证的SOA集成平台,它提供高性能,基于标准的集成。集成点是系统用于与其他PeopleSoft应用程序或外部应用程序通信的接口应用 PeopleSoftlnIntegrationBroker由两个子系统组成:
- 集成网关-驻留在PeopleSoft Web服务器上
- 集成引擎-驻留在应用服务器上。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKGMbb9t-1634795321232)(学习笔记.assets/image-20211018113712508.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jM5U1Ufw-1634795321232)(学习笔记.assets/image-20211018113849110.png)]
2.配置
Step1:配置网关
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mIUdGODn-1634795321233)(学习笔记.assets/image-20211018134644075.png)]
ping网关…
PeopleSoft Listening Connector出现Status:ACTIVE。
Step2:设置节点 设置节点:在我们的系统节点已经设置。如果这是一个新的系统,我们必须在以下方式配置节点。一个系统可以有n个节点,但只有一个本地节点。 外部节点:PSFT_HR(来自CRM数据库。lFIT来自HCM,则此节点为本地节点,CRM节点为Extermall节点)
12.日志打印
1.打印到服务器指定目录
Local File &empfile;
&empfile = GetFile(“C:UsersAdministratorDesktopAE Practicesav_plan_data.txt”, “W”, %FilePath_Absolute);
try
业务
catch Exception &a &empfile.WriteLine(&a.ToString()); end-try;
&empfile.Close();
**注:**这里写的方式会在Close()调用后,会重写文件内容,不是追加。
13.peoplesoft 安全
1.概念图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPoBtRji-1634795321233)(学习笔记.assets/df04e298-ae83-488b-97d3-74e753bd9d32.png)]
2.用户概要
可以从头创建PeopleTools > Security > User Profiles > User Profiles,
也可以复制现有的PeopleTools > Security > User Profiles > Copy User Profiles
用户概要权限
直接与用户关联,而不是他们的角色,就像其他权限列表导航器主页一样。
浏览器主页:
提取为指定权限列表定义的“导航器主页”业务流程
主要:
用户继承登录超时、批量更改定义、安全定义和其他(可通过模块配置)设置
进程概要:
用于批处理安全:授权用户查看输出、更新运行位置和重新启动进程。
运行任何批处理过程都需要
行安全性:
在应用程序中用于数据权限安全,“by class*”。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5UHMP0w-1634795321234)(学习笔记.assets/image-20211020173927703.png)]
角色:概述
权限列表容器
将用户连接到权限列表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-us1jh48K-1634795321234)(学习笔记.assets/image-20211020174050901.png)]
角色:分配成员
Add Permission Lists to the Role 查看“成员”选项卡中的成员
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F924sCaD-1634795321235)(学习笔记.assets/image-20211020174246990.png)]
权限列表:概述
- 网络安全的基本构件
- 附加到角色或直接连接到用户配置文件
- 详细权限列表访问被添加到PSAUTHITEM(由CLASSID)
- 进入PeopleSoft的每个主要领域:
- 查询安全配置文件
- 查询访问组
- 门户/页面访问权限
- 进程安全组
- 登录时间
- Windows开发工具
- Component interfaces
- 消息通道
- Web库、Web服务
- 个性化
- 能够通过电子邮件接收密码
权限列表:在线安全
- 授予对页面的访问权限
- 页面只能通过从菜单到组件的路径访问
- 这可能会非常令人困惑,并且是的遗留映射的产物PS 7.5之前组件的菜单项(门户开始)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-np3EnLOX-1634795321236)(学习笔记.assets/image-20211020175143769.png)]
安全查询
- 所有安全查询摘要 PeopleTools > Security > Common Queries
- 在每个主要对象定义(权限列表、角色、用户等)中也是如此。
- 打开查询(单击要运行查询的链接时,查询的名称位于页面顶部),并检查实际的SQL/TABLE
- 有关所有与安全相关的表的摘要,请参阅本演示文稿结尾处。
- 还请参阅作为类交付品的一部分而包含的安全ERD。
行级安全性:概述
限制对某一地区某些数据的访问的任何手段。
——例如,允许用户只查看其业务单元内的发票 在系统中以多种方式实现。
- 自动:在遵循特定的设计步骤时,通过PeopleTools应用限制 ——对组件的搜索记录以及ps查询中使用的记录。
- 应用程序级别:在人力资源中,应用程序模块有预先构建的机制来限制业务单位、部门、用户、类等。
- 定制:任何机制都可以使用PeopleTools来定制数据访问,以满足您的特定需求
行级安全性:自动(查询和搜索Record)
要求:
——以下字段之一作为键:
- OPRID (用户id)
- OPRCLASS (用户配置文件上的主权限列表)
- ROWSECCLASS (用户配置文件上的行安全权限列表)
结果:
PeopleSoft Query
使用此记录的任何查询都将自动附加到每个包含字段上的where子句筛选条件,以限制其与当前用户匹配
——For example: 对PSOPRCLS的查询将自动附加 “where OPRID = {this userid} and OPRCLASS = {primary perm list for this user}”
Search Record for a Component
对于页面的搜索结果,也将应用与查询相同的过滤;只有在这种情况下,过滤才会对用户隐藏*
HCM行安全性:核心行级安全性(简而言之!)
- 特殊的行级安全性,是hcm特有的。
- 配置目录:Set Up HCM > Security > Core Row Level Security
- 设置取决于您是通过部门树还是其他数据进行安全保护
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NQn6dq6S-1634795321238)(学习笔记.assets/image-20211021094614521.png)]
HCM行安全性:更改部门树访问权限
为每个SETID创建/修改DEPT_SECURITY树:Tree Manager > Tree Manager
提供组织(汇总层次结构)
需要下列固定值:
Name: DEPT_SECURITY, Structure ID: DEPARTMENT
行级安全:查询安全记录(HCM)
安全表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LvTXoaaM-1634795321239)(学习笔记.assets/image-20211021111507336.png)]
参考资料
PeopleBook: Security Administration
– The PDF is included as part of your class deliverables
PeopleSoft HCM 9.2 > Application Fundamentals >
– Understanding PeopleSoft Security
– Understanding Data Permission Security
PeopleSoft HCM 9.2 > PeopleSoft Time and Labor >
– Understanding Static and Dynamic Groups
Via My Oracle Support
– Whitepapers
– Knowledge Base
– Last Resort: Open a case
14.表
学习资料
- https://search.bilibili.com/all?keyword=PeopleSoft &from_source=webtop_search&spm_id_from=333.788
视频目录:
- field & record(sql table实体表) & menu的介绍、创建
- 单表page的介绍、创建
- field & record属性介绍
- 搜索标准,scroll Area & grid的创建,滚动区域的理解
- subrecord & subpage,Tab Separator用法
- SECONDARY PAGE & DERIVED RECORD & PROMPT TABLE
Push Button/Hyperlink Display control field & Related Field Processing Mode (Deffered & Interactive) Static Text & Horizonal Rule Radio Button Field 多Lable 复选框 修改页面title
- 组件的属性介绍:
组件新增一个Page Add、Update/Display、Update/Display All、Correction区别
- 基础知识
组件生命周期(1)
- 组件生命周期(2)
- 组件生命周期(3)
- 组件生命周期(4)
- 组件生命周期(5)
- 组件缓冲区各层级取值、属性设置等
- APP Engine(1)
- APP Engine(2)
- APP Engine(3)
- APP Engine(4)
- APP Engine(5)
- APP Engine(6)
- CI(1)
- CI(2)
- CI(3)
- SQR(1)
- SQR(2)
- SQR(3)
- SQR(4)
- SQR(5)
- 发布项目
- 重用逻辑(方法调用等)
- ApplicationPackage
- 查询管理器
- PeopleSoft集成代理(1)
- PeopleSoft集成代理(2)
学习中问题总结:
- 第7节课中Effet未实际操作,后续需要再看
- record中的Parent Record作用是什么
- PeopleTools>继承代理程序>集成设置>服务>常规中“REST 基本 URL”作用是什么
- 17-18自定义app Engine自定义页面再看一遍
- subrecord & subpage,Tab Separator用法
- SECONDARY PAGE & DERIVED RECORD & PROMPT TABLE
Push Button/Hyperlink
Display control field & Related Field
Processing Mode (Deffered & Interactive)
Static Text & Horizonal Rule
Radio Button
Field 多Lable
复选框
修改页面title
- 组件的属性介绍:
组件新增一个Page
Add、Update/Display、Update/Display All、Correction区别
- 基础知识
组件生命周期(1)
- 组件生命周期(2)
- 组件生命周期(3)
- 组件生命周期(4)
- 组件生命周期(5)
- 组件缓冲区各层级取值、属性设置等
- APP Engine(1)
- APP Engine(2)
- APP Engine(3)
- APP Engine(4)
- APP Engine(5)
- APP Engine(6)
- CI(1)
- CI(2)
- CI(3)
- SQR(1)
- SQR(2)
- SQR(3)
- SQR(4)
- SQR(5)
- 发布项目
- 重用逻辑(方法调用等)
- ApplicationPackage
- 查询管理器
- PeopleSoft集成代理(1)
- PeopleSoft集成代理(2)
学习中问题总结:
- 第7节课中Effet未实际操作,后续需要再看
- record中的Parent Record作用是什么
- PeopleTools>继承代理程序>集成设置>服务>常规中“REST 基本 URL”作用是什么
- 17-18自定义app Engine自定义页面再看一遍
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/203681.html原文链接:https://javaforall.cn