/*============================================================================== Copyright (c) 2003-2005 UGS Corporation Unpublished - All Rights Reserved ==============================================================================*/ /** @file This file contains the ITK Function declarations for the ICS Module */ /* */ #ifndef I_ICS_HXX #define I_ICS_HXX #include #include #include #include #include #include #include /** @defgroup ICS Classification System (ICS) Classification of your company's product data - standard parts, technology data, manufacturing equipment - saves time by making component data easier to find and retrieve and reduces costs by allowing you to reuse existing parts and consolidate and/or eliminate duplicate or out-dated parts. Teamcenter Classification is used to create and maintain a hierarchical classification structure based on the attribute values of your Teamcenter workspace objects. You will use ICS-ITK to:
  • Add items to the classification hierarchy
  • Classify workspace objects
  • Find and retrieve Instances of objects
  • Modify the attribute values of classification Instances
  • Delete instances from the classification hierarchy
@{ */ typedef enum { ICS_type_unknown, ICS_type_group, ICS_type_class, ICS_type_class_attr, ICS_type_view, ICS_type_view_attr, ICS_type_unctdict, ICS_type_stxt, ICS_type_data, ICS_type_abstract_class, ICS_type_storrage_class } ICS_type_t; #ifdef __cplusplus extern "C"{ #endif /* */ /** This function must be called immediately after all ICS activity is complete. */ extern ICS_API int ICS_exit_module ( ); extern ICS_API int ICS_init_hooks ( ); /** @name Group/Class/View Functions Common Return Values:
#ICS_invalid_class Class tag passed is not a valid tag
#ICS_invalid_class_idId passed is not a valid Id.
#ICS_invalid_tag Tag passed is not a valid tag
#ICS_invalid_view View tag passed is not a valid tag
#ICS_invalid_view_id View id passed is not a valid ID
@{ */ /** This function gets the top class of the classification hierarchy. */ extern ICS_API int ICS_ask_top_class ( tag_t* topClass /**< (O) Top class tag */ ); /** Function to get the tag of the Group/Class identified by the given ID string. Restrictions: This function can be used only for Groups and Classes.
Note: this function returns SML_ERR_NO_INSTANCE_FOUND if the class does not exist */ extern ICS_API int ICS_find_class ( const char* groupOrClassId, /**< (I) Id of the Group or the Class. */ tag_t* groupOrClass /**< (O) Tag of the passed Group or Class. */ ); /** This function will get the id and name for a given group/class/view. */ extern ICS_API int ICS_ask_id_name ( tag_t groupOrClassOrView, /**< (I) Tag of the group/class/view */ char** id, /**< (OF) Id of the given group/class/view */ char** name /**< (OF) Name of the given group/class/view */ ); /** This function will get the tag of the view given the view ID and class tag.
Note: this function returns SML_ERR_NO_INSTANCE_FOUND if the class does not exist */ extern ICS_API int ICS_find_view ( tag_t theClass, /**< (I) Tag of the class */ const char* viewId, /**< (I) View id */ tag_t* view /**< (O) Tag of the view */ ); /** This function gets the children given the group or class tag. Restrictions: This function can be used only for Groups and Classes. */ extern ICS_API int ICS_ask_children ( tag_t groupOrClass, /**< (I) Tag of the group or class */ int* nChildren, /**< (O) Number of children beneath the group or class */ tag_t** children /**< (OF) nChildren Children tags beneath the given group or class */ ); extern ICS_API int ICS_ask_parent ( tag_t theChid, /**< (I) */ tag_t* theParent /**< (O) */ ); /** @deprecated #ICS_ask_instances deprecated in Teamcenter 11.2.2. Use #ICS_ico_search instead. This function gets all the classification records from the database (ICO's - Teamcenter Classification Object) under the given class/view combination. Refer to ICS_search_instances() to search for instances satisfying a specific search criteria. Restrictions: Since the instances are associated only with the views and the views belong to a specific class, this function can be used only for a particular view/class combination. */ TC_DEPRECATED("11.2.2","ICS_ask_instances","ICS_ico_search") extern ICS_API int ICS_ask_instances ( tag_t theClass, /**< (I) Tag of the class */ tag_t view, /**< (I) Tag of the view belonging to the given class */ int* nInstances, /**< (O) Number of instances found under the class/view combination */ tag_t** instances /**< (OF) nInstances Array of instance tags */ ); /** @deprecated #ICS_ask_instance_count deprecated in Teamcenter 11.2.2. Use #ICS_ico_search_count instead. */ TC_DEPRECATED("11.2.2","ICS_ask_instance_count","ICS_ico_search_count") extern ICS_API int ICS_ask_instance_count ( const char* ClassOrViewId, /**< (I) */ int* nInstances /**< (O) */ ); /** @deprecated #ICS_search_instances deprecated in Teamcenter 11.2.2. Use #ICS_ico_search instead. This function searches for the classification records in the database for the given class/view combination and satisfying the given search criteria (queries). If the queries passed are null, this function behaves similar to ICS_ask_instances(). Restrictions: Since the instances are associated only with the views and the views belong to a specific class, this function can be used only for a particular view/class view combination. */ TC_DEPRECATED("11.2.2","ICS_search_instances","ICS_ico_search") extern ICS_API int ICS_search_instances ( tag_t theClass, /**< (I) Tag of the class */ tag_t view, /**< (I) Tag of the view belonging to the given class */ int nAttributes, /**< (I) Number of attributes defined in the view */ int* attributeUncts, /**< (I) UNCT's of the attributes defined in the view */ char** queries, /**< (I) Search criteria (commonly used are \>, \>=, \<, \<=) */ int* nInstances, /**< (O) Number of instances satisfying the search criteria and belonging to the given class/view combination */ tag_t** instances /**< (OF) nInstances Array of instance tags found */ ); /** @deprecated #ICS_search_object_ids deprecated in Teamcenter 11.2.2. Use #ICS_ico_search instead. Object Id refers to the unique id associated with a classification record (ICO) in the Classification System. This function searches for the classification records in the database based on the given query and belonging to the given class/view combination. Restrictions: Since the instances are associated only with the views and the views belong to a specific class, this function can be used only for a particular view/class view combination. */ TC_DEPRECATED("11.2.2","ICS_search_object_ids","ICS_ico_search") extern ICS_API int ICS_search_object_ids ( tag_t theClass, /**< (I) Tag of the class */ tag_t view, /**< (I) Tag of the view belonging to the given class */ char* query, /**< (I) Query */ int* nInstances, /**< (O) Number of instances satisfying the search criteria and belonging to the given class/view combination */ tag_t** instances /**< (OF) nInstances Array of instance tags found */ ); /** This function gets the attributes for the given class or view. Restrictions: This function cannot be used for groups, as attributes are not defined at group level, but defined at class level. A view defined below a class inherits some or all of these attributes. */ extern ICS_API int ICS_ask_attributes ( tag_t classOrView, /**< (I) Tag of the class or view */ int* nAttributes, /**< (O) Number of attributes defined for the given class or view */ tag_t** attributeList /**< (OF) nAttributes Array of attribute tags */ ); /** @deprecated #ICS_describe_view deprecated in Teamcenter 11.4. Use #ICS_view_describe_view instead. Returns the definition of a view given the view tag. Restrictions: This function can only be used with views. */ TC_DEPRECATED("11.4","ICS_describe_view","ICS_view_describe_view") extern ICS_API int ICS_describe_view ( tag_t view, /**< (I) Tag of the view */ int* nAttributes, /**< (O) Number of attributes defined for the given view */ int** theAttrIDs, /**< (OF) nAttributes IDs of the attributes */ int** theAttrFormats, /**< (OF) nAttributes Formats of the attributes*/ char*** theAttrAnnotations, /**< (OF) nAttributes Annotations of the attributes*/ char*** theAttrNames, /**< (OF) nAttributes Names of the attributes*/ char*** theAttrShortNames, /**< (OF) nAttributes Short names of the attributes */ char*** theAttrUnits, /**< (OF) nAttributes Units of the attributes (NULL if no unit is defined for the attribute) */ char*** theUserData1, /**< (OF) nAttributes the user data 1 property of the attributes */ char*** configField, /**< (OF) nAttributes */ char*** theUserData2, /**< (OF) nAttributes the user data 2 property of the attributes */ int** theFlags /**< (OF) nAttributes the flags of the attributes*/ ); extern ICS_API int ICS_describe_config_field ( const char* configFieldString, /**< (I) */ int* multiField, /**< (O) */ logical* horizontal, /**< (O) */ logical* vertical, /**< (O) */ logical* separator, /**< (O) */ logical* arrow, /**< (O) */ logical* button, /**< (O) */ logical* wide, /**< (O) */ logical* mandatoryFlag, /**< (O) */ logical* protectedFlag, /**< (O) */ logical* uniqueFlag /**< (O) */ ); extern ICS_API int ICS_create_view_attributes ( tag_t view, /**< (I) */ int nAttributes, /**< (I) */ const char** attributeNames, /**< (I) */ tag_t** attributes /**< (OF) nAttributes */ ); extern ICS_API int ICS_create_class_attributes ( tag_t theClass, /**< (I) */ int nAttributes, /**< (I) */ int* unctNumbers, /**< (I) */ tag_t** attributes /**< (OF) nAttributes */ ); extern ICS_API int ICS_create_view ( tag_t theClass, /**< (I) */ const char* viewId, /**< (I) */ const char* viewName, /**< (I) */ tag_t* newView /**< (O) */ ); /** @} */ /** @name Attribute Functions Common Return Values:
#ICS_invalid_attribute UNCT name cannot be NULL.
#ICS_invalid_format Invalid format (cannot be 0).
#ICS_invalid_attribute_idInvalid UNCT number (cannot be 0).
@{ */ /** This function creates a new UNCT (attribute). The UNCT number given is an integer that uniquely identifies an attribute in the classification system. An UNCT number once created can be used in any class/view definition subject to the condition that it can be used only once in a particular class/view definition. */ extern ICS_API int ICS_create_unct ( int unctNo, /**< (I) UNCT number that uniquely identifies an attribute */ const char* unctName, /**< (I) Attribute name */ const char* shortName, /**< (I) Attribute short name */ const char* unctUnit, /**< (I) Attribute unit */ int unctFormat /**< (I) Attribute format */ ); /** This function gets the UNCT definition given the UNCT number. */ extern ICS_API int ICS_describe_unct ( int unctNo, /**< (I) UNCT number that uniquely identifies an attribute */ char** unctName, /**< (OF) Attribute name */ char** shortName, /**< (OF) Attribute short name */ char** unctUnit, /**< (OF) Attribute unit */ int* unctFormat /**< (O) Attribute format */ ); /** A format defines the type of value that is stored for the attribute. This function gets the type of format, modifiers, and the overall length of the formatted value. The first digit of a positive format number defines what types of values are expected in the field and controls the format of the value. The format number can be up to five digits in length.
The following figure explains the meaning of the digit in the format number: ---------------------
| 1 | 2 | 3 | 4 | 5 |
---------------------
  • digit 5 and 4: Number overall
  • digit 3:
    • If using real: Number after decimal point
    • If using string:
      • 0 = Print characters in upper- and lowercase
      • 1 = Print all characters in uppercase
      • 2 = Print all characters in lowercase
  • digit 2:
    • 0 = Force positive number
    • 1 = Accept and diplay either + or -
    • 2 = Accept + or - but display - sign only
  • digit 1:
    • 0 = String
    • 1 = Integer
    • 2 = Real
    • 3 = Date
      • 30000: YYYYMMDDHHMMSS (internal represent)
      • 30001: YYMMDDHHMMSS
      • 30002: DDMMYYYYHHMMSS
      • 30003: DDMMYYHHMMSS
      • 30004: DD.MM.YYYY HH:MM:SS
      • 30005: DD.MM.YY HH:MM:SS
      • 30006: DD.MM.YYYY
      • 30007: DD.MM.YY
      • 30008: YYMMDD
      • 30009: YYYYMMDD
      • 30011: MM/DD/YY HH:MM:SS
      • 30011: MM/DD/YY
    • 4 = Time Range
      • 40000: ssssssss (internal represent)
      • 40001: HH:MM:SS
      • 40002: DD:HH:MM:SS
For example: If the format passed is 20509, this function returns: formatType - 2
modifier1 - 0
modifier2 - 5
length - 09 Restrictions: This function can only be used on positive formats (> 0). If a negative format is passed, this function returns -1 for all output parameters. A negative format indicates an attribute with a pop-up list of values. */ extern ICS_API int ICS_describe_format ( int format, /**< (I) Format */ int* formatType, /**< (O) An integer that identifies the type (i.e. integer/real/string/date) */ int* modifier1, /**< (O) */ int* modifier2, /**< (O) */ int* length /**< (O) Length */ ); /** This function gets the pop-up definition for a negative format. A negative format indicates an attribute with pop-up list of values. A pop-up list of values can be associated with an attribute such that when a user clicks the down arrow in the attribute field, a list of legal values for that attribute is displayed. Pop-up lists are used when an attribute has a finite set of legal values. The pop-up list is more efficient than manual entry because it eliminates the need for the user to memorize the legal values. Pop-up lists also enforce consistency. Each of the values in the pop-up list is identified by a keyword (optionId) and a value (optionValue). Refer to Teamcenter Classification Administration Help for additional information on formats. Restrictions: This function can only be used on negative formats (< 0), as pop-up list of values are associated only with negative formats. */ extern ICS_API int ICS_get_popup_definition ( int format, /**< (I) Format */ int* count, /**< (O) Count of the list of values for this format */ char*** optionIds, /**< (OF) count Keywords for each of the pop-up list of values */ char*** optionValues /**< (OF) count Values for each of the pop-up list of values */ ); /** @} */ /** @name ICO Functions Common Return Values:
#ICS_cannot_classify_wso The workspace object cannot be classified
#ICS_empty_resource_id Object id (Resource Id) cannot be empty
#ICS_find_relation_failed Given workspace object does not have any objects associated with it by the relation IMAN_classification.
#ICS_ico_does_not_exist No classification object exists for the given workspace object or the classification object has been deleted for this workspace object.
#ICS_invalid_class Invalid class (cannot be #NULLTAG)
#ICS_invalid_ico Invalid classification object (cannot be #NULLTAG)
#ICS_invalid_view Invalid view (cannot be #NULLTAG)
#ICS_invalid_wso Invalid workspace object (cannot be #NULLTAG)
#ICS_relation_type_does_not_existRelation type (IMAN_classification) does not exist
#ICS_wso_already_classified The workspace object has already been classified
#ICS_wso_does_not_exist The given classification object is not associated with any workspace object
#ICS_wso_not_classified The given workspace object has not been classified
@{ */ /** This function checks whether the given workspace object has been classified or not. */ extern ICS_API int ICS_is_wsobject_classified ( tag_t wsObject, /**< (I) Workspace object */ logical* isClassified /**< (O) True if classified, False if not */ ); extern ICS_API int ICS_is_wsobject_classifiable ( tag_t wsObject, /**< (I) */ logical* isClassifiable /**< (O) */ ); /** This function classifies the given workspace object, i.e. it associates the workspace object with the given classification object using the IMAN_classification relation. The classification object should be created using ICS_create_classification_object() prior to using this function. To set the attributes for the classification object, refer to ICS_set_values_for_classification_obj(). */ extern ICS_API int ICS_classify_wsobject ( tag_t wsObject, /**< (I) Workspace object */ tag_t classificationObject /**< (I) Classification object */ ); /** This function removes the relation (IMAN_classification relation) between the given workspace object and the associated classification object. The classification object also gets deleted. Once the classification object has been deleted, there is no way to retrieve it. If you don't want the ICO to be deleted, take a look at ICS_delete_reference_to_ico(). Refer to ICS_delete_reference_to_wsobject() to delete only the relation between the workspace object and the classification object. */ extern ICS_API int ICS_remove_classification ( tag_t wsObject /**< (I) Workspace object */ ); /** This function deletes the reference (identified by the IMAN_classification relation) between the given workspace object and the associated classification object. @note This does not delete the classification object. Refer to ICS_remove_classification() to delete the classification object as well as the relation. */ extern ICS_API int ICS_delete_reference_to_wsobject ( tag_t wsObject /**< (I) Workspace object */ ); /** This function deletes the reference (identified by the IMAN_classification relation) between the given classification object and the associated workspace object. It doesn't remove the ICO. Be careful while using this routine, as the ICO doesn't get deleted, and exists as a standalone ICO. */ extern ICS_API int ICS_delete_reference_to_ico ( tag_t classificationObject /**< (I) Classification object */ ); /** This function deletes the given classification object from the classification system as long as it is not referenced by other objects. Deletion of the classification object can be done in two ways:
  • Using ICS_remove_classification() passing the workspace object, which deletes the relation as well as the associated classification object.
  • Using ICS_delete_reference_to* () first to delete the reference. Use ICS_delete_classification_object() passing the classification object to delete the classification object.
*/ extern ICS_API int ICS_delete_classification_object ( tag_t classificationObject /**< (I) Classification object */ ); /** For the given classification object, this function gets the associated workspace object if the classification object is associated with a workspace object. */ extern ICS_API int ICS_ask_classified_wsobject ( tag_t classificationObject, /**< (I) Classification object */ tag_t* classifiedWSObject /**< (O) Associated workspace object tag if an association exists else #NULLTAG */ ); /** For the given workspace object, this function gets the associated classification object if the workspace object is classified. */ extern ICS_API int ICS_ask_classification_object ( tag_t wsObject, /**< (I) Workspace object */ tag_t* classificationObject /**< (O) Associated classification object tag if the given workspace object is classified. #NULLTAG if not classified */ ); /** This creates a new classification object given the object id, view/class tag, and the workspace object. If ws_object is not #NULLTAG, the ICO will classify this object. In this case the object_id will be ignored, but the Id of the ws_object will be used as the ICO id. If ws_object is #NULLTAG, an ICO will be created with object_id as it's id. NOTE: If you want to create an ICO for classes which support both unit systems please use ICS_ico_create (ics2.h). This functions creates only metric ICOs. */ extern ICS_API int ICS_create_classification_object ( tag_t ws_object, /**< (I) Workspace object */ const char* object_id, /**< (I) Id for the classification object */ tag_t view_or_class_tag, /**< (I) View tag or class tag to which the classification object should belong */ tag_t* classification_object /**< (O) Classification object tag */ ); /** This function gets the class to which the given classification object belongs. */ extern ICS_API int ICS_ask_class_of_classification_obj ( tag_t classificationObject, /**< (I) Classification object tag */ tag_t* theClass /**< (O) Class tag to which the classification object belongs */ ); /** This function gets the view to which the given classification object belongs. */ extern ICS_API int ICS_ask_view_of_classification_obj ( tag_t classificationObject, /**< (I) Classification object tag */ tag_t* view /**< (O) View tag to which the classification object belongs */ ); /** This function gets the object id given the classification object. */ extern ICS_API int ICS_ask_classification_object_id ( tag_t classificationObject, /**< (I) Classification object tag */ char** objectId /**< (OF) Classification object id */ ); /** This function gets the classification object tag given the object id, class and view to which it belongs. */ extern ICS_API int ICS_ask_classification_instance_tag ( tag_t theClass, /**< (I) Class to which the classification object belongs */ tag_t theView, /**< (I) View to which the classification object belongs */ char* classificationObjectId, /**< (I) Classification object id */ tag_t* classificationInstance /**< (O) Classification object tag */ ); /** This function gets the class and view Id to which the classification object belongs. */ extern ICS_API int ICS_ask_cid_sid_of_classification_obj ( tag_t classificationObject, /**< (I) Classification object tag */ char** classId, /**< (OF) */ char** viewId /**< (OF) */ ); /** This function gets the name-value pairs of the attributes for the given classification object. */ extern ICS_API int ICS_ask_attributes_of_classification_obj ( tag_t classificationObject, /**< (I) Classification object tag */ int* nAttributes, /**< (O) Number of attributes */ char*** attributeNames, /**< (OF) nAttributes Attribute names */ char*** attributeValues /**< (OF) nAttributes Attribute values */ ); /** For ICO's
Please note: - KeyLov attributes returns only the key
- If attributeName is an Integer it will be used as attribute ID for the search
- If the attributeName is not unique in the class, the first match which are accessible through the user specific view will be returned.
For efficiency reasons please use ICS_ico_ask_attributes() defined in ics2.h */ extern ICS_API int ICS_ask_attribute_value ( tag_t classificationObject, /**< (I) */ const char* attributeName, /**< (I) */ char** attributeValue /**< (OF) */ ); /** Function to get the complete details about a classification object. */ extern ICS_API int ICS_describe_classification_object ( tag_t classificationObject, /**< (I) Classification object tag */ tag_t* view, /**< (O) View tag to which the classification object belongs */ int* nAttributes, /**< (O) Number of attributes for the classification object */ int** unctNumbers, /**< (OF) nAttributes UNCT numbers of the attributes */ int** unctFormats, /**< (OF) nAttributes Formats of the attributes */ char*** attributeNames, /**< (OF) nAttributes Attribute names */ char*** attributeValues, /**< (OF) nAttributes Attribute values */ char*** units /**< (OF) nAttributes Attribute units */ ); /** For ICO's */ extern ICS_API int ICS_set_values_for_classification_obj ( tag_t classificationObject, /**< (I) */ int nAttributes, /**< (I) */ const char** attributeNames, /**< (I) */ const char** attributeValues /**< (I) */ ); /** Function to get the type of the object passed. Type can be one of the following:
#ICS_type_group #ICS_type_class #ICS_type_view
#ICS_type_class_attr#ICS_type_view_attr#ICS_type_unctdict
#ICS_type_stxt #ICS_type_data #ICS_type_unknown
*/ extern ICS_API int ICS_ask_type ( tag_t object, /**< (I) Object tag */ int* objectType /**< (O) Object type */ ); /** @} */ /** For Group / Class / View */ extern ICS_API int ICS_ask_image ( tag_t groupOrClassOrView, /**< (I) */ tag_t* datasetTag /**< (O) */ ); extern ICS_API int ICS_save_ico_by_rtico( tag_t attrSyncTag /**< (I) Tag of the ico runtime ico */ ); extern ICS_API int ICS_cancel_ico_by_rtico( tag_t objTag /**< (I) Tag of the ics runtimeIco object */ ); extern ICS_API int ICS_classid_is_valid( char* cid, /**< (I) ClassID */ char* sid, /**< (I) SubclassID */ logical* valid /**< (O) Flag to indicate the validity */ ); extern ICS_API int ICS_is_tag_ics_runtime_obj( tag_t obj, /**< (I) */ logical* is_an_ics_rt_obj /**< (O) */ ); /** This function receives the new Workspace object, an Item/ItemRev/Dataset, created from the UG/Manager, it fires a component creation event to notify the Teamcenter Portal. */ extern ICS_API int ICS_receive_obj_created_from_nxmgr( tag_t item_tag, /**< (I) The tag to the newly created Item or the original Item. */ tag_t itemrev_tag, /**< (I) The tag to the newly created ItemRev object or the ItemRev object where the newly created dataset is attached.. */ tag_t dataset_tag, /**< (I) The tag to the newly created dataset object or the dataset object attached under the newly created Item or ItemRev. */ int creation_type /**< (I) The integer flag indicating what type of object is created, 1 means a new Item is created, 2 means a new ItemRev is created, 3 means a new dataset is created. */ ); #if 0 extern ICS_API int ICS_sendObjects( char theSite[SML_LONG_SITE_NAME_SIZE + 1], /**< (I) */ int theObjectCount, /**< (I) */ tag_t* theObjectTags /**< (I) */ ); #endif /* ** Ensure all Classification hierarchy objects are synchronized to all or the given sites. ** If no sites are given all sites will be synchronized */ extern ICS_API int ICS_share_pending( int theSitesCount, const char** theSites, int theverbosity ); /*----------------------------------------------------------------------------- The enums for the Object Types Wherever applicable, Multiple Object types can be combined using the '|' (bitwise OR) operator -----------------------------------------------------------------------------*/ typedef enum ICS_objectType_s { ICS_ObjectType_unknown = 0, ICS_ObjectType_keylov = ( 1 << 0 ), ICS_ObjectType_attribute = ( 1 << 1 ), ICS_ObjectType_class = ( 1 << 2 ), ICS_ObjectType_view = ( 1 << 3 ), ICS_ObjectType_instance = ( 1 << 4 ), ICS_ObjectType_userclass = ( 1 << 5 ), ICS_ObjectType_all = (( 1 << 0 ) | ( 1 << 1 ) | ( 1 << 2 ) | ( 1 << 3 ) | ( 1 << 4 ) | ( 1 << 5 ) ), ICS_ObjectType_max } ICS_objectType_t, *ICS_ObjectType_p_t; /** @name XML Import/Export Functions The following ITK functions are used to support the XML import and export of Classification data. @{ */ /** Enums for Export Options. Currently this is applicable only to 'Class' objects. When export functions are called for an object of type class, these options can be given in the Export-Options parameter. If necessary, these options can be combined using '|' (bitwise OR) operator. */ typedef enum { ICS_xmlexport_this = 0, ICS_xmlexport_parent = ( 1 << 1 ), /**< 1 */ ICS_xmlexport_parentview = ( 1 << 2 ), /**< (#ICS_xmlexport_parent \<\< 1) + #ICS_xmlexport_parent */ ICS_xmlexport_subclass = ( 1 << 3 ), /**< (#ICS_xmlexport_parent \<\< 2) */ ICS_xmlexport_subclassview = ( 1 << 4 ), /**< (#ICS_xmlexport_subclass \<\< 1) + #ICS_xmlexport_subclass */ ICS_xmlexport_Hierarchy = ( 1 << 5 ), /**< (#ICS_xmlexport_subclass \<\< 2 ) + #ICS_xmlexport_parent */ ICS_xmlexport_parentinstance = ( 1 << 6 ), /**< (#ICS_xmlexport_subclass \<\< 3) + #ICS_xmlexport_parent */ ICS_xmlexport_subclassinstance = ( 1 << 7 ), /**< (#ICS_xmlexport_subclass \<\< 4) + #ICS_xmlexport_subclass */ ICS_xmlexport_instancexml = ( 1 << 8 ), /**< (#ICS_xmlexport_subclass \<\< 5) */ ICS_xmlexport_instanceschema = ( 1 << 9 ), /**< (#ICS_xmlexport_subclass \<\< 6) */ ICS_xmlexport_usermode = ( 1 << 10 ) } ICS_xmlExport_Option_t; /** Enum for Hook Events */ typedef enum { ICS_xml_hook_create = 1, /**< When any in-CLASS object is created in Import */ ICS_xml_hook_update = 2, /**< When any in-CLASS object is updated in Import */ ICS_xml_hook_export = 3 /**< When any in-CLASS object is exported */ } ICS_xml_hook_id_t, *ICS_xml_hook_id_p_t; /** Enum for Types of exits for calling Hook-functions */ typedef enum { ICS_xml_hook_pre = 1, /**< Before any Hook Event */ ICS_xml_hook_post = 2, /**< After any Hook Event */ ICS_xml_hook_cancel = 3 /**< On cancelling between 'pre' and 'post' exits */ } ICS_xml_hook_type_t, *ICS_xml_hook_type_p_t; /** This reports a failure for the specific object. In case of a pre hook the import/export for the current object is canceled. */ #define ICS_xml_hook_cancel_object 1 /** This reports a failure for the whole import/export operation. The whole subsequent operation is canceled for this functionality. */ #define ICS_xml_cancel 2 /** The signature of any user defined hook function. The parameters are passed with the actual values when this functions is invoked by the XML Import/Export for the specified Hook Event Exits */ typedef int (*ICS_xml_hook_t)( ICS_xml_hook_id_t theHookId, ICS_xml_hook_type_t preOrPost, int theObjectType, const char* theObjectId ); /** This function registers the given hook function for the subsequent calls to #ICS_xml_import / #ICS_xml_export functions. This given function theHookFn will be registered for the specified operation theHookId. The registered hook functions are called before and after the specified operation. This function can be used to register separate hook functions for each of the operations mentioned in #ICS_xml_hook_id_t. If the value for theHookFn is NULL, then this function will reset and clear the previously registered hook function for the given theHookId event. Always returns #ITK_ok */ extern ICS_API int ICS_xml_register_hook( ICS_xml_hook_id_t theHookId, /**< (I) The specific event for which the hook function is registered */ ICS_xml_hook_t theHook /**< (I) The user-defined function that is to be registered as the hook function */ ); /** This function imports the Classification data from a specific XML file into Teamcenter. The XML file should contain the Classification data in a format that complies with the Classification XML schema definition file, in-class.xsd, located in the TC_DATA directory. Restrictions: This method will validate the given XML file against the in-class.xsd schema file, and fails if the content of the XML file is invalid. */ extern ICS_API int ICS_xml_import( const char* theXMLFileName, /**< (I) The file path of the XML file */ int theObjectTypeFilter, /**< (I) Integer that specifies the object types to be considered for the import. This could be the combination of one or more types defined in the enum #ICS_objectType_t. It could also be #ICS_ObjectType_all to import any type of object */ logical theUpdateFlag, /**< (I) Flag that enables the import to update existing objects. If TRUE, the method will try to update the object if it already exists. If FALSE, it will ignore importing any data for the existing objects */ logical theRelatedCreationFlag /**< (I) Allows the function to create related Teamcenter objects for the imported Classification objects */ ); /** This function get the Teamcenter in-CLASS objects and export the in-CLASS objects definition data to the XML file in the specified physical location */ extern ICS_API int ICS_xml_export( const char* theXMLFileName, /**< (I) The XML File to be generated */ ICS_objectType_t nObjType, /**< (I) Type of the given Object */ const char* theId, /**< (I) ID of the given object */ int theObjectTypeFilter, /**< (I) Integer representing the combination of the types of objects for export
Possible values for "theObjectTypeFilter" are:
ICS_ObjectType_keylov | ICS_ObjectType_attribute | ICS_ObjectType_class
| ICS_ObjectType_view | ICS_ObjectType_instance
ICS_ObjectType_userclass
ICS_ObjectType_all */ int theExportOptions /**< (I)Integer representing export Options.
Currently this is applicable only to 'Class' objects in "theObjectTypeFilter".
When export functions are called for an object of type class,
these options can be given in the Export-Options parameter.
If necessary, these options can be combined using '|' (bitwise OR) operator.
Possible values for "theExportOptions" are:
ICS_xmlexport_this
ICS_xmlexport_parent
ICS_xmlexport_parentview
ICS_xmlexport_subclass
ICS_xmlexport_subclassview
ICS_xmlexport_Hierarchy
ICS_xmlexport_parentinstance
ICS_xmlexport_subclassinstance
ICS_xmlexport_instancexml
ICS_xmlexport_instanceschema */ ); #if 0 /** To Export in-CLASS object by their tags Not implemented now */ extern ICS_API int ICS_xml_export( const char* theXMLFileName, /**< (I) */ int n_objectsToExport, /**< (I) */ tag_t* theObjectsToExport, /**< (I) */ int theObjectTypeFilter /**< (I) */ ); #endif /** This function returns the children of the given class in form of an XML element or document */ extern ICS_API int ICS_xml_ask_children( const char* theParentId, /**< (I) */ int theLevelCount, /**< (I) */ logical theAdminMode, /**< (I) */ int theSortOption, /**< (I) */ logical theXMLOption, /**< (I) */ char** theChildren /**< (OF) */ ); /** @} */ /** This function returns the ICOs with ID theIcoId. */ ICS_API int ICS_ask_instances_by_id( const char* theIcoId, /**< (I) */ int* theCount, /**< (O) */ tag_t** theInstanceTags /**< (OF) theCount */ ); /** This function returns the formatted value for the given format. -----------------------------------------------------------------------------*/ extern ICS_API int ICS_format_value( int howToFormat, /**< (I) Possible values for howToFormat are:
  1. format external search string to internal
  2. format value from external to internal
  3. format internal value to external
  4. to format a search string back to external
*/ int theFormat, /**< (I) */ const char* theMinValue, /**< (I) */ const char* theMaxValue, /**< (I) */ const char* theValue, /**< (I) */ char** theFormattedValue /**< (OF) */ ); /** @} */ #ifdef __cplusplus } #endif #include #endif