Hard Coded Rules
Legend:
TP........................... TechProduct SC_present................... a Subscriber Context is attached to ServiceOrderData existing/TP.................. TP is present in Subscriber Context notExisting/TP............... TP is not present in Subscriber Context create_Verb/TP............... verb attribute of TechProductOrderData matches <create_Verb> update_Verb/TP............... verb attribute of TechProductOrderData matches <update_Verb> delete_Verb/TP............... verb attribute of TechProductOrderData matches <delete_Verb> ERRxxx....................... Delta Anayzing raises error and return in o_errMsg ERRxxx
Error cases:
ERR100 | "cannot create <TP>: Already in subscriber context" |
ERR101 | "duplicate create <TP>" |
ERR102 | "cannot create <TP>. Already updated" |
ERR200 | "cannot update <TP>: Not in subscriber context" |
ERR201 | "cannot update <TP>: Was in subscriber context and has been marked for deletion" |
ERR300 | "cannot delete <TP>: Not in subscriber context" |
ERR301 | "duplicate delete <TP>" |
If "Delta Analyzing" raises an error (ERR10x, ERR20x and ERR30x) the choice is given to the user (per domain) to abort Delta Analyzing and reject ServiceOrder on the first error encountered or to raise a warning and remove the TPO from the execution list. This behavior is configured in the domain definition with a new configurable parameter: "onDeltaAnalyzingError" = "reject/remove", default value is "reject".
The following two lines clarify the optimization table:
-
"SC present + existing/TP + create_Verb/TP = ERR100" means: Delta Analyzing is working on "<create_Verb>/TP". SOD has a Subscriber Context, and TP is in the subscriber Context => Delta Analyzing raises ERR100
-
"create_Verb/TP + delete_Verb/TP = delete_Verb/TP" means: Delta Analyzing is working on "<delete_Verb>/TP". TP is in the target Context, marked for creation. Delta Analyzing marks TP for deletion (delete_Verb)
SC present + existing/TP + create_Verb/TP = ERR100 SC present + existing/TP + update_Verb/TP = update_Verb/TP SC present + existing/TP + delete_Verb/TP = delete_Verb/TP SC present + notExisting/TP + create_Verb/TP = create_Verb/TP SC present + notExisting/TP + update_Verb/TP = ERR200 SC present + notExisting/TP + delete_Verb/TP = ERR300 create_Verb/TP + create_Verb/TP = ERR101 create_Verb/TP + update_Verb/TP = update_Verb/TP create_Verb/TP + delete_Verb/TP = delete_Verb/TP if (all parameters of delete_Verb/TP are within dataset of create_Verb/TP) delete_Verb/TP + create_Verb/TP = silently ignore TP else delete_Verb/TP + create_Verb/TP = update_Verb/TP if (SC present + existing/TP) delete_Verb/TP + update_Verb/TP = ERR201 else delete_Verb/TP + update_Verb/TP = update_Verb/TP delete_Verb/TP + delete_Verb/TP = ERR301 update_Verb/TP + create_Verb/TP = ERR102 update_Verb/TP + update_Verb/TP = update_Verb/TP update_Verb/TP + delete_Verb/TP = delete_Verb/TP