Special Cases¶
IFS Data Synchronization modeling done in accordance with standard coding practices. However there are some scenarios where developer have to do some manual handling of code in order to complete code generation. Following list some of those special cases which developers should attend manually.
- Site Specific Synchronization
- Custom References in Entity
- Synchronizing Entities with Generalization
Site Specific Synchronization¶
In site specific data synchronization code generation property DbDataSyncSite
usually take value from database column. However you can also use a function call as property value. Then the data synchronization trigger gets site parameter value from that function call.
Consider following when using function call for property value of DbDataSyncSite
.
- Should be a valid PL/SQL API call.
- Function call should have colon ( :) character before every argument value when the argument is a column value of the LU table.
Example:
Function call with database column name as argument
DbDataSyncSite "Demo_Order_API.Get_contract(:ORDER_NO)"
Function call with text as argument
DbDataSyncSite "Demo_Order_API.Get_contract(:ORDER_NO, 'SUPPLIER')"
Function call with number as argument
DbDataSyncSite "Demo_Order_API.Get_contract(:ORDER_NO,'SUPPLIER', 200)"
Custom References in Entity¶
When an entity have custom reference elements in the model, data synchronization does not generate reference method. Instead it generates a custom reference method without code implementation.
Developer has to look into custom reference implementation of that particular column in standard LU and decide what to implement on generated code. Normally developer can implement same method in receiving plsql file and add custom reference validation.
Example:
A custom reference of a column would look like shown below in entity.
entityname DemoOrderCharges;
component DEMO;
codegenproperties {
DbDataSync "true";
}
attributes {
parentkey OrderId NUMBER PMI--;
public ChargeAmount NUMBER A-I--;
}
associations {
reference DemoOrderRef DemoOrder(OrderId) {
DbCheckImplementation "custom";
}
}
Generated synchronization receive package Demo_Order_Charges_RRP has a method generated without implementation.
PROCEDURE Check_Demo_Order_Ref___ (
newrec_ IN OUT NOCOPY demo_order_charges_tab%ROWTYPE )
IS
BEGIN
-- NO IMPLEMENTATION WRITTEN YET
END Check_Demo_Order_Ref___;
Synchronizing Entities with Generalization¶
Entities can be generalize using keyword basedOn
. LUs generalized using this keyword have database column called row_type
. Data synchronization of such a generalized LU will result in synchronizing data based on value in row_type
.
Code automatically generated for these generalized LUs. However parent LU should not be synchronized if the entity has DbImplemantation
of type "abstract".