Using PeopleCode in Application Engine Programs在应用引擎程序中使用PeopleCode

This section provides an overview of PeopleCode and Application Engine programs and discusses how to:

本节概述了PeopleCode和应用程序引擎程序,并讨论了如何:

  • Decide when to use PeopleCode.
  • 决定何时使用PeopleCode。
  • Consider the program environment.
  • 考虑程序环境。
  • Access state records with PeopleCode.
  • 使用PeopleCode访问状态记录。
  • Use If/Then logic.
  • 使用如果/那么逻辑。
  • Use PeopleCode in loops.
  • 在循环中使用PeopleCode。
  • Use the AESection class.
  • 使用AESection类。
  • Make synchronous online calls to Application Engine programs.
  • 对应用程序引擎程序进行同步联机调用。
  • Use the file class.
  • 使用文件类。
  • Call COBOL modules.
  • 调用COBOL模块
  • Call PeopleTools application programming interfaces (APIs).
  • 调用PeopleTools应用程序编程接口(API)。
  • Use the CommitWork function.
  • 使用CommitWork功能。
  • Call WINWORD Mail Merge
  • 调用WINWORD邮件合并
  • Use PeopleCode examples.
  • 使用PeopleCode示例。
Understanding PeopleCode and Application Engine Programs 理解PeopleCode和应用引擎程序

Inserting PeopleCode into Application Engine programs enables you to reuse common function libraries and improve performance. In many cases, a small PeopleCode program used instead of Application Engine PeopleCode is an excellent way to build dynamic SQL, perform simple If/Else edits, set defaults, and perform other tasks that do not require a trip to the database.

将PeopleCode插入到Application Engine程序中使您能够重用公共函数库并提高性能。在许多情况下,一个小的PeopleCode程序用来代替应用程序引擎PeopleCod是一个很好的方式来构建动态SQL,执行简单的If/else编辑、设置默认值和执行其他不需要访问数据库的任务。

Scope of Variables

变量的作用域

This table presents the different types of variables typically used in Application Engine programs and their scope:

下表显示了应用程序引擎程序中通常使用的不同类型的变量及其作用域:

Type of Variable

Scope

Comments

State record (work record)

Transaction (unit of work)

Using a work record as your Application Engine state record means that the values in the work record cannot be committed to the database. Commits happen as directed, but any values in work records are not retained after a commit.

State record (database record)

Application Engine program

Using a database record as your Application Engine state record preserves the values in the state record on commit, and the committed values are available in the event of a restart.

Local PeopleCode variables

PeopleCode program

Local PeopleCode variables are available only for the duration of the PeopleCode program that is using them.

Global PeopleCode variables

Application Engine program

Global PeopleCode variables are available during the life of the program that is currently running. Any global PeopleCode variables are saved when an Application Engine program commits and checks points; therefore, they are available in the event of a restart.

Component PeopleCode variables

Application Engine program

Component PeopleCode variables act like global variables in Application Engine.

Action Execution Order

操作执行顺序

A step can contain only one PeopleCode action because no other types of actions are required within a step in conjunction with a PeopleCode action (or program). If you include other actions with your PeopleCode action within the same step, keep in mind the hierarchy when you run it.

一个步骤只能包含一个PeopleCode操作,因为在一个步骤中不需要与PeopleCode操作(或程序)结合的其他类型的操作。如果您在同一步骤中包含其他操作与您的People Code操作,请在运行它时记住层次结构。

With PeopleCode actions, Application Engine runs the PeopleCode program before the SQL, Call Section, or Log Message actions, but a PeopleCode program runs after any program flow checks.

使用PeopleCode操作时,应用程序引擎将在SQL、CallSection或日志消息操作之前运行PeopleCode程序,但在任何程序流检查之后运行PeopleCode程序。

Because multiple action types exist, they must execute in agreement within a system; therefore, the order in which actions execute is significant. At runtime, actions defined for a given step are evaluated based on their action type. All of the action types exist within a strict hierarchy of execution. For example, if both a Do When action and a PeopleCode action exist within a given step, then the Do When action always runs first.

由于存在多个操作类型,它们必须在系统中以一致的方式执行;因此,操作的执行顺序非常重要。在运行时,为给定步骤定义的操作将根据其操作类型进行评估。所有操作类型都存在于严格的执行层次结构中。例如,如果两个Do当操作和PeopleCode操作存在于给定步骤中时,则Do When操作总是第一个运行。

The following example shows the sequence and level of execution for each type of action:

下面的例子显示了每种作用方式的执行顺序和水平:

This is an example of action execution hierarchy.

Deciding When to Use PeopleCode 决定何时使用PeopleCode

Application Engine is not intended to run programs that include only PeopleCode actions. The primary purpose of Application Engine is to run SQL against your data.

应用程序引擎不用于运行仅包括PeopleCode操作的程序。应用程序引擎的主要目的是对数据运行SQL。

Use PeopleCode primarily for setting If, Then, Else logic constructs, performing data preparation tasks, and building dynamic portions of SQL statements; rely on SQL to complete the bulk of actual program processing. Also use PeopleCode to reuse previously developed online logic. PeopleCode is the tool to use to take advantage of new technologies such as component interfaces and application classes.

PeopleCode主要用于设置If,Then,Else逻辑结构,执行数据准备任务,构建SQL语句的动态部分;依靠SQL来完成大量的实际程序处理。还可以使用PeopleCode重用以前开发的在线逻辑。PeopleCode是一种利用新技术(如组件接口和应用程序类)的工具。

Most programs must verify that a certain condition is true before they run a particular section. For example, if the hourly wage is less than or equal to X, do Step A; if not, fetch the next row. In certain instances, you must modify variables that exist in a state record. PeopleCode enables you to set state record variables dynamically.

大多数程序在运行特定的节之前必须验证某个条件为真。例如,如果小时工资小于或等于X,则执行步骤A;如果不是,则获取下一行。在某些情况下,必须修改存在于状态记录中的变量。PeopleCode允许您动态地设置状态记录变量。

Avoid rowset processing in an Application Engine program. Loading data into a rowset can use a significant amount of memory, which this formula approximates:

避免在应用程序引擎程序中处理行集。将数据加载到行集中可能会使用大量的内存,以下公式近似为:

mem = nrows * (row overhead + nrecords * (rec overhead + nfields * (field overhead) + average cumulative fielddata)) where

Mem = n 行*(行开销+ n 记录*( rec 开销+ nfields +*(现场开销+平均累计现场数据))

  • mem is the amount of memory required to store the rowset.
  • 其中·mem是存储行集所需的内存量。
  • nrows is the number of rows.
  • nrows是行数。
  • row overhead is the overhead per row.
  • 行开销是指每行的开销。
  • nrecords is the number of records per row.
  • n record是每行的记录数。
  • rec overhead is the record overhead (approximately 40 bytes).
  • rec开销是记录开销(大约40字节)。
  • nfields is the number of fields in the record.
  • nfields是记录中的字段数。
  • field overhead is the overhead per field (approximately 80 bytes).
  • 字段开销是每个字段的开销(大约80字节)。
  • average cumulative fielddata is the average amount of data per field.
  • 平均累积字段数据是每个字段的平均数据量。

Using this formula, a rowset containing 500,000 rows with one record per row, 50 fields, and 200 bytes per field would require approximately 2.3 gigabytes of memory.

使用这个公式,包含500,000行,每行一条记录的行集,50个字段,每个字段200字节将需要大约2.3千兆字节的内存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/212222.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】基于非侵入式负荷检测与分解的电力数据挖掘

文章目录 前言一、案例背景二、分析目标三、分析过程四、数据准备4.1 数据探索4.2 缺失值处理 五、属性构造5.1 设备数据5.2 周波数据 六、模型训练七、性能度量文末送书:《Python数据挖掘:入门、进阶与实用案例分析》 前言 本案例将根据已收集到的电力…

Kafka 控制器(controller)

Kafka 控制器(controller) 在kafka集群中 会存在一个或者多个broker(一个服务器就是一个broker),其中有一个broker会被选举为控制器 kafka controller ,负责管理整个集群中所有副本、分区的状态&#xff0…

软件流程设计之事件风暴EventStorming

最近新开了一个公众号,有兴趣可以关注一下。时不时就复活去更新一下。 最近在带几个新员工,新员工是学校刚毕业的,习惯于做一些导师或者师兄师姐们拆解好的任务,有很明确的功能描述,甚至喂饭喂到什么地步呢&#xff0…

激光雷达与惯导标定 | Lidar_IMU_Init : 编译

激光雷达与惯导标定:Lidar_IMU_Init 编译 功能包安装安装ceres-solver-2.0.0 (注意安装2.2.0不行,必须要安装2.0.0) LI-Init是一种鲁棒、实时的激光雷达惯性系统初始化方法。该方法可校准激光雷达与IMU之间的时间偏移量和外部参数…

计算机网络之网络层

一、概述 主要任务是实现网络互连,进而实现数据包在各网络之间的传输 1.1网络引入的目的 从7层结构上看,网络层下是数据链路层 从4层结构上看,网络层下面是网络接口层 至少我们看到的网络层下面是以太网 以太网解决了什么问题? 答…

事务对隔离性的原理理解

脏读:两个事务并行,A事务做的一切,B事务就可以立刻知道。不可重复读:一个事务受到另一个事务的影响导致连续的select不统一,RU、RC都会导致。幻读:一般的数据库在可重复读情况的时候,无法屏蔽其…

leetcode刷题日志-70爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 1 阶2 阶 示例 2: …

【C++】泛型编程 ⑭ ( 类模板示例 - 数组类模板 | 容器思想 | 自定义类可拷贝 - 深拷贝与浅拷贝 | 自定义类可打印 - 左移运算符重载 )

文章目录 一、容器思想1、自定义类可拷贝 - 深拷贝与浅拷贝2、自定义类可拷贝 - 代码示例3、自定义类可打印 - 左移运算符重载 二、代码示例1、Array.h 头文件2、Array.cpp 代码文件3、Test.cpp 主函数代码文件4、执行结果 一、容器思想 1、自定义类可拷贝 - 深拷贝与浅拷贝 上…

【分布式】分布式事务及其解决方案

目录 一、分布式事务二、分布式事务的解决方案1. 全局事务(1)DTP模型(2) 两阶段提交协议(2PC)原理二阶段提交的缺点 (3)三阶段提交协议(3PC)原理 2. 基于可靠…

计算机视觉项目-人脸识别与检测

😊😊😊欢迎来到本博客😊😊😊 本次博客内容将继续讲解关于OpenCV的相关知识 🎉作者简介:⭐️⭐️⭐️目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉深度学…

机器学习---最大似然估计和贝叶斯参数估计

1. 估计 贝叶斯框架下的数据收集,在以下条件下我们可以设计一个可选择的分类器 : P(wi) (先验);P(x | wi) (类条件密度) 但是。我们很少能够完整的得到这些信息! 从一个传统的样本中设计一个分类器: ①先验估计不成问题 ②对类条件密度…

mysql:修改密码的几种方式

背景 当我们 brew install mysql 新安装 mysql 的时候,是没有密码的,我们可以直接通过 mysql -u root 连接上。但是密码还是要设置的,一是为了安全,二是有些数据库软件如 Sequel 连接都是必须要密码的,接下来我们来看…