This appendix contains the Document Type Definition (DTD) for DMS configuration files. The DTD describes all of the XML tags that can be used in a DMS configuration file.
<!-- This is the XML DTD for the PatchBay 1.0 configuration file. --> <!-- The dynamo-message-system element describes the configuration of all the elements of the dynamo messaging system. It describes the patch bay, the local JMS configuration, and the message registry. --> <!ELEMENT dynamo-message-system (patchbay, local-jms, message-registry)> <!-- The patchbay element defines the configuration of the PatchBay component of the dynamo messaging system. It begins with a declaration of the JMS providers used in the system, then declares each message-source, message-sink, and message-filter managed by the PatchBay. Used in: dynamo-message-system --> <!ELEMENT patchbay (provider*, message-source*, message-sink*, message-filter*)> <!-- The provider element describes one JMS provider that will be used in the Patch Bay. It assigns a name to the provider, describes where the various ConnectionFactory interfaces can be found, and includes flags describing the provider's transaction capabilities. Used in: patchbay --> <!ELEMENT provider (provider-name, topic-connection-factory-name?, queue-connection-factory-name?, xa-topic-connection-factory-name?, xa-queue-connection-factory-name?, supports-transactions?, supports-xa-transactions?, username?, password?, client-id?, initial-context-factory?)> <!-- The provider-name assigns a name to a provider for use by destination references in the file. Used in: provider, input-destination, output-destination Example: <provider-name>MQSeries</provider-name> --> <!ELEMENT provider-name (#PCDATA)> <!-- The topic-connection-factory-name describes the JNDI location of the provider's TopicConnectionFactory interface. Used in: provider Example: <topic-connection-factory-name> dynamo:/dms/local/LocalDMSManager </topic-connection-factory-name> --> <!ELEMENT topic-connection-factory-name (#PCDATA)> <!-- The queue-connection-factory-name describes the JNDI location of the provider's QueueConnectionFactory interface. Used in: provider Example: <queue-connection-factory-name> dynamo:/dms/local/LocalDMSManager </queue-connection-factory-name> --> <!ELEMENT queue-connection-factory-name (#PCDATA)> <!-- The xa-topic-connection-factory-name describes the JNDI location of the provider's XATopicConnectionFactory interface. Used in: provider Example: <xa-topic-connection-factory-name> dynamo:/dms/local/LocalDMSManager </xa-topic-connection-factory-name> --> <!ELEMENT xa-topic-connection-factory-name (#PCDATA)> <!-- The xa-queue-connection-factory-name describes the JNDI location of the provider's XAQueueConnectionFactory interface. Used in: provider Example: <xa-queue-connection-factory-name> dynamo:/dms/local/LocalDMSManager </xa-queue-connection-factory-name> --> <!ELEMENT xa-queue-connection-factory-name (#PCDATA)> <!-- The supports-transactions element indicates if the provider supports transactions through the Session.commit()/rollback() methods. Used in: provider Must be one of: <supports-transactions>true</supports-transactions> <supports-transactions>false</supports-transactions> --> <!ELEMENT supports-transactions (#PCDATA)> <!-- The supports-xa-transactions element indicates if the provider supports transactions through the XA interface. Used in: provider Must be one of: <supports-xa-transactions>true</supports-xa-transactions> <supports-xa-transactions>false</supports-xa-transactions> --> <!ELEMENT supports-xa-transactions (#PCDATA)> <!-- The username element specifies the username that should be provided when creating a new connection. Used in: provider Example: <username> charles </username> --> <!ELEMENT username (#PCDATA)> <!-- The password element specifies the password that should be provided when creating a new connection. Used in: provider Example: <password> charles </password> --> <!ELEMENT password (#PCDATA)> <!-- The client-id element specifies the client identifier that will be assigned to the connection. This is primarily used to reconnect to durable subscription state. Used in: provider Example: <client-id> OrderProcessor </client-id> --> <!ELEMENT client-id (#PCDATA)> <!-- The initial-context-factory element specifies the nucleus name of a component that implements the atg.dms.patchbay.JMSInitialContextFactory interface. This nucleus component will be called on to create an InitialContext whenever a JNDI name needs to be resolved for the provider (i.e., when resolving the JNDI name of a Topic/QueueConnectionFactory, or a Topic or a Queue). If no initial-context-factory is supplied, then the JNDI names will be resolved against a "vanilla" InitialContext (i.e., one created by calling "new InitialContext()"). Used in: provider Example: <initial-context-factory> /atg/jmsproviders/providerx/InitialContextFactory </initial-context-factory> --> <!ELEMENT initial-context-factory (#PCDATA)> <!-- The message-source element describes one MessageSource. It specifies its Nucleus name, and also describes each of the MessageSource's output ports. Used in: patchbay --> <!ELEMENT message-source (nucleus-name, output-port*)> <!-- The nucleus-name element specifies the absolute name of a global Nucleus component. Used in: message-source, message-sink, message-filter Example: <nucleus-name> /atg/commerce/sources/EmailSource </nucleus-name> --> <!ELEMENT nucleus-name (#PCDATA)> <!-- The output-port element specifies how one of the output ports is connected to possibly many destinations. Used in: message-source, message-filter --> <!ELEMENT output-port (port-name?, output-destination*)> <!-- The redelivery-port element specifies how one of the redelivery ports is connected to possibly many destinations. Used in: message-sink, message-filter --> <!ELEMENT redelivery-port (port-name?, output-destination*)> <!-- The port-name element specifies the name of an input or output port. Used in: output-port, input-port Example: <port-name> DEFAULT </port-name> --> <!ELEMENT port-name (#PCDATA)> <!-- The output-destination describes one Destination to which Messages through an output port should be sent. Each destination describes the JMS provider through which the Message should be sent, the JNDI name of the Destination, whether the Destination is a Topic or Queue, and what options should be set on Messages on their way out. Used in: output-port --> <!ELEMENT output-destination (provider-name?, destination-name, destination-type, priority?, delivery-mode?)> <!-- The destination-name element specifies the JNDI name of the Destination Used in: output-destination, input-destination Example: <destination-name> localjms:/local/dcs/PurchaseEvents </destination-name> --> <!ELEMENT destination-name (#PCDATA)> <!-- The destination-type element specifies the type of the Destination Used in: output-destination, input-destination Must be one of: <destination-type>Topic</destination-type> <destination-type>Queue</destination-type> --> <!ELEMENT destination-type (#PCDATA)> <!-- The priority element specifies the JMSPriority that should be assigned to all Messages going to this Destination through this output-port. The priority should be between 0 and 9 (inclusive). Used in: output-destination Example: <priority>8</priority> --> <!ELEMENT priority (#PCDATA)> <!-- The delivery-mode element specifies the JMSDeliveryMode that should be assigned to all Messages going to this Destination through this output-port. Used in: output-destination Must be one of: <delivery-mode>PERSISTENT</delivery-mode> <delivery-mode>NON_PERSISTENT</delivery-mode> --> <!ELEMENT delivery-mode (#PCDATA)> <!-- The message-sink element describes one MessageSink. It specifies its Nucleus name, and also describes each of the MessageSink's input ports. Used in: patchbay --> <!ELEMENT message-sink (nucleus-name, input-port*, redelivery-port*)> <!-- The input-port element specifies how one of the input ports receives Messages from possibly many destinations. Used in: message-sink, message-filter --> <!ELEMENT input-port (port-name?, input-destination*)> <!-- The input-destination element describes one Destination from which Messages are received and attributed to this input-port. Each Destination describes the JMS provider from which the Message should be received, the JNDI name of the Destination, whether the Destination is a Topic or Queue, the message selector to be used, and whether local messages should be received. Used in: input-port --> <!ELEMENT input-destination (provider-name?, destination-name, destination-type, durable-subscriber-name?, message-selector?, no-local?, redelivery?)> <!-- The redelivery element describes the configuration parameters used for message redelivery during failure conditions. max-attempts defines the maximum number of delivery attempts by Patch Bay to the input destination. The delay interval (specified in msec) defines how long a message should be delayed before a redelivery is attempted. Finally if the maximum number of delivery attempts has been reached then the message will be redirected to the output port named through the failure-output-port element. Used in: input-destination --> <!ELEMENT redelivery (max-attempts, delay, failure-output-port)> <!ELEMENT max-attempts (#PCDATA)> <!ELEMENT delay (#PCDATA)> <!ELEMENT failure-output-port (#PCDATA)> <!-- The message-selector element describes the filter that will restrict the flow of Messages from this Destination. Used in: input-destination Example: <message-selector> JMSType = 'atg.dcs.Purchase' </message-selector> --> <!ELEMENT message-selector (#PCDATA)> <!-- The durable-subscriber-name element specifies the name of the durable subscription to which this should subscribe. This may only be specified for Topic Destinations. If this is not specified, a durable subscription will not be used. Used in: input-destination Example: <durable-subscriber-name> orders </durable-subscriber-name> --> <!ELEMENT durable-subscriber-name (#PCDATA)> <!-- The no-local indicates whether Messages sent to this Topic by the same Session should not be received. If true, then such messages are blocked, otherwise such messages are received. This may only be specified for Topic destinations. Defaults to false if not specified. Used in: input-destination Must be one of: <no-local>true</no-local> <no-local>false</no-local> --> <!ELEMENT no-local (#PCDATA)> <!-- The message-filter element describes one MessageFilter. Used in: patchbay --> <!ELEMENT message-filter (nucleus-name, input-port*, output-port*, redelivery-port*)> <!-- The local-jms element configures the Local JMS system that will be used with the patch bay in the dynamo messaging system. It configures the JNDI prefix that will be used for the destination names, and also names all of the queues and topics in the Local JMS system. Used in: dynamo-message-system --> <!ELEMENT local-jms (jndi-prefix, topic-name*, queue-name*)> <!-- The jndi-prefix element specifies what JNDI prefix should be prepended to each topic or queue name to form the destination's JNDI name. The prefix should start with "/" and should not include the "localdms:". The destination's JNDI name will be "localdms:{jndi-prefix}{topic/queue-name}". Used in: local-jms Example: <jndi-prefix> /local </jndi-prefix> --> <!ELEMENT jndi-prefix (#PCDATA)> <!-- The topic-name element specifies the name of a Topic in the Local JMS system. The name should begin with a "/", and must be unique among both topic-name and queue-name elements. Used in: local-jms Example: <topic-name> /ProfileEvents </topic-name> --> <!ELEMENT topic-name (#PCDATA)> <!-- The queue-name element specifies the name of a Queue in the Local JMS system. The name should begin with a "/", and must be unique among both queue-name and queue-name elements. Used in: local-jms Example: <queue-name> /ProfileEvents </queue-name> --> <!ELEMENT queue-name (#PCDATA)> <!-- The message-registry element is the root element of the MessageRegistry configuration file. It defines several message-family elements. Used in: dynamo-message-system --> <!ELEMENT message-registry (message-family*)> <!-- The message-family element describes a group of message-type elements, and may also recursively contain a set of message-family elements. Used in: message-registry, message-family --> <!ELEMENT message-family (message-family-name, message-family*, message-type*)> <!-- The message-family-name element specifies the name of a message-family. Used in: message-registry, message-family Example: <message-family-name>atg.dcs</message-family-name> --> <!ELEMENT message-family-name (#PCDATA)> <!-- The message-typer element describes one MessageTyper. Used in: message-type --> <!ELEMENT message-typer (nucleus-name)> <!-- The message-type element describes one mapping from JMSType to Object class. Used in: message-family --> <!ELEMENT message-type (jms-type, message-class, message-typer?, message-context?, display-name?, display-name-resource?, expert?, hidden?, description?, description-resource?, resource-bundle?)> <!-- The jms-type element specifies the JMSType for this message type. The jms-type must be unique across all message types in the message registry. Used in: message-type Example: <jms-type> atg.dcs.Purchase </jms-type> --> <!ELEMENT jms-type (#PCDATA)> <!-- The message-class element specifies the fully-qualified class name of the Java Bean that contains the message's data. Used in: message-type Example: <message-class> atg.dcs.PurchaseMessage </message-class> --> <!ELEMENT message-class (#PCDATA)> <!-- The message-context element specifies the nature of the message's originating context. If omitted, then no assumptions are made concerning the message's context. The following values are recognized: request: the message originates in a request thread, and request- or session-specific values may be resolved via JNDI. session: the message originates in a session-specific context, and session-specific values may be resolved via JNDI. Used in: message-type Example: <message-context> request </message-context> --> <!ELEMENT message-context (#PCDATA)> <!-- The display-name element specifies a GUI display name for an element described in the patch bay definition file. Example: <display-name> Buys Product </display-name> --> <!ELEMENT display-name (#PCDATA)> <!-- The display-name-resource element specifies a GUI display name for an element described in the patch bay definition file, which can be loaded from a resource bundle. Example: <display-name-resource> buysProduct </display-name-resource> --> <!ELEMENT display-name-resource (#PCDATA)> <!-- The description element specifies a GUI description for an element described in the patch bay definition file. Example: <description> Generated when user purchases a product </description> --> <!ELEMENT description (#PCDATA)> <!-- The description-resource element specifies a GUI description for an element described in the patch bay definition file, which can be loaded from a resource bundle. Example: <description-resource> buysProductDescription </description-resource> --> <!ELEMENT description-resource (#PCDATA)> <!-- The resource-bundle element specifies a resource bundle from which resources for an element described in the patch bay definition file can be loaded. Example: <resource-bundle> atg.dms.Resources </resource-bundle> --> <!ELEMENT resource-bundle (#PCDATA)> <!-- The hidden element specifies a flag indicating that the given message type should be hidden in a GUI. Example: <hidden> true </hidden> --> <!ELEMENT hidden (#PCDATA)> <!-- The expert element specifies a flag indicating that the given message type should be hidden in a GUI from non-expert users. Example: <expert> true </expert> --> <!ELEMENT expert (#PCDATA)>