HCL Workload Automation, Version 9.4

Referential integrity check

HCL Workload Automation automatically performs referential checks to avoid lack of integrity in the object definitions in the database whenever you run commands that create, modify, or delete the definition of a referenced object. These are the checks performed by the product:
  • Every time you use a command that creates a new object in the database, HCL Workload Automation checks that:
    • An object of the same type and with the same identifier does not already exist.
    • The objects referenced by this object already exist in the database.
  • Every time you run a command that modifies an object definition in the database, HCL Workload Automation checks that:
    • The object definition to be modified exists in the database.
    • The objects referenced by this object exist in the database.
    • To avoid integrity inconsistencies, the object definition does not appear in the definition of an object belonging to the chain of his ancestors.
  • Every time you run a command that deletes an object definition in the database, HCL Workload Automation checks that:
    • The object definition to be deleted exists in the database.
    • The object definition to be deleted is not referenced by other objects defined in the database.

Note that there is no referential integrity check for event rules.

Table 1 shows, for each object type, the identifiers that are used to uniquely identify the object in the database when creating or modifying object definitions:
Table 1. Object identifiers for each type of object defined in the database
Object type Object identifiers
domain domainname
workstation workstationname (checked across workstations and workstation classes)
workstation class workstationclassname (checked across workstations and workstation classes)
calendar calendarname
job definition workstationname and jobname
user workstationname and username
job stream workstationname and jobstreamname and, if defined, validfrom
job within a job stream workstationname and jobstreamname, jobname, and, if defined, validfrom
resource workstationname and resourcename
prompt promptname
variable table variabletablename
variable variabletablename.variablename
event rule eventrulename
access control list securitydomainname
security domain securitydomainname
security role securityrolename
In general, referential integrity prevents the deletion of objects when they are referenced by other objects in the database. However, in some cases where the deletion of an object (for example a workstation) implies only the update of a referencing object (for example a workstation class that includes it), the deletion might be allowed. Table 2 shows all cases when a referenced object can be deleted even if other objects reference it:
Table 2. Object definition update upon deletion of referenced object
Object References Upon deletion of the referenced object …
Internetwork Dependency Workstation … remove the dependency from the job or job stream
External Follows Depend Job Stream … remove the dependency from the job or job stream
Job … remove the dependency from the job or job stream
Internal Dependency Job … remove the dependency from the job or job stream
Workstation Class Workstation … remove the workstation from the workstation class
Table 3 describes how the product behaves when it is requested to delete an object referenced by another object with using a specific relationship:
Table 3. Referential integrity check when deleting an object from the database
Object to be deleted Referenced by object Relationship Delete rule
domain A domain B domain A is parent of domain B An error specifying the existing relationship is displayed.
workstation B workstation B belongs to domain A An error specifying the existing relationship is displayed.
workstation A workstation B workstation A is host for workstation B An error specifying the existing relationship is displayed.
job B job B is defined on workstation A An error specifying the existing relationship is displayed.
job stream B job stream B is defined on workstation A An error specifying the existing relationship is displayed.
user B user B is defined on workstation A An error specifying the existing relationship is displayed.
job stream B workstation A works as network agent for internetwork dependencies set in job stream B Both workstation A and the internetwork dependency are deleted
job stream B job stream B has a file dependency from a file defined on workstation A Both workstation A and the file dependency are deleted
job B within job stream B workstation A works as network agent for internetwork dependencies set in job B Both workstation A and the internetwork dependency are deleted
job B within job stream B job B has a file dependency from a file defined on workstation A Both workstation A and the file dependency are deleted
resource B resource B is defined on workstation A An error specifying the existing relationship is displayed.
file B file B is defined on workstation A An error specifying the existing relationship is displayed.
workstation class B workstation A belongs to workstation class B Both workstation A and its entry in workstation class B are deleted.
job B within job stream B job B contained in job stream B is defined on workstation A An error specifying the existing relationship is displayed.
job A job B job A is recovery job for job B An error specifying the existing relationship is displayed.
job stream B job A is contained in job stream B An error specifying the existing relationship is displayed.
job stream B job stream B follows job A job A and the follows dependency in job stream B are deleted.
job B within job stream B job B follows job A job A and the follows dependency in job B are deleted.
event rule B job A is in the action definition of event rule B (and does not use variable substitution) An error specifying the existing relationship is displayed.
calendar A job stream B job stream B uses calendar A An error specifying the existing relationship is displayed.
workstation class A job B job B is defined on workstation class A An error specifying the existing relationship is displayed.
job stream B job stream B is defined on workstation class A An error specifying the existing relationship is displayed.
resource B resource B is defined on workstation class A An error specifying the existing relationship is displayed.
file B file B is defined on workstation class A An error specifying the existing relationship is displayed.
resource A job stream B needs dependency defined in job stream B An error specifying the existing relationship is displayed.
job B within job stream B needs dependency defined in job B An error specifying the existing relationship is displayed.
prompt A job stream B prompt dependency defined in job stream B An error specifying the existing relationship is displayed.
job B within job stream B prompt dependency defined in job B An error specifying the existing relationship is displayed.
variable A job stream B variable A is used in job stream B in:
  • in the text of an ad hoc prompt
  • or in the file name specified in a file dependency
variable A is deleted without checking
job B variable A is used in job stream B in:
  • in the text of an ad hoc prompt
  • or in the file name specified in a file dependency
  • or in the value specified for streamlogon
  • or in the value specified for scriptname
variable A is deleted without checking
prompt B variable A is used in the text of prompt B variable A is deleted without checking
variable table A job stream B variable table A is referenced in job stream B variable table A is not deleted
job B variable table A is referenced in job B variable table A is not deleted
prompt B variable table A is referenced in the text of prompt B variable table A is not deleted
job stream A job stream B job stream B follows job stream A job stream A and the follows dependency in job stream B are deleted.
job B within a job stream B job B follows job stream A job stream A and the follows dependency in job B are deleted.
event rule B job stream A is in the action definition of event rule B (and does not use variable substitution) An error specifying the existing relationship is displayed.
security domain A access control list B access control list B is defined on security domain A access control list B is deleted.
security role A access control list B security role A is referenced in access control list B security role A is not deleted.