Setting Up Message Chunking
This section provides an overview of message chunking.
Page Name |
Definition Name |
Usage |
---|---|---|
EO_CHUNKRULE |
Define a chunking rule description. |
|
EO_CHUNKBU |
Maintain chunking data for business units. |
|
EO_CHUNKSETID |
Maintain chunking data for setIDs. |
|
EO_RECGRP |
Maintain chunking data for record groups. |
|
EO_ADNODECHUNK_PNL |
Add nodes to existing chunking rules. |
|
EO_ADDSIDNODE_PNL |
Assign business units to a chunking rule. |
|
EO_ADDNODEBU_PNL |
Assign chunking rules to a business unit. |
|
EO_ADDNODESID_PNL |
Assign chunking rules to a setID. |
If you publish to multiple nodes, you might want the messages to be routed based on a specific field. Chunking rules direct the message. You can use the same chunking fields for breaking a large message into smaller messages, as well as for associating messages with a node (based on those same fields). You set up this kind of relationship between nodes and the fields used to break the message apart (break fields) by using chunking message pages.
You can, depending on some XML content-based logic, use message chunking to route and deliver groups of transactions to different third-party nodes.
For example, consider purchase orders. If you run the full batch publish, each third-party node receives an XML message containing all purchase orders that are dispatched, regardless of whether any purchase orders are intended for that particular customer. With chunking, however, you can set up a chunking rule to chunk a message by customer ID. This creates an XML message for each customer that contains only purchase orders intended for that particular customer.
Note: Do not confuse message chunking with queue partitioning. You use queue partitioning to partition a queue by a level zero key field. If a field exists on level zero of the record in the message by which you can uniquely distinguish and group transactions to be processed in parallel, partitioning the message by this field increases performance. Without partitioning, a PeopleSoft subscribing system must process each incoming service operation and its associated message in the order in which the service operation is received according to the Publication ID (PUBID) field.
Use chunking when:
The message data is large, and the subscriber is consistently interested only in part of the data.
Subscribers can more efficiently process the message data by chunking messages.
You have trading-partner-specific content and legally do not want data to be shared among vendors.
You can chunk messages by:
Locations and inventory shipments by business unit.
Customers by setID.
Employees by department or company.
Sales order acknowledgements by setID and customer ID.
Purchase orders and purchase order changes by setID and vendor ID.
To maximize performance and prevent application developers from maintaining complicated views of the data, create staging or temporary tables that contain the chunking fields as the highest order key fields.
Chunking fields can affect performance and alter the options that are available to the Publish utility. The Publish utility creates SQL for each table that is defined in the message object. Tables that are defined in the message can be mapped to an alternative source table or viewed on the Record Mapping page under the Publish Rule Definition page.
The source table (or view) serves two purposes:
It enables the data that must be published to come from a source other than the table that is defined in the message.
It enables the data to be ordered so that the Publish utility can process rows in the correct sequence.
Because the SQL is run only once and includes a subquery against the values in the chunking table, you must define all chunking fields in every table that is used to retrieve data for the message. The SQL order-by clause is set according to the key fields that are defined in the table. The result is that chunking fields must be defined as key fields for the Publish utility to work.
Example of Generated SQL for Chunking
This is an example of SQL that is generated for chunking:
Select * from PS_INV_ITEMS A where EXISTS (Select 'Y' from PS_EO_SETID_EOC B where B.CHUNK_RULE_ID = 'SETID' and B.EFFDT = '20000201' and A.SETID = B.SETID) order by A.SETID, INV_ITEM_ID, EFFDT
The field that you select to chunk on determines the view table that you must create:
Chunking Field Attribute |
Corresponding View Table |
---|---|
Chunking field is a key field in level zero table. |
By rule, the chunking fields are also key fields in the child tables. The key fields of a parent table must be key fields in the child table and in the same order. If the chunking fields are not the highest order key fields, create a view that consists of all fields in the source table, with the chunking fields as the highest order key fields, followed by the remaining key fields from the source table. Then map this view table to the source table on the Record Mapping page under the Publish Rule Definition page. |
Chunking field is not a key field. |
Create a view of the source data that consists of all fields in the source table, with the chunking fields as the highest order key fields, followed by the rest of the key fields from the source table. Then map this view table to the source table on the Record Mapping page under the Publish Rule Definition page. |
Chunking field is not in a source table. |
Create a view table that joins the source table to an existing table that contains the chunking fields. This view must consist of all fields in the source table and the chunking fields from the joined table. The chunking fields are the highest order key fields, followed by the rest of the key fields from the source table. Then map the view table to the source table on the Record Mapping page under the Publish Rule Definition page. |
Example
The following sample SQL code creates a view table that joins the PS_OMEC_CP_OPT_DET source table to an existing PS_OMEC_HDR_OUT table that contains the chunking fields. The B.SETID_CUSTOMER and the B.CUST_ID chunking fields are the highest order key fields from the joined table (PS_OMEC_HDR_OUT), followed by the rest of the key fields from the source table (PS_OMEC_CP_OPT_DET).
SELECT B.SETID_CUSTOMER , B.CUST_ID , A.BUSINESS_UNIT , A.ORDER_NO , A.ORDER_INT_LINE_NO , A.CP_MODE , A.CP_COMP_SEQ , A.OPTION_NAME , A.OPTION_VALUE , A.OPTION_DESC , A.VAR_TYPE , A.VAR_LENGTH , A.VAR_DECIMAL , A.PROCESS_INSTANCE , A.AUDIT_ACTN , A.IN_PROCESS_FLG FROM PS_OMEC_CP_OPT_DET A , PS_OMEC_HDR_OUT B WHERE A.BUSINESS_UNIT = B.BUSINESS_UNIT AND A.ORDER_NO = B.ORDER_NO
The chunking rule consists of four tables:
Level |
Table |
Description |
---|---|---|
Level 0 |
EO_CHUNKRULE |
A system table delivered with live data. |
Level 1 |
EO_CHUNKEFFDT |
A system table delivered with live data. When a chunking rule is saved, a row is added to this table with the effective date (EFFDT) field automatically populated from the current date and the effective status set to Active. |
Level 2 |
EO_CHUNKNODE |
This is not a system table and is delivered empty. |
Level 3 |
NAME_EOC |
A user-defined chunking table. |
Note: All user-defined chunking table names must end in _EOC.
Oracle provides three standard tables: EO_BUSUNIT_EOC for business unit values, EO_SETID_EOC for setID values, and EO_RECGRP_EOC for record group values. The different types of user-defined chunking tables are:
Table Type |
Description |
---|---|
Derived Table |
Contains only the chunking fields. This table can be used by the Publish utility to chunk the message whenever the value of the chunking field changes. In derived tables, no relationship exists between the value of the chunking fields and message node names that are used to route the message. OnRoute PeopleCode needs hard-coded routing logic or additional tables to route the message to the appropriate nodes. |
SQL Tables |
Contains the following fields:
This table limits the published data to the values of the chunking fields in the chunking table and contains the message node name that is used to route the message. |
Alternate Chunking Tables |
Enables reuse of existing chunking tables. This table must end in _EOV. |
Use the Chunking Rule page (EO_CHUNKRULE) to define a chunking rule description.
Navigation
Image: Chunking Rule page
This example illustrates the fields and controls on the Chunking Rule page. You can find definitions for the fields and controls later on this page.
![Chunking Rule page](img/i-1de106ban-7efb.png)
Use this page to define a chunking rule description.
Chunk fields are the chunking fields that are defined in the Chunk Table field.
The chunking fields appear in this scroll area to verify that the correct chunking table was entered. Oracle provides chunking rules for business unit and setID for all application databases. Adding a new chunking rule inserts a row into the EO_CHUNKEFFDT table, with a default effective date (EFFDT) of the current date.
Use the BusUnit Mapping (business unit mapping) page (EO_CHUNKBU) to maintain chunking data for business units.
Navigation
Image: BusUnit Mapping page
This example illustrates the fields and controls on the BusUnit Mapping page. You can find definitions for the fields and controls later on this page.
![BusUnit Mapping page](img/i-1de106ban-7ef3.png)
Use this page to maintain chunking data for business units.
All four levels of the chunking rule tables appear.
Oracle provides chunking tables for business unit, setID and record group that are maintained by a series of components (such as components that are created for maintaining the business unit chunking table).
You can use each component to update the underlying relationship between the business unit and the subscribing nodes. You can maintain the data either by business unit or by node, individually or as a group, to reduce the amount of entry work.
Use the SetId Mapping page (EO_CHUNKSETID) to maintain chunking data for setIDs.
Navigation
Image: SetId Mapping page
This example illustrates the fields and controls on the SetId Mapping page. You can find definitions for the fields and controls later on this page.
![SetId Mapping page](img/i-1de106ban-7f02.png)
Use this page to maintain chunking data for setIDs.
All four levels of the chunking rule tables appear.
Oracle provides chunking tables for business unit, setID and record group that are maintained by a series of components (such as components that are created for maintaining the business unit chunking table).
You can use each component to update the underlying relationship between the business unit and the subscribing nodes. You can maintain the data either by business unit or by node, individually or in a group, to reduce the amount of entry work.
Use the Eo Recgrp (Enterprise Component Record Group) page (EO_RECGRP) to maintain chunking data for record groups.
Navigation
Image: Eo Recgrp page
This example illustrates the fields and controls on the Eo Recgrp page. You can find definitions for the fields and controls later on this page.
![Eo Recgrp page](img/i-1de106ban-7ef1.png)
Use this page to maintain chunking data for record groups.
All four levels of the chunking rule tables appear.
Oracle provides chunking tables for business unit, setID and record group that are maintained by a series of components (such as components that are created for maintaining the business unit chunking table).
You can use each component to update the underlying relationship between the business unit and the subscribing nodes. You can maintain the data either by business unit or by node, individually or in a group, to reduce the amount of entry work.
Use the Add Nodes to Chunk Rule page (EO_ADNODECHUNK_PNL) to add nodes to existing chunking rules.
Navigation
Image: Add Nodes to Chunk Rule page
This example illustrates the fields and controls on the Add Nodes to Chunk Rule page. You can find definitions for the fields and controls later on this page.
![Add Nodes to Chunk Rule page](img/i-1de106ban-7eb8.png)
Use this page to add nodes to existing chunking rules.
To add nodes to an existing chunking rule:
Select the check box in the Add column of the nodes that you defined earlier.
Click the Save button to display the Add Chunk Values column.
When you select a node and then click Save, the ADD button in the Add Chunk Values column appears.
Click the Add button in the Add Chunk Values column for the nodes that you want to add.
The Quick Map page appears.
Use the Quick Map page (EO_ADDSIDNODE_PNL) to assign business units to a chunking rule.
Navigation
Click the Add button on the Add Notes to Chunk Rule page. This button is available after you have added nodes to the chunking rule.
Image: Quick Map page
This example illustrates the fields and controls on the Quick Map page. You can find definitions for the fields and controls later on this page.
![Quick Map page](img/i-1de106ban-7eb2.png)
Use this page to a Assign business units to a chunking rule.
If you previously accessed business unit chunking rules, you can add business units to a chunking rule. If you previously accessed setIDs, you can add setIDs to a chunking rule.
Note: You cannot access the Quick Map page without first using either the BusUnit Mapping page or the SetId Mapping page to add an effective-dated node to the chunking rule ID.
Field or Control |
Definition |
---|---|
Select All and Deselect All |
Click to add or remove all business units that are assigned to the node. Add check boxes are selected for business units that are assigned to the node. |
Use the Map Business Unit page (EO_ADDNODEBU_PNL) to assign chunking rules to a business unit.
Navigation
Image: Map Business Unit page
This example illustrates the fields and controls on the Map Business Unit page. You can find definitions for the fields and controls later on this page.
![Map Business Unit page](img/i-1de106ban-7ee9.png)
Use this page to assign chunking rules to a business unit.
Field or Control |
Definition |
---|---|
Select All and Deselect All |
Click to add or remove all nodes that are assigned to the business unit. Add check boxes are selected for nodes that are assigned to the business units. |
Use the Map Set IDs page (EO_ADDNODESID_PNL) to assign chunking rules to a setID.
Navigation
Image: Map Set IDs page
This example illustrates the fields and controls on the Map Set IDs page. You can find definitions for the fields and controls later on this page.
![Map Set IDs page](img/i-1de106ban-7ed4.png)
Use this page to assign chunking rules to a setID.
Field or Control |
Definition |
---|---|
Select All and Deselect All |
Click to add or remove all message nodes that are assigned to the setID. Add check boxes are selected for message nodes that are assigned to the setIDs. |