Change ProcessThis section describes the process to follow when changing schema. Perform all changes using this 2-step process:
If you decide to modify one of the supplied programs, clone the original program and change the name of the cloned program. The names for all ENOVIA product programs are prefixed with "eService[name of install directory]" or "emx". Do not change this prefix and do not create custom programs using the eService prefix. How the System Identifies Administrative Objects: Symbolic Name PropertiesThe system identifies administrative objects using symbolic names rather than standard object names. Symbolic names have this syntax: [administrative object type name]_[original object name with no spaces] For example, the symbolic name of the Originator attribute is attribute_Originator. The symbolic name of the Product Manager role is role_ProductManager. If you change the name of the Originator attribute to Creator, the symbolic name remains attribute_Originator, allowing the system to identify the attribute even though the name has changed. Do not change the symbolic name for an administrative object. If you do, objects in the schema will no longer be able to reference the object. Additionally, new software versions will be unable to identify the object for updating. Whenever you refer to an administrative object within a program (Tcl or JSP program), you must use the object's symbolic name and not the standard name ("policy_Person", not "Person"). You must also use the symbolic name when specifying an administrative object as an input parameter that is to be passed to a program. For example, when specifying the eService Safety Vault, an attribute whose value is passed to the eServicecommonObjectGenerator.tcl program, you must use the symbolic name for the vault. The symbolic names for all administrative objects are stored as properties of a program object called eServiceSchemaVariableMapping.tcl. Each property assigns a symbolic name to an administrative object. For example, this diagram shows the properties on the program object eServiceSchemaVariableMapping.tcl that assign a symbolic name to an attribute, type, and vault object. For samples of JSP code that get the symbolic name for an administrative object, see Getting Symbolic Names. For a sample of how to get an administrative object name from a symbolic name, see Getting Administrative Object Names from Symbolic Names. For instructions on how to view symbolic name properties, see Viewing Administrative Properties. Tracking administrative objects using fixed symbolic names has several advantages:
Properties of Administrative ObjectsEvery administrative object has five properties that facilitate upgrades.
For instructions on how to view administrative properties, see Viewing Administrative Properties. The following diagram is the same as the one shown in the previous section, which shows the symbolic name properties for several administrative objects, but the five properties for each administrative object have been added. How the System Identifies State NamesLike administrative objects, the system identifies policy states using symbolic names. For example, the symbolic name for the Active state of the Person policy is state_Active. Symbolic names for states are stored as properties on the policy object. This diagram, which shows all the properties for several administrative objects, is the same as the one shown in the previous section except the properties have been added for a policy. Resolving Schema SimilaritiesIf you have a custom administrative object similar to a ENOVIA Business Process Services object, you must decide which one to use. The objects may have the same name and/or they may have the same symbolic name. As described in "How the Installation Handles Schema Similarities" in the Live Collaboration BPS Installation Guide, ENOVIA Business Process Services handles these two cases differently when installing. However many of the decisions and procedures for resolving the similarities are the same. To help find similarities, look in the installation log file. This file lists administrative objects that were renamed due to name collisions, and MQL add and modify commands that were skipped because an object with the same symbolic name already exists in the database. When ENOVIA Business Process Services has an object that is similar to your custom object, decide whether the objects are really the same. It may be that they serve different functions and are both needed. In that case, you can rename one or both as needed. If the objects are the same, you must decide which one to use. It is usually most efficient to use ENOVIA Business Process Services's administrative object instead of your object. Using the ENOVIA Business Process Services's object instead of your object usually involves:
Another alternative is to use your object instead of the ENOVIA Business Process Services object. This alternative usually involves more work than using the ENOVIA Business Process Services object. Replacing a ENOVIA Business Process Services object with your own object involves:
Reserved Prefixes, Names, and CharactersThis section contains general guidelines for entering data and names. All FieldsThe tilde (~) and pipe (|) characters are reserved for use in the programming code for ENOVIA products. Do not use these characters when entering data for any field in ENOVIA Business Process Services or any ENOVIA product, including fields in application Web pages, ENOVIA Matrix Navigator, and Business Modeler. This restriction includes names, descriptions, comments, and all other attributes and properties. Administrative Object NamesENOVIA products are designed to let you use your exact business terminology rather than cryptic words that have been modified to conform to the computer system limitations. Names are case-sensitive and spaces are allowed. You can use complete names rather than contractions, making the terminology in your system easier for people to understand. Generally, name lengths can be a maximum of 127 characters. Leading and trailing spaces are ignored. You should avoid using characters that are programmatically significant to the applications. These characters are specified as follows for Administrative Object Names: @ , * ? [ ] # $ { } \\\" < > | ' These characters are specified as follows for Administrative Object Descriptions, and other related Text fields: # $ { } To configure the system to allow the use of the above-listed special characters, see emxSystem.properties. Also, do not prefix any administrative object (types, relationships, attributes, programs, wizards, etc.) with "eService". Users should never use special characters for companies, business units, or persons, or for any attribute whose value is used in a Tcl or MQL script. Program ObjectsYou need to follow specific rules when naming program objects.
About Changing Administrative NamesYou need to follow specific rules when changing administrative object names. Keep these points in mind when changing administrative object names:
For example, suppose you rename the Part type to Item type. Onscreen text defined by retreiving data from the database, such as a select expression, shows the updated name, Item. If you updated the internationalized string resource ID and value, international versions also display the updated type name. However, a menu with the label "Create Part" will not be updated because the label is defined using a string resource and not using a macro or select expression. To update the menu label, you need to change the value for the string resource from "Create Part" to "Create Item". For instructions on changing onscreen text using string resource properties, see Changing Onscreen Text. Do not change the names of program objects installed with the ENOVIA products. The names for these programs are prefixed with "eService[name of install directory]". Programs in the Schema directory are prefixed with "eService" or the application name only. Do not change this prefix and do not create custom programs using the eService or emx prefixes. If you need to modify the name of a ENOVIA product program, clone the program and change the name of the cloned program. If you rename objects that are referenced in policy expression accesses, you must update any expressions that reference the object names. See Administrative Objects Used in Expression (Filter) Accesses. About Creating Custom TypesYou can create custom object types based on existing ENOVIA types by creating a subtype (deriving the new type from an existing type). By basing the custom type on an existing type, the custom type inherits all triggers from the existing type and you do not need to manually assign them to the custom type. When doing so, you should carefully consider which type you want to use to derive the custom type from. For example, you may have 2 similar types that have a different combination of triggers. Or, triggers can be assigned at different levels in a type hierearchy. Take this type hierarchy for example. IEF Family is the parent type of IEF Assembly Family. If you derive your custom type from IEF Family, your type does not inherit the delete trigger. If the user deletes an object of the custom type, any instances of that object would not be deleted (controlled by the delete trigger) and for this type, the user does not have a way to delete instances which would remain in the database. For this example, you would want to use IEF Assembly Family as the derived from type. See the Business Modeler Guide for details on creating subtypes. To register the new type, refer to Registering Your Own Administrative Objects. You can also add a number generator to the custom type as described in Configuring Automatic Business Object Naming. Automatic Business Object NamingWhen a user creates a business object, it is often convenient and sometimes necessary for the system to create a unique name for the object. For example, when a user creates an ECR, the system creates an ECR object and generates a name automatically. This name becomes a unique ID that distinguishes the ECR from all other ECRs. Before you configure automatic naming (see Configuring Automatic Business Object Naming), these sections describe how it works. ENOVIA Business Process Services uses automatic naming for these types of business objects:
The information in this section applies to these types and to automatically-named types used by any of the ENOVIA products. Naming ConventionsAutomatic naming is defined and can be configured per object type. You can use one naming convention for ECRs, and another convention for CAD Drawings. To find out which object types are named automatically, refer to the user guide that accompanies your ENOVIA product(s). The automatic naming conventions for each application are suggestions only. You can configure the naming as appropriate for your business processes. Automatic names contain a number that increments by 1 for each object that is created. For example, if the number for the first object created is "0000100", the number for the second object created would then be "0000101", and so on. By default, each object name contains a prefix that is an abbreviation of the object type name. The prefix for ECRs is "ECR", so the first object is named "ECR0000100". You can change this prefix and you can add a suffix to the name. If required by your business process, you can set up automatic naming so that whenever an object of a particular type (called the primary type) is created, additional objects of another type are also created. For example, if your business process requires that each ECR is accompanied by a detailed Specification, you can customize the application so that whenever an ECR is created, a Specification is also created and linked to the ECR by a specific relationship. You can also set up the numbering sequence for the object names so the numbers are the same for the two objects that are created. Data Model for Automatic NamingThis diagram shows the data model for the automatic naming process. For help reading the model, see How to Read Data Models. Every object type that needs automatic naming must have an eService Object Generator object. Every type that needs a unique numbering sequence requires an eService Number Generator object connected to the eService Object Generator. The Object and Number Generator business object types are governed by the eService Object Generator policy. The business objects are created in the eServiceAdministration vault (symbolic name vault_eServiceAdministration). For example, the automatic naming business objects for ECRs looks like this: Although not configured out-of-the-box, you can configure a Specification object to be created every time an ECR object is created. In this case, the eService Object Generator for Specifications must be connected to the eService Object Generator for ECRs using the eService Additional Object relationship. Since the Object Generator objects are connected to the same Number Generator object, the numbering sequence is the same. The first ECR created would be called "ECR0000100" and the first Specification would be called "SP0000100". The primary type is the type whose Object Generator is connected directly to the Number Generator and is on the From end of the Additional Object relationship, ECR in the case described above. Types on the To end of the Additional Object relationship are additional types--Specification in the above example. To define how the additional object connects to the primary object, specify a value for the eService Connect Relation attribute for the eService Additional Object relationship. Object Generator ProgramThe program that generates the automatic names is called eServicecommonObjectGenerator.tcl. The program accepts the following parameters. These parameters are passed by the program that creates the object, which may be a Tcl program or a JavaServer Page (JSP). See About Configuring.
The program returns a list of lists. Each item in the list holds the ID, type, name, and revision of the object created. If there is an error, it returns a list with the first item as null and the second item contains the error message. How Automatic Naming WorksWhen a user performs a task that calls for an object to be created using the automatic naming process, the eServicecommonObjectGenerator.tcl program performs the steps described in this section. Makes sure the eService Object Generator object for the object type exists. If the object does not exist, the program returns with a null and an error message. Gets the attribute values for the eService Object Generator for the type. Locks the Number Generator object for the object type to avoid creating objects with the same name when more than one user attempts to create a object at the same time. If the object is already locked, the program waits for the time period set for the eService Retry Delay attribute. The program retries for eService Retry Count times. If the program is unable to access the Number Generator, it returns with a null and an error message. After locking the Number Generator object, gets the next number to be generated from the eService Next Number attribute on the eService Number Generator object for the object type. Updates the Next Number attribute with the next value to be assigned, which is the current value of the attribute + 1. Unlocks the Number Generator so it is now accessible when another user needs to create an object. Generates the name of the object to be created as PrefixNextNumberSuffix. Makes sure the name is unique. If the object is unique, the program creates the object. If the name is not unique, the program tries to get a unique number until it gets one or until the eService Processing Time Limit (an attribute on the Object Generator) gets exhausted, whichever comes first. If the eService Processing Time Limit gets exhausted, then the program returns with a null and an error message saying that the Number Generator object is busy. Determines if there are additional objects to be created using the value of the input parameter CreateAdditional. If no additional objects are to be created, the process is complete. If additional objects are to be created, the program expands on the primary object for the relationship eService Additional Object and gets all the additional objects to be created. For each of these additional objects, the program makes sure the name is unique. If a name already exists, the program tries to get a new number. The program then connects the newly-created primary object with the newly-created additional object(s). The relationships by which these objects are to be connected are the values of the attribute eService Connect Relation. The program assumes the From type of the relationship is always the primary object. Calling the Object Generator from a JSPTo use the object generator in a JSP program, you can use the autoName function that is defined in eServiceUtil.jsp. This file is in the "enovia" directory. You need to include the eServiceUtil.jsp in your JSP using an include directive: <@include file="eServiceUtil.jsp">. The eServiceUtil.jsp defines two function signatures for overloaded autoName function. The first accepts a revision for the created object and the second does not accept a revision.
Remember to register the symbolic name for any custom administrative objects (objects that are not supplied with the ENOVIA Business Process Services). If you use an unregistered symbolic name as an input for a program, the program will not work. See Registering Your Own Administrative Objects. To create an additional object along with the primary object, pass the value "Additional" to the ObjectGenerator for the CreateAdditional parameter by defining a third function signature for autoName and adding the Additional parameter as the last parameter. Calling the Obejct Generator from TclTo use the object generator within a Tcl program, call eServicecommonObjectGenerator.tcl using utLoad. Pass the ObjectGeneratorName, ObjectGeneratorRevision, ObjectPolicy, and CreateAdditional (optional) parameters to the eServiceNumberGenerator procedure. Remember to register the symbolic name for any custom administrative objects (objects that are not supplied with ENOVIA Business Process Services). If you use an unregistered symbolic name as an input for a program, the program will not work. SeeRegistering Your Own Administrative Objects. The following example shows how a Tcl program would use the object generator to create objects of type XYZ, revision 1, and policy ABC. eval [utLoad eServicecommonObjectGenerator.tcl] set sNewInfo [eServiceNumberGenerator "type_XYZ" "1" "policy_ABC" ""] set sNewInfoErrorFlag [lindex $sNewInfo 0] if {[string compare $sNewInfoErrorFlag ""] == 0 } { set mqlret 1 set outstr [lindex $sNewInfo 1] } else { set sNewObjectId [string trim [lindex [lindex $sNewInfo 0] 0]] set sNewType [string trim [lindex [lindex $sNewInfo 0] 1]] set sNewName [string trim [lindex [lindex $sNewInfo 0] 2]] set sNewRev [string trim [lindex [lindex $sNewInfo 0] 3]] } Shadow Agent PasswordsThe password is the same for all shadow agent persons, including all of the grant agents. The password is stored in the code section of the emxcommonSessionInfo program object and is "shadowsecret" by default. If you change this value in the program object, you must also change the password for all of the agents. Also, if you are upgrading and have already changed the password, you must change it again in this new location and change all of the new agents before using the system. You may want to change the password back to shadowsecret for the original User Agent person initially until you know everything is working and then change the password for all of the agents at once. ENOVIA Business Process Services installs these shadow agent persons: |