Summary of Contents for IBM BJ0NJML - Service And Asset Management
Page 1
IBM Maximo Asset Management 7.1 IBM Tivoli Asset Management for IT 7.1 IBM Tivoli Change and Configuration Management Database 7.1.1 IBM Tivoli Service Request Manager 7.1 Integration Guide...
Page 2
This edition applies to version 7, release 1, modification 0 of IBM Maximo Asset Management, IBM Tivoli Asset Management for IT, and IBM Tivoli Service Request Manager, and version 7, release 1, modification 1 of IBM Tivoli Change and Configuration Management Database and to all subsequent releases and modifications until otherwise indicated in new editions.
Page 18
Dynamic XML schema generation for all integration interfaces. Dynamic generation of Web Services Interoperability (WS-I) compliant Web services, including Web Service Definition Language (WSDL). Provides the concept of an adapter that is used to group related integration framework components. You can configure and deploy adapters for enterprise connectivity with various external systems.
The integration framework also provides features that support the integration ® ® with operational management products, such as IBM Tivoli Provisioning Manager. You also can use a system application user interface to launch an external application user interface.
Page 21
Integration Framework Overview Component Description Web services Query message and receive data by the integration framework. Content System content that is configured to enable various integration components. Operational Management Operational management product integration facilitates the automation of Product Integration information technology services, such as software deployment. A process management product calls an integration module which in turn communicates with the operational management product to perform a logical management operation.
Integration Framework for Data Exchange Component Description Actions You use actions to implement an automated or semi-automated invocation of integration modules and operational management products by a process management product. You can initiate actions from user interface applications, escalations, and workflows. Integration Framework The integration framework provides a mechanism for you to navigate from a for UI Integration...
Integration Framework for Data Exchange The object structure is the building block of the integration framework that lets framework applications to perform the following functions: Publish and query application data Add, update, and delete application data Import and export application data You also can use the object structure as a service to support inbound message processing.
Integration Framework for Data Exchange Invocation Channels The Service Oriented Architecture (SOA) enables the use of external services to process data from multiple sources. Invocation channels support a generic service-oriented architecture capability by enabling the system to call an external service synchronously.
Integration Framework for Data Exchange invocation channel can be configured to ignore the response that is returned from the external service and return no data to the caller of the channel. Enterprise Services The enterprise service is a pipeline for querying system data and importing data into the system from an external system.
Integration Framework for Data Exchange To create an external system, you specify an endpoint, the queues, and the integration control values in the External System application. You can also define the following properties on the external system: The endpoint that identifies how and where the integration framework exchanges data with the system The Java Message Service (JMS) queues that the system uses Whether the external system is ready to begin integration processing...
Integration Framework for Operational Management Product Integration Data Import and Data Export With the integration framework, you can load data from either flat files, such as comma separated, or XML files. You can initiate the data load through an application user interface. You also can start a data load from a scheduled background process by using a system cron task.
Integration Framework for Operational Management Product Integration operations and integration modules. The process management product provides an action class that initiates the call to an integration module, and subsequently the operational management product. The process management product then processes the response from the operational management product. Process management product processing can involve saving a value to the system database or displaying the response to you from a user interface, or both.
® perform information technology services. IBM Tivoli Application Dependency ® Discovery Manager (TADDM), Tivoli Provisioning Manager (TPM), and IBM ® Tivoli Configuration Manager (TCM) are examples of operational management products. Operational management products provide services that external applications (integration modules) can invoke to initiate operational management product actions.
Integration Framework for User Interface Integration the classification value of current data being processed in the user interface) Operational management product-specific features including the automatic substitution of operational management product host name, and the configuration item source token into the URL based on configuration item the system processes in the user interface Land in Context You can use the land in context to have an external application open a system...
Page 31
Integration Framework for User Interface Integration Integration Framework Architecture...
Page 32
Integration Framework for User Interface Integration Integration Guide...
Asynchronous Inbound Integration Processing Asynchronous Inbound Integration Processing The following prerequisites apply to asynchronous inbound processing: All applicable object structures, services, and external systems must be defined. The following entities must be enabled: External system Applicable enterprise services with operations other than QUERY If applicable, the cron task that polls the inbound sequential queue If applicable, the message-driven beans that process messages from the continuous queue...
Asynchronous Inbound Integration Processing Inbound Integration Process Initiation Summary An external system can use the following methods to send asynchronous messages to the system: Method Availability XML that uses the integration All external systems with enabled framework that uses HTTP Post, enterprise services.
Page 36
Asynchronous Inbound Integration Processing A client can use the Java Naming and Directory Interface (JNDI) name of the Enterprise JavaBean (ejb/maximo/remote/enterpriseservice) to look up the Enterprise JavaBean reference and to invoke the method. The client also needs the following settings: Access to the Home and Remote class files Access to the J2EE jar files for the server The URL of the server that hosts the Enterprise JavaBean...
Page 37
Asynchronous Inbound Integration Processing If the verification fails, the integration framework issues an error and does not process the message. If the verification is successful, the integration framework identifies the inbound JMS queue that is assigned to the enterprise service and the external system.
Asynchronous Inbound Integration Processing Data Import Cron Task The following steps describe the initiation of inbound processing that uses a data import cron task. The XMLFILECONSUMER cron task or the FLATFILECONSUMER cron task regularly polls the source directory that is specified in its corresponding configuration.
Asynchronous Inbound Integration Processing The following framework activities identify the object structures that are associated with the message: The integration framework retrieves the record from the inbound queue. The integration framework identifies the enterprise service from the retrieved record. The enterprise service definition lists the object structures that the processing service uses.
Asynchronous Inbound Integration Processing Output The following table shows the possible user exit preprocessing outcomes. Condition Output No user exit class exists. The unchanged enterprise service. The user exit class skips the record None; processing ends and the (due to non-applicable data). message is deleted from the queue.
Asynchronous Inbound Integration Processing Condition Output The processing class completes The object structure. successfully, with mapping. User Exit Postprocessing Summary The integration framework applies predefined processing logic in the user exit class to the output from the preceding activity. A user exit processing class typically customizes the object structure after the execution of any predefined enterprise service processing logic.
Asynchronous Inbound Integration Processing Output The following table shows the possible XSL map processing outcomes. Condition Output No XSL map exists. The unchanged enterprise service. An XSL map exists. The updated enterprise service. The XML message must be in the format that the object structure schema defines.
Asynchronous Inbound Integration Processing Object Structure Processing Rules Summary The integration framework applies processing rules to the object structures before it builds the objects. Object structure processing rules define conditions under which the system can skip or stop a message, or change data in the object structure before the objects are created.
Asynchronous Inbound Integration Processing Output The following table shows the possible object rule processing outcomes. Condition Output No object processing rules exist. The object. The processing rules skip the record. None; processing ends and the message is deleted from the queue. If there are multiple records in one XML file, the class skips the current record and processes the next record.
Asynchronous Inbound Integration Processing The same processing class contains the enterprise service user exit preprocessing, enterprise service user exit postprocessing, and user exit object processing methods. Output The following table shows the possible user exit object processing outcomes. Condition Output No user exit processing.
Synchronous Inbound Integration Processing Synchronous Inbound Integration Processing Enterprise services that support query and create operations, return XML content as part of the synchronous response. The response processing layer supports Java and XSL customization, but the response does not support processing rules. Any operation can be processed synchronously, but only query and create operations return data to the caller.
Synchronous Inbound Integration Processing You can use the following code to invoke the Enterprise JavaBean to process the enterprise service message synchronously: public byte{} processExternalDataSync(byte[] extData, String serviceName, String sender) A client can use the Java Naming and Directory Interface name of the Enterprise JavaBean (ejb/maximo/remote/enterpriseservice) to look up the Enterprise JavaBean reference and to invoke the method.
Synchronous Inbound Integration Processing The integration framework inbound integration can process numbers in either standard or scientific notation. To see the processing sequence of multiple object structures associated with an enterprise service, go to the Add/Modify Additional Object Structures dialog box in the Enterprise Services application. Look for the processing order field on the Object Structure Sub-Records table window.
Synchronous Inbound Integration Processing Enterprise Service Class Processing Summary The integration framework applies predefined enterprise service processing logic in the processing class to the enterprise service. The MAXIMO adapter does not provide any predefined enterprise service processing classes. It implements all its integration rules through the object structure processing and processing rules.
Synchronous Inbound Integration Processing Output The following table shows the possible user exit postprocessing outcomes. Condition Output No user exit class exists. The unchanged enterprise service object. The user exit class skips the record. None; processing ends. If there are multiple records in one XML file, the class skips the current record and processes the next record.
Synchronous Inbound Integration Processing in the data, apply the stop action to all of the object structures that are created (every copy of the original object structure). To see if a cross-reference control exists, go to the Enterprise Service tab in the Enterprise Services application.
Synchronous Inbound Integration Processing Object Creation Summary The integration framework builds the objects by using the information in the object structure. Output The output of this activity is the objects. Object Processing Rules Summary If specified, the integration framework applies processing rules to the objects it has built, before saving the objects.
Synchronous Inbound Integration Processing Condition Output The object structure class stops the None; processing ends and an error is record. sent to the caller. The predefined enterprise services do not implement the stop action; object structure processing exceptions stop processing. The object structure processing The updated object.
Synchronous Inbound Integration Processing For the create operation, the keys of the primary object of the object structure are returned. The entire object structure is returned based on the results of the Query operation. When you use an enterprise service you can implement customizations on the response of the query by using Java and XSL.
Synchronous Inbound Integration Processing Object Structure Services The following diagram illustrates an overview of the synchronous object structure service processing activities. Inbound Integration Process Initiation Summary An object structure service can use HTTP Post, Enterprise JavaBean invocation, and Web service invocation methods to receive synchronous object structure service messages.
Synchronous Inbound Integration Processing Access to the Home and Remote class files Access to the J2EE jar files for the server The URL of the server that hosts the Enterprise JavaBean The context factory class name The client code must instantiate the default IntialContext object. The context derives the provider URL and the context factory from the environment.
Synchronous Inbound Integration Processing Object Processing Summary The objects are passed to the system, and standard system processing is applied. If the system identifies an error in processing, it sends the object structure to the caller of the service. Object Structure Web Services You can access object structure services by using HTTP or an enterprise bean.
Synchronous Inbound Integration Processing Standard Services The following diagram illustrates an overview of the synchronous standard service processing activities. Inbound Integration Process Initiation Summary A standard service can be accessed by using an HTTP Post, an Enterprise JavaBean invocation, and a Web service invocation to receive synchronous standard service messages.
Synchronous Inbound Integration Processing Access to the J2EE jar files for the server The URL of the server that hosts the Enterprise JavaBean The context factory class name The client code must run the default IntialContext object. The context derives the provider URL and the context factory from the environment.
Asynchronous Outbound Integration Processing Asynchronous Outbound Integration Processing The following prerequisites apply to all asynchronous outbound integrations: All applicable object structures, publish channels, and external systems must be defined. The external systems must be configured with an endpoint. The following entities must be enabled: External systems Applicable publish channels Applicable event listeners...
Asynchronous Outbound Integration Processing Outbound Integration Process Initiation Summary You initiate the outbound integration process by using event-based activities or by using the data export feature that you access in the External Systems application. Event-based messages are sent when a record is updated using an application or a process such as workflow or escalation.
Unique message identifier. creationDateTime System datetime. Output The output of this activity is an object structure with the following format and header data: <PublishObjectStructureName creationDateTime="system" messageID="null" event="0" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xmlns="http://www.ibm.com/maximo"> <ObjectStructureNameSet> <ObjectName> </ObjectName> </ObjectStructureNameSet> </PublishObjectStructureName> Object Structure Processing Rules Summary Object structure processing rules define conditions under which the system can skip or stop a message.
The outcome of this activity is one object structure per combination of publish channel and external system. The following format and header data appears: <PublishChannelName creationDateTime="system" messageID="MessageID per external system – publish channel" event="0" xmlns:xsi="http:// www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ibm.com/ maximo"> <ObjectStructureNameSet> <ObjectName>...
Asynchronous Outbound Integration Processing User Exit Preprocessing Summary The integration framework applies the custom processing logic in the user exit class to the object structure. You can use a preprocessing method in a user exit class to manipulate the object structure before any predefined processing takes place on the publish channel.
Asynchronous Outbound Integration Processing Output The following table shows the possible publish channel class processing outcomes. Condition Output No processing class exists. The existing object structure, unchanged. The processing class skips the record. None; processing ends. The processing class stops the record. None;...
Asynchronous Outbound Integration Processing XSL Map Summary The integration framework applies any custom mapping to the publish channel. XSL mapping lets you map user-defined publish channels or customize the mapping done by predefined publish channel processing classes. Both the object structure and publish channel are available.
Synchronous Outbound Integration Processing Synchronous Outbound Integration Processing As a prerequisite, you must define all applicable object structures and endpoints on the invocation channel. Invocation Channels The following diagram illustrates an overview of the synchronous invocation channel processing activities. Not every activity applies to every outbound message.
The name of the object structure. messageID Unique message ID. creationDateTime System datetime. Output The output of this activity is an object structure with the following format and header data: <InvokeObjectStructureName creationDateTime="system" messageID="1234444" event="0" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xmlns="http://www.ibm.com/maximo"> <ObjectStructureNameSet> <ObjectName> </ObjectName> </ObjectStructureNameSet> </InvokeObjectStructureName> Integration Guide...
Synchronous Outbound Integration Processing Request Class Processing Summary The integration framework applies predefined invocation channel request class processing logic in the processing class to the request object structure. An invocation channel request processing class typically implements additional processing logic and converts data from an object structure format to an invocation channel format.
Synchronous Outbound Integration Processing Output The following table shows the possible request user exit preprocessing outcomes. Condition Output No preprocessing method exists. The existing object structure or invocation channel, unchanged. The preprocessing method skips the None; processing ends. record. The preprocessing method stops the None;...
Synchronous Outbound Integration Processing Response Class Processing Summary The integration framework applies predefined invocation channel response class processing logic in the processing class to the response object structure. An invocation channel response processing class typically implements additional processing logic and converts data from an invocation channel to an object structure format.
Synchronous Outbound Integration Processing Output The following table shows the possible response user exit preprocessing outcomes. Condition Output No preprocessing method exists. The existing object structure or invocation channel, unchanged. The preprocessing method skips the None; processing ends. record The preprocessing method stops the None;...
Integration XML Structure Integration XML Structure The standard format for all integration XML messages that are exchanged through the integration framework is an object structure within a root element. Standard services do not support the use of object structures. For example, the XML has the following format which is based on the PERSON object structure: <syncMXPERSON>...
Integration XML Content The following operations are available. Create Delete Invoke Publish Query Sync Update Root Element The root element of an XML message contains one or more object structures. The name of the root element is the concatenation of the operation and the name of the associated object structure.
Page 78
Integration XML Content Attribute Description Type Applicable to event The origin of an outbound XML eventType All output operations message. Valid values are: 0 (false)—Generated by the Data Export feature. 1 (true)—Generated by an outbound integration event listener (that is, data entry in an application).
Page 79
Integration XML Content Attribute Description Type Applicable to rsStart In responses to queries: integer Responses (output) This value matches the rsStart value in the corresponding query. If the corresponding query contains a maxItems value, the rsStart value in requests for additional records is rsStart + rsCount + 1.
Page 80
Integration XML Content The following examples illustrate a root element with attributes. <?xml version="1.0" encoding="UTF-8"?> <max:QueryMXPERSON xmlns:max="http://www.ibm.com/maximo" creationDateTime="2008-09-28T21:49:45" baseLanguage="EN" transLanguage="EN" messageID="11876346770938768" maximoVersion=" 7 1 Harrier 060 HARRIER-066" uniqueResult="0" maxItems="201" rsStart="100"> <max:MXPERSONQuery> <max:PERSON> </max:PERSON> </max:MXPERSONQuery> </max:QueryMXPERSON> <?xml version="1.0" encoding="UTF-8"?> <max:QueryMXPERSONResponse xmlns:max="http://www.ibm.com/maximo"...
Object Structure Element Object Structure Element Every XML document contains one or more object structure elements. The following table lists the attributes that can apply to the object structure element. All attributes in this table are optional. Attribute Description Type Applicable to action The value is derived from action...
Object Structure Element Field Attributes The following attributes apply at the field level on outbound XML messages: changed glorder langenabled maxvalue maxencrypted These attributes apply to messages that are generated by an outbound integration event. The changed attribute does not apply to messages that are generated by the Data Export feature.
Object Structure Element In outbound XML the value of a GL type field, including delimiters, appears in the VALUE child element within the field. The outbound XML also places the GL type field components, based on the database definition of the components, in the GLCOMP element.
Object Structure Element The maxvalue Attribute Fields that are associated with a synonym type domain can specify the corresponding maxvalue. This value is available for customization or exit processing. It is informational only and is not used for processing. <MXITEM> <ITEM>...
Page 85
Object Structure Element Value Description Null Add records or replace records in the receiving system, depending on whether the primary record exists in the database. The Change, Replace, and AddChange actions differ in the information that they include in the XML message and the processing that they require of the receiving system.
Page 86
Object Structure Element object. If the parent object does not exist in the database, no error is reported to the sending system. Update actions The change and replace actions indicate that the existing database records are updated. The AddChange action can result in an update when the record that is to be processed exists in the receiving system.
Page 87
Object Structure Element AddChange action The AddChange action is like the replace action, except that any existing child record that is not specified in the message is not deleted. An AddChange action on the primary object adds the primary record and all the sub-records that are provided in the message, if the primary record does not exist in the database.
Page 88
Object Structure Element Deletion of POLINE3 and, by default, its child POCOST records Records accompanying In the diagram, the PO with the action value equal to Change or AddChange has the change action records that accompany a change action on the primary PO object. For the sample PO, the following records are sent from sending system: A change action on the PO record (PO 101), due to the changes in its child POLINE and POCOST records...
Page 89
Object Structure Element For the sample PO, the sending system sends the following records. Some may contain updated information; some may contain the same data that are in the database. The PO header POLINE 1 and POCOST lines 1 and 2 POLINE 2 and POCOST lines 1 and 2 The XML message does not include the POCOST 3 record for POLINE 1, or the POLINE 3 record, so the receiving system deletes these records and POLINE 3...
Object Structure Element Additional Considerations Boolean columns In inbound transactions, a tag that represents a boolean field must contain a value of 0 (false) or 1 (true). If the tag does not contain a 0 or a 1, the object generates an error.
Integration Schemas Viewing XML To view XML, select the Generate Schema/View XML action from the Select Action menu in the following applications: Enterprise Services Invocation Channels Object Structures Publish Channels You also can view XML on the Web Service Library tab in the Web Services Library application.
System Properties application. The default name space property value is: http://www.ibm.com/maximo If you change the name space property, the system regenerates the MXMeta.xsd file, which contains the core reusable types that the system uses to build all the other schemas.
Integration Schemas Schema Directory and Files The generated schema files are in the subdirectories in the schema directory on the server. Group Subdirectory Description Metadata schema/common/meta Metadata schema file (MXMeta.xsd) Object schema/common/mos Object structure schema files Structure Object schema/common/mbo Object schema files Service schema/service Service level schema files (for...
Integration Schemas Group Attributes Applies to QueryContentGroup maxItems The root element of all query input schema rsStart types. uniqueResult ResponseContentGroup rsCount The root element of all response output schema rsStart types. rsTotal Content, Query Data, and Supporting Data Types The following tables list the content, query data, and supporting data types. Type Description Attributes...
Page 95
Integration Schemas Type Description Attribute MXBooleanQueryType Extension of integer operator MXDateTimeQueryType Extension of dateTime operator MXDomainQueryType Extension of string operator maxvalue MXDoubleQueryType Extension of double operator MXFloatQueryType Extension of float operator MXGLAccountQueryType Complex type with value “VALUE” operator MXGLComponentQueryType Extension of string operator MXIntQueryType Extension of integer...
Integration Schemas Object Structure Schemas Object structure schemas define the content of an object structure. Each object structure has a distinct schema that includes all the configured persistent and nonpersistent fields that are defined for each object in the structure. Object structure schemas are not used directly as input or output for any service.
Page 97
Integration Schemas These elements are referenced in service level schemas and only the MXPERSON and MXPERSONSet can be outside the context of a service level schema. For example, internal applications such as Deployment Manager use schemas comparable to MXPERSON and MXPERSONSet. Integration users must use object structure services within the context of a service level schema.
Integration Schemas Object query content You can use query elements only within the context of a service level schema. The following content format is in the object query element: Element MXPERSONQuery is type MXPERSONQueryType. Complex type MXPERSONQueryType has elements for all the configured attributes of the top object (PERSON) of the object structure.
Integration Schemas Schema Generation The system generates the files when you generate the following components: Object structure schema that contains the object Object structure service or enterprise service schema where the object structure referenced by the service includes the object Standard service schema that contains the object All object schemas include the MXMeta.xsd schema file.
Integration Schemas Service Level Schemas Service level schemas apply to enterprise services, object structure services, and standard services. The same schema describes enterprise services and object structure services. A different schema describes standard services. Enterprise services, object structure services, and standard services use objects and object structures as input and output for the operations they support.
Integration Schemas InvokeMXPERSON InvokeMXPERSONResponse PublishMXPERSON QueryMXPERSON QueryMXPERSONResponse SyncMXPERSON UpdateMXPERSON Standard Services Standard services are the services that applications provide for performing specific operations on objects. Each service might have multiple methods that can be exposed as Web services. Standard services are available only for methods that are properly annotated within the service.
Integration Schemas Standard Service Output The following diagram shows the pochangeStatusResponse (type = pochangeStatusResponseType) output. For this example, the response of the method is the PO object. Object Structure and Enterprise Services The object structure definition contains the content for both object structure and enterprise services.
Page 103
Integration Schemas CreateMXPERSON The following diagram represents the content of the CreateMXPERSON element: Element The CreateMXPERSON element is type CreateMXPERSONType. The CreateMXPERSONType has element MXPERSONSet, which is type MXPERSONSetType. MXPERSONSet is derived from the object structure schema. MXPERSONSetType has elements for all the configured attributes of the PERSON object and elements for the child objects (PHONE, EMAIL, and SMS) that are defined in the object structure.
Page 104
Integration Schemas Create The following diagram represents the content of the CreateMXPERSONResponse MXPERSONResponse element: Element Element CreateMXPERSONResponse is type CreateMXPERSONResponseType. The CreateMXPERSONResponseType has element PERSONMboKeySet, which is type of PERSONMboKeySetType. PERSONMboKeySetType has element PERSON, which is type PERSONKeyType. The PERSONKeyType contains only the PERSONID attribute of the PERSON object (the Primary Key of the PERSON).
Page 105
Integration Schemas DeleteMXPERSON The following diagram represents the content of the DeleteMXPERSON element: Element Element DeleteMXPERSON is type DeleteMXPERSONType. The DeleteMXPERSONType has element MXPERSONDelete, which is type MXPERSONDeleteType. MXPERSONDeleteType has elements for all the configured attributes of the PERSON object. Delete supports only the top object of the object structure (PERSON).
Page 106
Integration Schemas PublishMXPERSON The following diagram represents the content of the PublishMXPERSON element: Element Element PublishMXPERSON is type PublishMXPERSONType. The PublishMXPERSONType has element MXPERSONSet, which is type MXPERSONSetType. MXPERSONSet is derived from the Object Structure Schema. MXPERSONSetType has elements for all the configured attributes of the PERSON object and elements for the child objects ((PHONE, EMAIL, and SMS) defined in the object structure.
Page 107
Integration Schemas QueryMXPERSON The following diagram represents the content of the QueryMXPERSON element: Element The QueryMXPERSON element is type QueryMXPERSONType. QueryMXPERSONType has element MXPERSONQuery, which is type MXPERSONQueryType. MXPERSONQueryType has elements for all the configured attributes of the PERSON object. Query supports only querying against the top object of the object structure (PERSON).
Page 108
QueryMXPERSONRespo The following diagram represents the content of the QueryMXPERSONResponse nse Element element: Element QueryMXPERSONResponse is type QueryMXPERSONResponseType. The QueryMXPERSONResponseType has element MXPERSONSet, which is type MXPERSONSetType. MXPERSONSetType has elements for all the configured attributes of the PERSON object and elements for child objects defined in the object structure (PHONE, EMAIL, and SMS).
Location of Interface Tables Location of Interface Tables The endpoint definition for an external system or a publish channel points to the database where its interface tables are stored. The database can be a local database or a remote database. The predefined interface table endpoint (MXIFACETABLE) points to the local database, and you can add endpoints for remote databases.
Creation of Interface Tables The sequence of TRANSID identifies the sequence in which records are processed by the integration framework. For example, when employees and their phone numbers are entered into the system, the TRANSID values for the PO record must be lower than the TRANSID values for the PO receipt records that reference that The primary difference between the MXIN_INTER_TRANS and MXOUT_INTER_TRANS queue tables is the direction of the interface table...
Regeneration of Interface Tables Regeneration of Interface Tables When columns are added or deleted from the system database tables, you must regenerate all local and remote interface tables that are associated with those object structures. You regenerate interface tables by using the Create Interface Tables option on the Select Action menu in the External Systems application.
Format of Interface Tables Format of Interface Tables The format of an interface table is the same as the format of the corresponding object structure. The interface table includes the persistent and nonpersistent columns that are included in the object structure. The interface table excludes the columns that are excluded from the object structure.
Format of Interface Tables Restricted Columns The HASLD field, which is an internal system column, is excluded from all object structures. Do not include this column in any object structure that is associated with an interface table. The LANGCODE field is also excluded from the predefined object structures.
Page 115
Format of Interface Tables For example, assume that you create a purchase order with one line item. This transaction uses the predefined MXPOInterface, and it increments the TRANSID value that is associated with the MXOUT_INTER_TRANS queue table to 1065. The transaction produces the following records: One entry in the MXOUT_INTER_TRANS queue table, with the IFACENAME value equal to the MXPOInterface value, and the TRANSID value equal to 1065.
Format of Interface Tables The data in the MXOUT_INTER_TRANS queue table directs the external system to process the interface table records in the following sequence. Sequence Interface Table Identifier (TRANSID) of Record in Interface Table MXPR_IFACE 1001 MXITEM_IFACE 1002 MXINVENTORY_IFACE 1003 MXITEM_IFACE 1004...
Format of Interface Tables For example, if a purchase order has three line items, that transaction might produce the following records: One entry in the MXOUT_INTER_TRANS queue table, with the IFACENAME value equal to the MXPOInterface value, and the TRANSID value equal to 1065.
Format of Interface Tables The system populates the ACTION column in the outbound messages. If the external system does not populate the column in the inbound messages, the integration framework tries to retrieve and replace the corresponding database record. If the record does not exist, the integration framework tries to add it to the database.
Interface Table Polling Interface Table Polling A predefined cron task, IFACETABLECONSUMER, polls the MXIN_INTER_TRANS queue table and uses the IFACENAME, EXTSYSNAME, and TRANSID values in the queue table to place the corresponding interface table records into the appropriate inbound JMS queue. Then, individual records in the JMS queue are processed.
Configuring External Systems Configuring External Systems To use interface tables, you must create the tables and configure the IFACETABLECONSUMER cron task. Overall Processing To configure the external systems to perform general interface queue table and interface table processing: Define procedures to restore the backups of the interface tables. Create interface tables in the user interface.
Page 121
Configuring External Systems Outbound Processing To configure the external system to perform outbound interface queue table and inbound interface table processing: Set up a process to retrieve interface table transactions by using the MXOUT_INTER_TRANS queue table. You can use a polling program, a trigger, or any other mechanism.
Page 122
Configuring External Systems Integration Guide...
Message Details Message Details When you enable message tracking, the integration framework writes all processed messages to the MAXINTMSGTRK table. The system assigns a status to each message which represents its current position in the queue-based processing cycle. Individual message events are displayed in the Message Details table window.
Message Tracking Configuration To find all messages for the MXPERSONInterface enterprise service, create the following fully qualified XPATH expression as the External Message ID: /{http://www.ibm.com/maximo}SyncMXPERSON/@messageID Multi-noun Message and External Message ID When a multi-noun inbound message is received, the integration framework uses the enterprise service External Message ID XPATH to identify the message.
Message Events Tracked Inbound and Outbound Events The following inbound and outbound events update the MAXINTMSGTRK table: Event Details Message is written to queue A record is created in the message tracking table when the integration framework first writes the message to the queue. When the message is successfully written to the queue, the message record status is set to RECEIVED.
Sends a notification to a specified e-mail account, informing the recipient that an error occurred. On an IBM WebSphere Application Server environment, the integration framework sends an additional e-mail message to the specified e-mail account each time that you successfully restart your application server.
Interface Table Error Management Interface Table Error Management Errors can occur in the following two stages when inbound interface tables are processed: Writing data from the interface table to the queue Processing data from the queue into the integration framework The integration framework does not apply any business rules to the inbound interface table records as it writes them to the inbound JMS queue.
Error Management Configuration Error Management Configuration Error management requires the configuration of the following properties before use. System Properties Configuration The following error management properties are configurable in the System Properties application. mxe.int.adminfromemail This property specifies the from address that appears in error notifications that are submitted by the integration framework, for example, MXINTADM@ZZZ.com.
Error Management Configuration External Systems Configuration Properties The following error management properties are configurable in the Add/Modify Queues action in the External Systems application: Maximum Try Count This property specifies the number of times that the system tries to reprocess an error.
Error Notification Error Notification When an inbound or outbound transaction results in an error in a queue, the application sends an e-mail notification to the system administrator only if no other errors are awaiting correction in the same queue. The notification informs the system administrator that the queue contains one or more transactions with errors.
Message Reprocessing Message Reprocessing When you use the Message Reprocessing application, you can manage and view integration messages that are flagged with an error. You can view the error XML file without accessing the integration server error files. Failed messages can be managed in the following ways in the Message Reprocessing application: Change the message statuses to stop message processing or to reprocess a message...
<ERROR> <ERRORMESSAGE>Error occurred while processing PO (Object Structure number 1). Error is:[system:unknownerror] An unknown error has occurred. Please contact your system administrator for assistance. null</ERRORMESSAGE> <ER> <SyncMXPO xmlns="http://www.ibm.com/maximo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creationDateTime="2007-05-22T14:04:03-04:00" transLanguage="EN" baseLanguage="EN" messageID="11798570432187483" maximoVersion="7 1 Harrier 038a HARRIER-042" event="1" messageid="11798570432652428">...
Message Reprocessing HARRIER-042" event="1" messageid="11798570432652428"> <MXPOSet> <PO action="Update"> </PO> </MXPOSet> </SyncMXPO> </IR> </ERROR> Process Message After you complete your error XML changes in the Error Data window, you can resubmit the message. The application then starts reprocessing the message. The following actions are performed when the message is successfully processed: The error file is deleted The record in the MAXINTERRORMSG table is deleted The DELETEFLAG, CHANGEBY, and CHANGEDATE attributes in the...
Common Causes of Errors Message Deletion You can choose to delete a message from a queue. After you delete a message, the system cannot reprocess it. When the system deletes the message, the record is deleted from the MAXINTERRORMSG and MAXINTERROR tables. The application refreshes the result set and omits the deleted message listing on the main tab of the Message Reprocessing application.
Common Causes of Errors Error Type Description Actions Communication error Caused by communication problems with the Restore communication with the external system from system failures or external system. network issues. Message error Caused by erroneous message data values. Change the transaction status to HOLD.
Page 140
MXPERUSERInterface publish channel, the system generates a MX_MXPERUSERInterface file. The file contains the following original outbound message content. <?xml version="1.0" encoding="UTF-8" ?> <PublishMXPERUSER creationDateTime="2007-12-04T13:21:03-05:00" transLanguage="EN" baseLanguage="EN" messageID="11967924643281249" maximoVersion="7 1 082 V7100-001" event="0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ibm.com/maximo"> <MXPERUSERSet> <PERSON> <ACCEPTINGWFMAIL>0</ACCEPTINGWFMAIL> <ADDRESSLINE1>760 Unity Blvd.</ADDRESSLINE1> <ADDRESSLINE2 /> <ADDRESSLINE3 /> <BILLTOADDRESS />...
Non-queue Error Management Non-queue Error Management Synchronous integration scenarios require continuous communication between the system and external applications. These synchronous scenarios do not require a messaging queue mechanism. Non-queue error management is necessary when an error occurs when a message is being processed by the integration framework or by the system.
Predefined Components and Queues Predefined Components and Queues The following integration components are predefined: An external system (EXTSYS1) An adapter (MAXIMO) Object structures Enterprise services Publish channels Endpoints In addition, the following JMS queues are defined: Inbound sequential (sqin) Inbound continuous (cqin) Outbound sequential (sqout) Error continuous (cqinerr) You can use the predefined queues for development and production.
Integration Framework Administration Integration Framework Administration The integration framework specifies the following system properties, some of which have default values that you should consider updating: System user name Global directory Update SENDERSYSID setting Administrator e-mail address Sender e-mail address The following table describes the framework properties. You can update the following properties in the System Properties application.
JMS Queues Property Description mxe.int.resolveschema A true property value indicates the service schema does not have any references to other schema documents; all schema dependencies are resolved for service schemas. The default value is 0. mxe.int.wsdlincludesschema When you set this property value to true, the Web Service Definition Language (WSDL) files contain the complete service schema definition.
JMS Queues Queue Properties The maximum try count property represents the number of times the system retries to process a failed message before sending an e-mail notification. The maximum try count default value is 5; the integration framework retries a failed message five times.
JMS Queues Parameter Description ENTERPRISESERVICE A required parameter value that identifies the enterprise service name that the cron task uses to process all files that are located in the source directory. FILENAME An optional parameter value that determines whether the cron task data load process selects source files based on its file name.
JMS Queues committed to the queue. Index files are available in the RECOVERY folder which is created in the cron task source directory. The XMLFILECONSUMER cron task uses the index file name to identify the file that was processed before the server or queue problem was encountered. The cron task continues to process the XML file starting at the last successfully committed noun in the index file.
Integration Components File split - Multi-noun files that are processed by the FLATFILECONSUMER cron task are split before they are written to the queue. The cron task identifies if the file that is loaded is a multi-noun XML file. If the XML file is a multi-noun file, the integration framework uses the enterprise service key columns to identify where the file split occurs.
Integration Components Use the Select Action menu in the External Systems application to perform the following configuration activities: Configure external system integration controls and assign system-level default values. Create external system interface tables. Create and configure a queue. Endpoints Your outbound transactions (publish channels or invocation channels) for your business processes need endpoint values.
The XPATH expression indicates where the integration framework splits the multi-noun messages with an XML definition. For example, the following XPATH expression shows a Split Tag field value: {http://www.ibm.com/xmlns/prod/tivoli/swkb}SoftwareCatalog/ Products/Product The bracketed content represents the namespace value. You must provide the namespace value for all tags that are assigned a namespace.
Integration Components Configure the publish channel integration controls and assign the default values. Generate the schema files to describe the publish channel. Enable and disable the listener for the outbound integration events Publish channel configuration is required if you are working with external system and queue-based integration scenarios.
Endpoints Endpoints An endpoint represents an application component to which the system delivers outbound transactions. The following table lists the system available endpoints. Endpoint Handler Description MXFLATFILE FLATFILE Writes flat files to a specified directory location. MXIFACETABLE IFACETABLE Writes outbound transactions to local interface tables.
The CONTEXTFACTORY uses the following property when the target client runs on an IBM WebSphere Application Server: com.ibm.websphere.naming.WsnInitialContextFactory EJBEXIT Property This optional property is used for customization. This property specifies the fully qualified name of a custom Java class that implements the EJBExit interface.
Page 160
The following required property specifies the name by which the enterprise bean client is registered in the application server Java Naming and Directory Interface (JNDI) tree. Server File name Property ibm-ejb-jar-bnd.xml <ejbBindings xmi:id="Session_enterpriseservice_Bnd" WebSphere jndiName="ejb/maximo/remote/enterpriseservice"> Application Server <enterpriseBean xmi:type="ejb:Session" href="META-INF/ejb- jar.xml#Session_enterpriseservice"/>...
Handlers The following example is an IBM WebSphere Application Server provider URL. corbaloc:iiop:hostname:iiopport If the handler and the target enterprise bean are running on the same application server instance, do not specify this property because it defaults to the local server URL.
Handlers Flat File Formatting If the data in the flat file contains the flat file delimiter character, the data adds the text qualifier, which is " (quotation marks). If the data contains quotation marks, the handler escapes the quotation marks. You cannot use quotation marks as the delimiter character.
Page 163
Handlers HTTPEXIT Property This optional property is used for customization. This property specifies the fully qualified name of a Java class that interprets the HTTP response. This property also helps implement the code that is required for an external system to interpret the HTTP response.
Handlers getHeaderProperties() This method has the following signature: public Map String, String getHeaderProperties(Map String,? metaData, byte[] data, Map String,MaxEndPointPropInfo httpInfo) This method returns a map of the HTTP header properties for the request. The default implementation returns a null value unless a header property map is associated with the metadata map that has the HEADERPROPS key.
Handlers A value of 0 (false) indicates that the interface tables are available in the local system database in the system schema. You do not have to enter any other handler properties. For the predefined MAXIFACETABLE handler, the value of this property is 0.
Page 166
The messaging system represents a queue or topic that is available on the local application server, a remote application server, or a remote dedicated queuing system such as IBM WebSphere MQ. To use this handler, enable the messaging systems by using JMS.
Handlers JMSEXIT Property This optional property is used for customization. It specifies the fully qualified name of a Java class that runs the JMSExit interface. The Java class must implement the getMessageProperties() method that is defined in the JMSExit interface. You can use this option change or add properties in the JMS message.
Handlers HTTPVERSION Property This optional property specifies the version of the HTTP protocol for Web service invocations. The valid values are HTTP/1.0 and HTTP/1.1. If you do not provide a value, the system uses the default value, HTTP/1.1. HTTPCONNTIMEOUT This optional property specifies the connection timeout value in milliseconds. The Property default value for this property is 60000 milliseconds.
Handlers For example, the file name MX_MXASSETInterface_10971102668641398.xml indicates that the file was generated from a system to send data to the external system EXTSYS1. The file name also indicates that the file contains the MXASSETInterface publish channel. CMDLINE Handler The CMDLINE handler is a handler that takes a command and an endpoint as input.
Writing Custom Handlers The following tags are available: CLWORKINGDIR – A directory to change ( ) to on the remote system before the command is run. CLSSETUPCMD – A setup command to be run before the main command. Use this tag for any environmental setup that must occur on the remote system before the main command is issued.
Page 171
Writing Custom Handlers The following method sends data to the specified endpoint. Metadata provides information about the external system and the interface. Data is the XML data. DestinationMap specifies the endpoint. sendData(Map metaData, byte[] data, Map destinationMap) The handler class displays the properties for which you must specify values. The FTPHandler.java file in the psdi.iface.samples directory contains an example of the handler.
Cron Tasks Cron Tasks The interface table polling process uses a single default cron task called IFACETABLECONSUMER. This cron task reads all messages from all interface tables for all external systems that write to the tables. Configuring Cron Tasks For improved performance on single-server and multi-server environments, you can configure multithreaded interface table polling by defining multiple instances of the IFACETABLECONSUMER cron task with different property values.
Queue Tables To list multiple interface names in the ENTERPRISESERVICE property: Set ENTERPRISESERVICE=MXPOInterface|MXPRInterface|… Requirements for configuring multiple instances of the cron task: The selectors must be mutually exclusive, so messages are not processed multiple times. The selectors must retrieve all the enterprise service transactions that you use, so no messages are left unprocessed.
Creating and Configuring a Queue Creating and Configuring a Queue You can use separate queues, one for each external system that you use. Queues can be configured for use with publish channels and enterprise services that integrate with one or more external systems. Queue creation and configuration involves multiple steps.
Sequential Queues Configure your external system and enterprise services to use the queues. To enable message processing, you must configure the consumers value of the message queue. The system processes the messages after they are written to the queue. Sequential Queues The sequential queue is a JMS queue with a system cron task as a consumer.
To enable the message beans, uncomment the following lines in the ejb-jar.xml file which is located in the ...\applications\maximo\mboejb\ejbmodule\META- INF\ folder. The code changes apply to both IBM WebSphere Application Server and WebLogic Server environments. <!-- MEA ejb for MDB <message-driven id="MessageDriven_JMSContQueueProcessor_1">...
Continuous Queue <max-beans-in-free-pool>3</max-beans-in-free-pool> </pool> <destination-jndi-name>jms/maximo/int/queues/cqin</ destination-jndi-name> <connection-factory-jndi-name>jms/maximo/int/cf/intcf</ connection-factory-jndi-name> </message-driven-descriptor> <transaction-descriptor> <trans-timeout-seconds>600</trans-timeout-seconds> </transaction-descriptor> <jndi-name>JMSContQueueProcessor-1</jndi-name> </weblogic-enterprise-bean> --> Continuous Queue Performance You can improve performance by increasing the number of message-driven beans for a particular queue and by introducing additional application servers in a cluster.
Continuous Queue Select intjmsact. Specify a value in the Maximum Concurrent End Points field. WebLogic Server By default, the WebLogic Server is configured to have three message-driven beans. Use the values shown in bold to configure the number of message-driven beans in the weblogic-ejb-jar.xml file: <!-- MEA MDB <weblogic-enterprise-bean>...
Continuous Queue Continuous Queue Errors You can use different application server configurations to manage error messages. When you are loading a large volume of messages, you can encounter a large number of errors. The continuous queue continues to reprocess the messages at the top of the queue that are in error instead of new messages that are being added to the queue.
<method> <ejb-name>JMSContQueueProcessor-2</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> --> You also need to uncomment the following code in the ibm-ejb-jar-bnd.xmi to enable the message-driven beans on the error queue. <!-- MEA MDB for error queue <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="intjmsacterr"> <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ ejb-jar.xml#MessageDriven_JMSContQueueProcessor_2"/>...
Continuous Queue For example, when you set the batch size property to -1 (unlimited), and the redelivery delay property to 30 seconds (30,000 milliseconds), new messages can be processed in the queue. Processing continues even when a large number of errors are being reprocessed.
Queue Selectors Properties Description compressed Indicates whether the message is compressed. Values can be true or false; the default value is false. The standard Java Inflater and Deflater APIs (java.util.zip) are used for compression. uncompressed_length Stores the original message payload size before compression.
Queue Utilities Applying selectors splits a queue into smaller queues, each of which contains a subset of data that each cron task or message-driven bean uses. An error in one subset of the data does not stop processing in the others in a sequential queue. While selectors provide flexibility in separating the processing of transactions, they impair the performance of poll processing.
IBM WebSphere MQ You can use IBM WebSphere MQ as a standard for your queuing activities. The integration framework supports WebSphere MQ Version 6. Before you use the WebSphere MQ for any queuing activities, you must familiarize yourself with WebSphere MQ configurations and implementations.
IBM WebSphere MQ Configuring the Integration Queues and WebSphere MQ Provider You can replace the integration framework queues with the WebSphere MQ queues. The queue setup is supported when you configure the WebSphere Application Server and the integration framework queue definitions.
Integration Queue Integration Queue The Java Message Service (JMS) queues that are used by integration processing support basic J2EE security (user ID and password-based authentication and authorization). You can prevent unauthorized access to the queue by assigning a user ID and password to the Java Naming and Directory Interface (JNDI) Name, even if the JNDI name of the queue is known.
Enterprise Bean Access Under the <assembly-descriptor> section in the ejb-jar.xml file, add the following elements shown in bold text: <assembly-descriptor> <security-role> <role-name>maximouser</role-name> </security-role> <container-transaction> <method> <ejb-name>JMSContQueueProcessor-1</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> Enterprise Bean Access The integration gateway implements an Enterprise JavaBean (EJB) as the entry point for receiving data from an external system.
HTTP Servlet Client programs call the secure version of the enterprise bean methods for each service type: Enterprise Service: secureProcessExtnernalDataAsync(..) , secureProcessExtnernalDataSync(..) Object Structure Service: secureProcessMOS(..) Standard Service: secureAction(..) To create a secure context for invoking the enterprise bean, do either one of the following procedures: Add the following sample code to the client code: Properties env = new Properties();...
Page 196
HTTP Servlet blocks, one for each type of service: enterprise service, object structure service, and standard service. The <web-resource-name> to service mapping is: <web-resource-name> Service Enterprise Service Servlet Enterprise Service App Service Servlet Standard Service Object Structure Service Servlet Object Structure Service The following integration servlet code samples have the security constraint comment sections removed for each service type.
Remote Integration APIs (MicService) Use the following the security-constraint block for a Web service servlet. <security-constraint> <web-resource-collection> <web-resource-name>Integration Web Services</web- resource-name> <description>Integration Web Services accessible by authorized users</description> <url-pattern>/services/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <description>Roles that have access to Integration Web Services</description>...
Interface Table Security processObjectStructure(..) routeData(..) To run these methods, the caller must retrieve a valid UserInfo object and pass it to the method to gain access to the secure layer. A UserInfo object is a serialized object that contains user details (user, password, locale, language, and time zone information).
Page 200
Object-Level Authorization For example, you can assign the status option to the changeStatus method of the PO standard service. To run the standard service by using HTTP, enterprise bean, or SOAP, you need authorization to the STATUS option. Standard service authorization does not support the use of a condition that you associate with the signature option.
Configuring the Cron Task Configuring the Cron Task The interface table cron task, the data import cron task, and the Java Message Service (JMS) queue cron task are cluster-aware functions. By default, the cron task framework runs a task on a randomly chosen server. If you want to configure your cron task to run on a specific application server within your cluster, configure the cron task as shown in the following example.
JMS Queues JMS Queues In a cluster configuration, the JMS queues are associated with one member of the server cluster. Access to the queues is provided by the Java Naming and Directory Interface (JNDI) service. The JDNI service is available across all the members on the cluster as shown in the following diagram.
JMS Queues WebSphere Application Server Continuous Queue Cluster The following diagram shows one example of a cluster configuration on the IBM WebSphere Application Server. The diagram is an example of a continuous queue integration bus configuration in a cluster of three application servers. To gain the benefit of multi-server processing within a cluster, each member of the cluster needs to be configured with its own message engine.
Page 205
JMS Queues Integration cron tasks deliver enterprise service messages from flat or XML files and interface tables. The cron task places messages into the queue store on the server where the cron task is running, which limits the processing to a single server.
JMS Queues WebSphere Application Server Sequential Queue Cluster The following diagram shows one example of a cluster configuration on the WebSphere Application Server. The sequential queue receives JMS producer messages and processes the JMS consumer messages. A sequential queue integration bus cluster consists of three application servers and one message engine on a single application server.
JMS Queues Unlike the continuous queue, there is no multi-threading of messages. A cluster implementation does not significantly impact the processing performance of messages that are processed through the sequential queue. WebLogic Server Continuous Queue Cluster The following diagram shows one example of a cluster configuration on the WebLogic Server.
JMS Queues After messages are in the queue, all application servers can simultaneously pull messages from the queue and process them into the system. Message-driven beans must be enabled on each application server in the cluster. WebLogic Server Sequential Queue Cluster The following diagram shows one example of a cluster configuration on the WebLogic Server.
Dedicated Message Processing Servers run on any server in the cluster. Once messages are in the queue, the application server that is running the JMS consumer cron task processes messages in a sequential order. Unlike the continuous queue, there is no multi-threading of messages by design. A cluster implementation does not significantly impact the processing performance of messages that process through the sequential queue.
Inbound Message Receipt The noted components are standard J2EE components which are deployed as part of the application EAR file. All these components are cluster-aware. Enterprise Beans With a single server, the provider URL for accessing the JNDI tree is the single server URL.
Page 211
Inbound Message Receipt The following properties must point to the cluster URL: mxe.int.webappurl Integration Web Application URL mxe.int.uddiinurl Integration UDDI Registry Inquiry URL Integration UDDI Registry Publish URL mxe.int.uddipuburl The URL to access a Web service is http://hostname:port/meaweb/services/web service name where the meaweb value represents the mxe.int.webappurl system property value.
Objects and Records Objects and Records An object structure consists of one or more records that correspond to system objects. When an object is created, the object fields are populated from the corresponding record fields before standard application processing is applied. During outbound processing, the original object is populated with the record fields from the corresponding fields.
Processing Rule Definitions Processing Rule Definitions A processing rule performs an action on a field in a record or object, or on the record or object itself. After you select the applicable service or channel, the application displays the records that comprise the corresponding object structure. Select the record on which the processing rule applies.
Processing Rule Definitions SKIP action The skip action bypasses a message that meets the specified criteria. The inbound message is not processed and the outbound message is not sent to an external system. Skip processing does not generate an error, but the system log file is updated with the rule that caused the skip action.
Page 217
Processing Rule Definitions The following field transformation actions manipulate data fields within a message. SET action The set action writes a value to a specified data field. When you define the rule, you specify the data to be set and the source of the new value. Indicate whether the rule always writes the new value to the target field or writes the new value only when the field is null (the default action).
Processing Rule Definitions source field, one or more target fields, and how the rule processor identifies segments of the source field. The fields can have the following sources: A field in the selected record or object An integration control that contains the delimiter that separates the segments in the source field The source and target fields must exist in the same object.
Conditions and Evaluations Conditions and Evaluations Processing rules are applied conditionally. Any conditions must be met before the processing or action that is specified in the rule can be performed. Conditions can involve one or more of the following evaluations or comparisons: XML field data Object field Object set...
Conditions and Evaluations Because enterprise service processing rules are applied before objects are built, the processing rules cannot evaluate object fields or object sets. You can use the following combinations of categories, processing direction (outbound or inbound), and record types (record or object) in your evaluations. Direction of Processing Rule XML Field Object...
Conditions and Evaluations Type of Evaluation Description ISNOTNULL The specified field contains a value. NONE This option is available only if the When to Evaluate field is configured as Changed or Not Changed. If NONE is selected, no further evaluation is necessary.
Page 222
Conditions and Evaluations The following table lists the possible types of comparison fields that you can use in the field comparisons. Comparison of an alphanumeric source field is case sensitive. Field Integration control Compare the value in the specified field with the values in a list or value integration control.
Integration Controls Integration Controls Integration controls give you the ability to configure the behavior of any enterprise service or publish channel according to the requirements of individual organizations and sites. Processing rules and Java classes can access integration controls for evaluation purposes. Integration controls are defined at the system level.
Integration Controls Control Types You can create four types of integration controls to meet your business needs. Boolean Controls A boolean integration control specifies a value of 0 (false) or 1 (true). List Controls A list integration control contains a list of values. You can enter multiple values for the control and optionally assign a system domain to the control.
Integration Controls Multiplication Control A multiplication control can update the company in every organization in the system database. For example, use a multiplication control to update the company in every organization within the system. Value updates occur when the system receives company data using an enterprise service. New Control Creations Modifying control values at the external system level is generally sufficient to customize predefined enterprise service or publish channel processing.
® ® You can download sample Java classes or XSL files from the IBM Tivoli Open Process Automation Library (OPAL). After changing the Java class files, rebuild and redeploy the application EAR file.
Outbound Customization Outbound Customization The integration framework processes outbound messages by using either a publish channel or invocation channel. Publish channels and invocation channels use placeholders, or user exits, in the outbound processing flows. Publish Channel The integration framework processes asynchronous outbound messages by using publish channels.
Outbound Customization The primary difference between an invocation channel and a publish channel is that application code invokes the invocation channel, while an event or a data export initiates a publish channel. Additionally, the synchronous processing of an invocation channel can return a response and update the system business objects. For invocations, you can customize an invocation channel in the following ways: In the following Java exits: First user exit (user exit preprocessing)
Outbound Customization Java Exits The following figure illustrates the hierarchy of standard Java exit classes for outbound processing. These Java classes are available to both the publish channel and the invocation channel. The hierarchy illustration does not apply to processing rules, XSL, and handler exits.
Outbound Customization Change system data by changing the IR record to be sent to the external system Stop the message from being saved in the database by throwing a system exception. The entire message is rolled back, including any changes you make in the application that initiated the event. Stop the message from being sent to the external system by throwing a SKIP_TRANSACTION exception Log the transaction...
Outbound Customization The following method can perform the noted processes: Validate data Change data by changing the ER record to be sent to the external system Map additional data from the IR to the ER Stop the transaction from being saved in database by throwing a system exception Stop the message from being sent to the external system by throwing a SKIP_TRANSACTION exception...
Page 233
Outbound Customization The HTTP Processing You can use an HTTP exit placeholder for customization when sending Exit Class transactions from the system to an external system using HTTP. This exit class is optional and is called as part of the response from the HTTP call. The following figure shows the HTTP processing exit class that the system runs when a response is returned to the HTTP Post from an external system.
Outbound Customization The Enterprise Bean Processing Exit Class You can use an exit placeholder for class customization when transactions are sent to an external system using an enterprise bean. This exit class is optional and is called before the enterprise bean is called. The following figure shows the various enterprise bean processing exit classes the system uses when sending transactions to an external system.
Outbound Customization The Java Message Service Processing Exit Class You can use an exit placeholder for customization when sending transactions from the system to an external system using Java Message Service (JMS). This exit class is optional and is called before the JMS is called. The following figure shows the JMS processing exit class the system uses when sending transactions to an external system.
Page 236
Outbound Customization public void responseOk(org.w3c.dom.Document response) throws MXException responseOk() method is called after a successful invocation of the external Web service. public void responseError(Exception e) throws MXException If an error was encountered during the Web service invocation, the responseError() method is called with the originating exception as a parameter.
Inbound Customization Inbound Customization The integration framework processes inbound messages by using enterprise services. Enterprise services provide placeholders, or user exits, in the inbound processing flows for customization. You can customize an enterprise service in the following ways: In an interface table user exit In the following Java exits: First user exit (user exit preprocessing) Enterprise service processing class...
Page 238
Inbound Customization The interface table polling program is run by using the system cron task manager. The cron task, IFACETABLECONSUMER, has an optional property called EXITCLASS, where you can place the fully qualified name of a Java exit class. The Java data structure list represents the record from the interface tables, where the first element is always the action of the message.
Inbound Customization Log the transaction You identify this class in the Cron Task Setup application in the Configuration module. Java Exits The following figure illustrates the hierarchy of standard Java exit classes for inbound processing. These Java classes are available to the enterprise service. The hierarchy illustration does not apply to processing rules, XSL, or interface table exits.
Inbound Customization Stop further processing of the transaction by throwing an exception In this case, the transaction remains in the queue to be retried. Stop the message from being sent to the external system by throwing a skip_transaction exception In this case, the message is not saved in the system; the message is removed from the queue.
Inbound Customization The following method can perform the noted processes: Validate data Change external data by changing IR record to be saved in the system Map additional data from the ER to the IR Stop further processing of the transaction throwing an exception In this case, the transaction remains in the queue to be retried.
Inbound Customization Object Structure and Object Processing Rules For information about the processing rules engine, see Chapter 15, "Integration Framework Customization with Processing Rules," on page 199. Business Object User Exit Processing The Java user exits provide an exit point that runs before the objects that are created from the object structure XML are saved in the system.
Object Structure Creations Object Structure Creations The integration framework provides predefined object structures for enterprise services, publish channels, and invocation channels across multiple functional areas. The functional areas include purchasing, work management, and inventory. You can create an object structure, an enterprise service, and a publish channel to support the exchange of data to and from the integration framework.
Object Structure Creations Repeat the preceding steps for the remaining required objects. Indicate the relationship between those two objects. Define PERSON as the parent to EMAIL and as the parent to SMS. Alternate Keys An inbound message normally uses the primary key of an object to look up and process records in the system.
Predefined Object Structure Modifications By default, nonpersistent columns are excluded in the object when the object structure is created. If you modify the object structure, you can include new nonpersistent columns to the object definition in the object structure. Interface Table and Flat File Considerations If you use the object structure in interface tables or flat files, check whether duplicate column names exist in the object structure.
Predefined Endpoint Modifications You can modify a user-defined handler. You cannot modify or delete a predefined handler. You can delete a handler only if you do not associate it with an endpoint for an external system. Predefined Endpoint Modifications You can change the property values of an endpoint to meet your individual business needs.
Adapter, Service, and Channel Creations Processing Rules The integration framework applies any specified processing rules to objects, before it saves the objects. Use object structure processing rules to set or evaluate XML fields. You can manipulate key data before the object is created. You can also use processing rules to access and retrieve pertinent data from objects that you do not include in the object structure.
Adapter, Service, and Channel Creations Channel Creations After determining which adapter to use, you can create new channels for the predefined and user-defined adapters. The channels that you create determine how the adapter processes outbound integration messages. Publish Channels You can create publish channels in the Publish Channels application. When you trigger publish channel processing, the integration framework message data moves into the outbound queue.
Predefined Service and Channel Modifications All request and response processing classes and user exits have access to the invocation channel request and response objects by using the IntegrationContext.getCurrentContext() API. Endpoint The endpoint definition identifies how an invocation channel routes outbound data to a specific location.
Predefined External System Modifications Queues A new external system can use the predefined Java Message Service (JMS) queues or queues that you create. Assign at least one inbound or outbound queue to the external system. Working with Enterprise Services To work with the enterprise service that the external system uses: Indicate whether the service processes through the sequential or continuous JMS queue.
Page 252
Predefined External System Modifications Integration Guide...
Query Services Query Services Object structure services and enterprise services support query operations. An external source can use a service to run a query and to retrieve data from a system. In both cases, the object structure schema defines the XML content for the query request and the query response.
Page 255
Query Services The following table lists the attributes that can apply specifically to the root element of a query, a response to a query, or both. All attributes in this table are optional. Attribute Description Type Applicable to uniqueResult Specifies whether the query expects Boolean Query one record or multiple records in a...
Page 256
For example, the response to this query request returns records 11 through 20 of the query result set by virtue of setting the rstart value to 11 and the maxItems value to 10. <max:QueryMXINVBAL xmlns:max="http://www.ibm.com/maximo" creationDateTime="2008-09-28T21:49:45" baseLanguage="EN" transLanguage="EN" messageID="12345" maximoVersion="7.1."...
Query Services Query Operator The QueryOperatorType data type supports the use of different operators. Your query request XML can use the different operators to filter the data that is returned to the querying external source. QueryMXPERSON The following graphic represents the content of the QueryMXPERSON element: Element The QueryMXPERSON element is type QueryMXPERSONType.
Page 258
Query Services rsStart – When this value is set to 11 on the query, all the records in the result set are returned starting with record 11. The query result skips records 1 - 10. When the attribute is not defined, the records are returned starting with record 1 in the result set.
Object Structure Element The Query Response element uses the following additional attributes: rsStart – This value contains the value set on the query request. If the value is not defined on the request, the default response value is 1. rsCount – This value contains the number of records that are returned in the query response.
Object Structure Element For example, to find all employees that have an ACTIVE status, format the query as follows: <QueryMXPERSON> <MXPERSONQuery> <PERSON> <STATUS operator ="=">ACTIVE</STATUS> </PERSON> </MXPERSONQuery> </QueryMXPERSON> Field Selection A field-based query compares the value in a database field with the value in the XML field of the query request.
Object Structure Element The following query searches for the inventory balances where the bin number is not null. <QueryMXINVBAL> <MXINVBALQuery> <INVBALANCES> <BINNUM operator =”!="></BINNUM> </INVBALANCES > </MXINVBALQuery> </QueryMXINVBAL> The following query searches for the inventory balances where the bin number is null.
A successful response to a query that is run in a Web service returns the query result set. If the result set is empty (it contains no records), the XML that is returned in the SOAP body contains the following empty mxpersonset tag. <max:QueryMXPERSONResponse xmlns:max="http://www.ibm.com/maximo" creationDateTime="2008-09-28T21:49:45" baseLanguage="EN" transLanguage="EN" messageID="12345" maximoVersion="7.1"...
Page 263
Web Service Queries Integration Queries...
Object Structure Web Services Object Structure Web Services External applications can use Web services to query or send messages to the integration framework. The object structure service contains the logic for integration message processing. You can create an object structure Web service from a predefined or a user- defined object structure.
Standard Web Services Can use a Java Message Service (JMS) queue (asynchronous process) or bypass the JMS queue (synchronous process). Enterprise Web services that are processed in a JMS queue do not support the Query operation and do not provide any response content to the caller. Enterprise Web services that are configured with the Query or Create operations provide XML content in the service response.
XML Schema Generation XML Schema Generation The generated schema files are stored in a folder called schema, which is in the location that you specify in the mxe.int.globaldir system property. This folder contains the following subfolders: Common/COMMON/META Common/COMMON/MOS Common/COMMON/MBO SERVICE If you set the mxe.int.resolveschema includes global property in the System...
Web Service Definition Language Generation web service name is the name of the object structure schema you are retrieving with an .xsd file extension. Web Service Definition Language Generation The Web Service Definition Language file is generated during the deployment of a Web service.
You can invoke integration Web services by using Dynamic Invocation Interface (DII) that uses the JAX-RPC API. You can also generate client stub programs by using a Web services tool of your choice, such as IBM WebSphere Application ® Server or Microsoft .NET Framework.
Page 271
Integration Web Service Invocations For all operations, except for the Query and Create operations, the SOAP body returns empty: <?xml version="1.0" encoding="UTF-8"?> <max:SyncPERSONResponse xmlns:max="http://www.ibm.com/ maximo" creationDateTime="2008-09-28T21:49:45" baseLanguage="string" transLanguage="string" messageID="string" maximoVersion="string" /> The Query operation returns the response content according to the object structure definition.
Page 272
Integration Web Service Invocations Integration Guide...
Default Processing for Translatable Columns Default Processing for Translatable Columns When you log in, you can choose a language code other than the base language for the system. In any application, you can then enter language-specific values for columns that are designated as translatable. By default, outbound transactions contain the applicable column values in the language that is associated with the login session.
Multilanguage Attributes Multilanguage Attributes Service or channel root elements use the following attributes to manage multilanguage processing: The baseLanguage Attribute The baseLanguage attribute identifies the base language of the system or application that generates outbound XML. For inbound transactions (input XML), this attribute is not validated.
An integration module provides a mechanism for a process management product, such as Change or Release, to invoke an external operational management product, such as IBM Tivoli Provisioning Manager. You can configure an integration module to automate logical management operations, such as software deployment, by using an operational management product.
Discovery, or an asset management database. First load your operational management product and configuration item data into the discovery engine using the bulk loader interface. The discovery engine combines data from multiple ® ® sources into one data model. You can use the IBM Tivoli Integration Composer Integration Guide...
Name - The name of the action (for example, Get Deployment Status) Namespace - The unique qualifier (for example, com.ibm.tivoli.deployment) Invocation pattern: Synchronous - The process management product issues a request and the integration module returns the results of the operation immediately.
Integration Module Prerequisites Business object attributes - The specific attributes of the objects that are needed either for input or output and their data types. Input objects and input object attributes identify the data that the process management product passes to the integration module. If the logical management operation is configured with input attributes and does not contain an input object, the process management product can pass any business object that has the required input attributes.
Integration Module Implementation Properties Operational management product and integration module associations are created when the OMPPRODUCTNAME and OMPVERSION values are added to the integration module. If multiple versions of the operational management product are used with the integration module, use a null value for the OMPVERSION.
Integration Module Implementation Properties Name Description ENDPOINTPROP A map of String.psdi.iface.mic.MaxEndPointPropInfo properties that override the endpoint properties. USERNAME The user name that the integration framework uses to communicate with the endpoint. PASSWORD The password for USERNAME. Integration Module Tasks Java-based integration modules are responsible for populating the logical management operation response object or response object set with the results of the operation.
Integration Module Implementation Properties and PASSWORD properties that are returned from the credential mapper can also override the endpoint properties. Integration module endpoint properties are overwritten by the endpoint properties that are passed by the process management product. For example, the USERNAME and PASSWORD properties.
Page 284
Integration Module Implementation Properties Can be used by different applications while using different business objects. Can be designed to make multiple external invocations. Can use different communication protocols for different logical management operations and operational management products. Supports the use of another thread to accommodate a long-running service.
Integration Module Implementation Properties Implementing an integration module by using an invocation channel has the following disadvantages: Requires more registration and configuration of system artifacts, even when the invocation is simple. Multiple applications cannot use the integration module with different business objects.
Integration Module Implementation Properties management operation is being called. At run time, the integration module retrieves the LMONAME and LMONAMESPACE properties from the metaData input map: import psdi.iface.omp.IMConstants; String lmoName = metaData.get(IMConstants.LMONAME); String lmoNamespace = metaData.get(IMConstants.LMONAMESPACE); The integration module can retrieve logical management operation data from the source object.
Integration Module Invocation When you override these methods, you can perform additional integration module processing. The properties that are passed to the invocation channel are available to the processing classes. The following outbound processing class code shows you how to retrieve the operational management product globally unique identifier when you run an invocation channel: import psdi.server.MXServer;...
Integration Module Invocation Identify the operational management product and integration module. Invoke the integration module. Process the integration module response. Step 1: Identify the Logical Management Operation The process management product provides processes to run logical management operations. The logical management operation runs a process, such as software deployment, on a configuration item by using an operational management product.
Integration Module Invocation Utility Method Function psdi.iface.app.im.MaxIMSetRemote Retrieves the list of the integration modules getIMListForOMP(String ompGuid) that implement at least one logical management operation on the operational management product. Collection getIMListForOMPAndLMO(String ompGUID, Retrieves the list of integration modules that String lmoName, String lmoNamespace) implement the logical management operation on the specified operational management product.
Integration Module Invocation The property IMConstants.ENDPOINTNAME contains the name of the endpoint that is associated with in the operational management product, integration module, and logical management operation relationship. In most cases, the endpoint property is the value that the process management product passes to the integration module. However, in unusual cases, the action class overwrites the configured endpoint.
Integration Module Invocation The action class passes the following properties when it calls one of the invoke methods on the instantiated service invoker. Property Description metaData The property map that the get service invoker utility method returns. Source object and object set The object with the input attributes that are defined on the logical management operation.
Integration Module Invocation Get Service Invoker Utility Methods The operational management product service provides the following getServiceInvoker utility methods to retrieve an instance of an integration module for a logical management operation and an operational management product. Utility Method Function Map<String, Object>...
You can configure a console URL for any application with a Web-based console, such as the IBM Tivoli Provisioning Manager or the IBM Tivoli Configuration Manager. Additionally, you can configure console URLs for consoles that use Java™ Web Start, such as Tivoli Application Dependency Discovery Manager.
External Application Preparations External Application Preparations Most external applications have a Web-based console that you can launch from a URL in a Web browser. The Launch-in-context feature supports the Web application (Servlet or JSP), portal, and Java WebStart console types. To perform a navigation, the external application console must support the land- in-context capability.
Page 297
Defining Launch Entries For example, the following URL is a URL for the Person application that uses the PERSONNAME attribute. https://extsyshost:9045/tcWebUI/interaction- handler?actionId=viewPerson&Person={PERSONNAME} You can also use an attribute from an object that is related to the main business object by specifying the relationship name and the attribute name {relationshipname.attributename} The following URL includes a city attribute from an address.
Defining Launch Entries Operational Management Product-specific Properties When you define launch entries, you enter these property values for the associated operational management product: Specific to operational management product launches: Name and version of the operational management product. When you associate an operational management product to a launch entry, the framework searches for the product name on the operational management product servers in the database that manages the configuration item.
Associating the Launch Entry with a Signature Option Associating the Launch Entry with a Signature Option Before you add a launch point to an application, you must associate the launch entry record with a signature option. To associate the launch entry with a signature option: Open the Application Designer application.
Associating a Signature Option with a Push Button In the Position field, enter a number to specify the relative position of the select menu item. In the Tabs field, select the MAIN value when the launch URL has substitution variables in it, otherwise select the ALL value. Optional: Enter values in the following fields: Header Description Tabs...
Associating a Condition with a Signature Option management product that is configured on the launch entry does not manage the configuration item. This condition applies to launch entries that you associate with a configuration item object or actual configuration item object. You can configure a condition to use the pre-existing condition class.
Page 302
Associating a Condition with a Signature Option Integration Guide...
Default Collaboration Switches The following table shows the prefix of the process control ID and indicates the application to which it applies. Prefix of Process Control ID Corresponding Application Invoice Item Inventory Labor Purchase order Purchase requisition Work order For example, the IVRC, IVRCY, and IVWO collaboration switches are all related to inventory processing.
Collaboration Switch Retrieval The default switches use various combinations of the following values in the System ID 1 and System ID 2 fields: System ID Value Meaning THISMX The system identified in MAXVARS.MXSYSID The collaboration switches do not use the actual value in MXSYSID.
View Collaboration Switches If the record exists, the system uses the record process control value to determine whether or not to bypass system processing. If the record exists, ignore the remaining steps. If the record does not exist, the system modifies the key as follows: If System ID 1 now equals THISMX and System ID 2 does not equal THISMX, the system uses EXT as the System ID 2 value.
Collaboration Switch Modification Collaboration Switch Modification Authorized users can use any database tool to modify the process control value of a collaboration switch. Do not change the value of PCID, OWNER1SYSID, or OWNER2SYSID on existing collaboration switches. To change the process control value in a collaboration switch, use the following SQL statement: update mxcollab set pcvalue...
Collaboration Switch Additions Before you modify the MXCOLLAB table to reflect these conditions, the INV collaboration switches to have the following values: Process Control ID System ID 1 System ID 2 Process Control Value THISMX THISMX Modifying the MXCOLLAB Table To modify the MAXCOLLAB table: Change the value of the INV/ EXT/ THISMX collaboration switches to 1 to bypass normal update processing.
Page 309
Collaboration Switch Additions After you perform this procedure, the INV collaboration switches will have the following values. Process Control ID System ID 1 System ID 2 Process Control Value THISMX THISMX THISMX For example, when you set the value of the ISUIN integration control to 1, the issue transactions are accepted from an external system.
Inventory Collaboration Switches Inventory Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 Update inventory. Update inventory. INVTRANS or INVENTORY MATUSETRANS Used when creating issues, returns, or Do not update inventory. miscellaneous receipts or adjustments.
Page 311
Inventory Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 INVTR Update the From storeroom on a transfer or Update INVBALANCES in the From MATRECTRANS LOCATIONS the receipt of internal PO. storeroom.
Invoice Collaboration Switches Invoice Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 IVILC Update inventory last cost. Update inventory last cost. INVOICE INVENTORY Used when approving invoices. Do not update inventory last cost. IVINV Update inventory average cost.
Page 313
Invoice Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 IVRCY Create service receipts for invoice lines with a Generate a service receipt for the invoice INVOICE PO reference and RECEIPTREQD = N. line.
Labor Transaction Collaboration Switches Labor Transaction Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 LTSRC Generate service receipts for POs. Allow setting value of LABTRANS LABTRANS.GENAPPRSERVRECEIPT to Y; Used when creating labor transactions or configurable in the Application Setup.
Page 315
Purchase Order Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 POIVM Create inventory vendor information for Update or create INVVENDOR record. ITEM of inventory. POLINE Do not create INVVENDOR record. Used when approving POs.
Purchase Requisition Collaboration Switches Purchase Requisition Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 PRDEL Delete PRs. Do not delete PR. “THISMX” Used when deleting PRs. Use only when Delete the PR and PRLINES;...
Page 317
Purchase Requisition Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 PRPAB Do not allow unreferenced external purchase If PRLINE.AGREEMENTPONUM is not in “EXT” agreements / blankets. PO, error. Normally this Used when adding or updating PR lines and If PRLINE.AGREEMENTPONUM is not in would be from...
Receipt Collaboration Switches Receipt Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 Enter PO receipts. Allow receiving against the PO. MATRECTRANS Used when creating receipts. Do not allow receiving against the PO. SERVRECTRANS RCILC Update inventory last cost.
Work Order Collaboration Switches Work Order Collaboration Switches Process Description Value and Action Derivation of Derivation of Control ID System ID 1 System ID 2 WORES Process material reservations. Generate inventory reservation. WORKORDER INVENTORY Used when changing the status of a work Do not generate inventory reservation.
Page 320
Work Order Collaboration Switches Integration Guide...
Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead.
Page 322
IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created...
Page 323
Trademarks The following terms are trademarks of International Business Machines Corporation in the United States, other countries, or both: developerWorks Everyplace ibm.com Lotus Maximo Notes QuickPlace Tivoli WebSphere Adobe, the Adobe logo, PostScript, and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States, and/or other countries.