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.
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
.
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)"
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___;
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".