| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> |
| <!-- ====================== Root Element ======================= --> |
| <xs:element name="service-config"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element minOccurs="1" maxOccurs="unbounded" ref="service-engine"/> |
| </xs:sequence> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="service-engine"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="authorization"/> |
| <xs:element ref="thread-pool"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="engine"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="service-location"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="notification-group"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="startup-service"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="resource-loader"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="global-services"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="service-groups"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="service-ecas"/> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="jms-service"/> |
| </xs:sequence> |
| <xs:attributeGroup ref="attlist.service-engine"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.service-engine"> |
| <xs:attribute type="xs:string" name="name" use="required"/> |
| </xs:attributeGroup> |
| <xs:element name="authorization"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.authorization"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.authorization"> |
| <xs:attribute type="xs:string" name="service-name" use="required"/> |
| </xs:attributeGroup> |
| <xs:element name="thread-pool"> |
| <xs:annotation> |
| <xs:documentation> |
| Configures the Job Manager and Job Poller. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element name="run-from-pool" minOccurs="0" maxOccurs="unbounded"> |
| <xs:annotation> |
| <xs:documentation> |
| The Job Pool(s) this server should service. Only valid when the |
| thread-pool element poll-enabled attribute is set to "true". |
| A database can contain any number of job pools, and different |
| servers can service different pools. Since the pools are in a common |
| (shared) database, there is the potential for database locking problems |
| when multiple servers service the pools. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:attribute type="xs:string" name="name" use="required" /> |
| </xs:complexType> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute type="xs:string" name="send-to-pool" use="required"> |
| <xs:annotation> |
| <xs:documentation> |
| The Job Pool that jobs originating on this server should be sent to. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| <xs:attribute type="xs:nonNegativeInteger" name="purge-job-days" default="30"> |
| <xs:annotation> |
| <xs:documentation> |
| The number of days to keep completed/canceled jobs in the database. |
| Only valid when the poll-enabled attribute is set to "true". |
| This value should be reduced for applications that create a lot of jobs. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| <xs:attribute type="xs:nonNegativeInteger" name="failed-retry-min" default="30"> |
| <xs:annotation> |
| <xs:documentation> |
| The number of minutes to wait before retrying a failed job. |
| Only valid when the poll-enabled attribute is set to "true". |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| <xs:attribute type="xs:nonNegativeInteger" name="ttl"> |
| <xs:annotation> |
| <xs:documentation> |
| Idle queue service thread lifespan in milliseconds. Defaults to "120000" (2 minutes). |
| This setting should be a multiple of the poll-db-millis attribute value. If there are |
| no jobs after multiple database polls, then idle queue service threads should be |
| released - to help keep the system responsive. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| <xs:attribute type="xs:nonNegativeInteger" name="jobs"> |
| <xs:annotation> |
| <xs:documentation> |
| Job queue size. Defaults to "100". |
| The default setting is for "normal" installations. If an application generates a lot of jobs, |
| then this setting should be increased. If you are getting "Unable to queue job" |
| exceptions, then increase this setting gradually until the exceptions stop appearing. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| <xs:attribute type="xs:nonNegativeInteger" name="min-threads"> |
| <xs:annotation> |
| <xs:documentation> |
| Minimum number of queue service threads. Defaults to "1". |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| <xs:attribute type="xs:nonNegativeInteger" name="max-threads"> |
| <xs:annotation> |
| <xs:documentation> |
| Maximum number of queue service threads. Defaults to "5". |
| The Job Poller will add jobs to the job queue until it is full, then it will add |
| queue service threads until the maximum in this setting is reached. The additional |
| queue service threads are released when they are idle for the period of time |
| set in the ttl attribute. |
| The default setting is for a server with two CPUs. The value can be increased |
| on servers with more CPUs. Higher values do not always result in better throughput - |
| additional threads can slow the server down because of thread maintenance overhead. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| <xs:attribute name="poll-enabled"> |
| <xs:annotation> |
| <xs:documentation> |
| Enable database polling. Defaults to "true". |
| In multi-server (load balanced) environments, only one server should have this |
| attribute set to "true" - otherwise you might experience database locking problems. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:simpleType> |
| <xs:restriction base="xs:token"> |
| <xs:enumeration value="true" /> |
| <xs:enumeration value="false" /> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| <xs:attribute type="xs:nonNegativeInteger" name="poll-db-millis"> |
| <xs:annotation> |
| <xs:documentation> |
| Database polling interval in milliseconds. Defaults to "30000" (30 seconds). |
| Only valid when the poll-enabled attribute is set to "true". |
| When the database is polled, there will be a burst of activity (database "hits") |
| while the Job Manager queues jobs, then after the burst each queued job will |
| update the database after it runs. Decreasing this value will increase database activity. |
| Increasing this value will reduce the timeliness of job servicing. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:attribute> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="engine"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/> |
| </xs:sequence> |
| <xs:attributeGroup ref="attlist.engine"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:element name="parameter"> |
| <xs:annotation> |
| <xs:documentation> |
| Technical parameters use by engine |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.parameter"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.parameter"> |
| <xs:attribute type="xs:string" name="name" use="required"/> |
| <xs:attribute type="xs:string" name="value" use="required"/> |
| </xs:attributeGroup> |
| <xs:attributeGroup name="attlist.engine"> |
| <xs:attribute type="xs:string" name="name" use="required"/> |
| <xs:attribute type="xs:string" name="class" use="required"/> |
| </xs:attributeGroup> |
| <xs:element name="startup-service"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.startup-service"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.startup-service"> |
| <xs:attribute type="xs:string" name="name" use="required"/> |
| <xs:attribute type="xs:string" name="runtime-data-id"/> |
| <xs:attribute type="xs:nonNegativeInteger" name="runtime-delay" default="0"/> |
| <xs:attribute type="xs:string" name="run-in-pool"/> |
| </xs:attributeGroup> |
| <xs:element name="service-location"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.service-location"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.service-location"> |
| <xs:attribute type="xs:string" name="name" use="required"/> |
| <xs:attribute type="xs:string" name="location" use="required"/> |
| </xs:attributeGroup> |
| <xs:element name="resource-loader"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.resource-loader"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.resource-loader"> |
| <xs:attribute type="xs:string" name="name" use="required"/> |
| <xs:attribute type="xs:string" name="class" use="required"/> |
| <xs:attribute type="xs:string" name="prepend-env"/> |
| <xs:attribute type="xs:string" name="prefix"/> |
| </xs:attributeGroup> |
| <xs:element name="global-services"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.global-services"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.global-services"> |
| <xs:attribute type="xs:string" name="loader" use="required"/> |
| <xs:attribute type="xs:string" name="location" use="required"/> |
| </xs:attributeGroup> |
| <xs:element name="service-groups"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.service-groups"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.service-groups"> |
| <xs:attribute type="xs:string" name="loader" use="required"/> |
| <xs:attribute type="xs:string" name="location" use="required"/> |
| </xs:attributeGroup> |
| <xs:element name="service-ecas"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.service-ecas"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.service-ecas"> |
| <xs:attribute type="xs:string" name="loader" use="required"/> |
| <xs:attribute type="xs:string" name="location" use="required"/> |
| </xs:attributeGroup> |
| <xs:element name="jms-service"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element maxOccurs="unbounded" ref="server"/> |
| </xs:sequence> |
| <xs:attributeGroup ref="attlist.jms-service"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.jms-service"> |
| <xs:attribute type="xs:string" name="name" use="required"/> |
| <xs:attribute name="send-mode" default="none"> |
| <xs:simpleType> |
| <xs:restriction base="xs:token"> |
| <xs:enumeration value="none"/> |
| <xs:enumeration value="all"/> |
| <xs:enumeration value="first-available"/> |
| <xs:enumeration value="random"/> |
| <xs:enumeration value="round-robin"/> |
| <xs:enumeration value="least-load"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| </xs:attributeGroup> |
| <xs:element name="server"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.server"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.server"> |
| <xs:attribute type="xs:string" name="jndi-server-name" use="required"/> |
| <xs:attribute type="xs:string" name="jndi-name" use="required"/> |
| <xs:attribute type="xs:string" name="topic-queue" use="required"/> |
| <xs:attribute name="type" use="required"> |
| <xs:simpleType> |
| <xs:restriction base="xs:token"> |
| <xs:enumeration value="topic"/> |
| <xs:enumeration value="queue"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| <xs:attribute type="xs:string" name="username"/> |
| <xs:attribute type="xs:string" name="password"/> |
| <xs:attribute type="xs:string" name="client-id"/> |
| <xs:attribute name="listen" default="false"> |
| <xs:simpleType> |
| <xs:restriction base="xs:token"> |
| <xs:enumeration value="true"/> |
| <xs:enumeration value="false"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| <xs:attribute type="xs:string" name="listener-class"/> |
| </xs:attributeGroup> |
| |
| <xs:element name="notification-group"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element minOccurs="1" maxOccurs="1" ref="notification"/> |
| <xs:element minOccurs="2" maxOccurs="unbounded" ref="notify"/> |
| </xs:sequence> |
| <xs:attributeGroup ref="attlist.notification-group"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.notification-group"> |
| <xs:attribute type="xs:string" name="name"/> |
| </xs:attributeGroup> |
| <xs:element name="notification"> |
| <xs:complexType> |
| <xs:attributeGroup ref="attlist.notification"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.notification"> |
| <xs:attribute type="xs:string" name="subject" use="required"/> |
| <xs:attribute type="xs:string" name="screen" use="required"/> |
| <xs:attribute type="xs:string" name="service" default="sendMailFromScreen"/> |
| </xs:attributeGroup> |
| <xs:element name="notify"> |
| <xs:complexType mixed="true"> |
| <xs:attributeGroup ref="attlist.notify"/> |
| </xs:complexType> |
| </xs:element> |
| <xs:attributeGroup name="attlist.notify"> |
| <xs:attribute name="type" use="required"> |
| <xs:simpleType> |
| <xs:restriction base="xs:token"> |
| <xs:enumeration value="to"/> |
| <xs:enumeration value="cc"/> |
| <xs:enumeration value="bcc"/> |
| <xs:enumeration value="from"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| </xs:attributeGroup> |
| </xs:schema> |