Petals ESB - SE Assured Service Execution (ASE)
Requirements Specification Document
Project: Petals ESB
Printed by TestLink on 06/15/2011
1. SE-ASE : SE Assured Service Execution (ASE)
SE-ASE-DEFINITIONS : Definitions - Terminology
SE-ASE-CONCEPTS : Main concepts
SE-ASE-SYSTEM : System requirements
SE-ASE-RELEASE-PLAN : Release Plan
1.1. SE-ASE-PROCESSING : Processing
SE-ASE-PROC-000 : Deploying a service unit
SE-ASE-PROC-005 : Starting a service unit
SE-ASE-PROC-006 : Starting the posting process
SE-ASE-PROC-007 : Starting the sending process
SE-ASE-PROC-020 : Processing a incoming request (Posting Process)
SE-ASE-PROC-025 : Processing a persisted request (Sending Process)
SE-ASE-PROC-026 : Retry policy on timeout or error (In a next version)
SE-ASE-PROC-027 : Time-to-Live (In a next version)
SE-ASE-PROC-050 : Stopping a service unit
SE-ASE-PROC-051 : Stopping the posting process
SE-ASE-PROC-052 : Stopping the sending process
SE-ASE-PROC-055 : Undeploying a service unit
SE-ASE-PROC-100 : Persistence system
1.2. SE-ASE-CFG : Component configuration
SE-ASE-CFG-000 : Configuring the component
SE-ASE-CFG-005 : Persistence system parameters
SE-ASE-CFG-010 : Runtime parameters
1.3. SE-ASE-ADMINISTRATION : Administration
SE-ASE-ADM-005 : Identifying a persistence area
SE-ASE-ADM-010 : Purging a persistence area (In a next version)
SE-ASE-ADM-015 : Recycling a persistence area (In a next version)
SE-ASE-ADM-025 : Starting the posting process
SE-ASE-ADM-020 : Stopping the posting process
SE-ASE-ADM-035 : Starting the sending process
SE-ASE-ADM-030 : Stopping the sending process
1.4. SE-ASE-MONITORING : Monitoring
SE-ASE-MON-005 : Monitoring the persistence areas
SE-ASE-MON-010 : Monitoring the connection to the persistence system (In a next version)
SE-ASE-000 : Installing the component
SE-ASE-010 : Starting the component
SE-ASE-020 : Stopping the component
SE-ASE-ERRORS : Error messages
Petals ESB is the project associated to:
1. Requirements Spec.: SE-ASE : SE Assured Service Execution (ASE) | |
---|---|
Scope
|
1.1. Requirements Spec.: SE-ASE-PROCESSING : Processing | |
---|---|
Scope
|
Requirement: SE-ASE-PROC-005 : Starting a service unit | |
---|---|
Scope According to the value of the optional boolean parameter 'mustBeAutomaticallyStarted' of the service unit section 'provides', the posting process is started. The default value of 'mustBeAutomaticallyStarted' is 'true'. If 'mustBeAutomaticallyStarted' is true, the incoming messages listener is started. If false, it is not. If correctly created, the sending process is started when the service unit is started according to the optional boolean parameter 'mustBeAutomaticallyStarted' of the service unit section 'consumes'. The default value of 'mustBeAutomaticallyStarted' is 'true'. If 'mustBeAutomaticallyStarted' is true, the persisted request listener is started. If false, it is not. The value of the parameter 'mustBeAutomaticallyStarted' is logged with a CONFIG level. Note 1: Using the parameters 'mustBeAutomaticallyStarted' of both service unit sections, it is possible:
Note 2: To be more agile, use the placeholders and the component property file to set the value of 'mustBeAutomaticallyStarted'. So we have only deliverable to configure according to our needs. Error management If an error occurs during the start of the posting process or during the start of the sending process, the start of the service unit continues. If the parameter 'mustBeAutomaticallyStarted' is not a boolean value:
| |
Relations | related to: SE-ASE-PROC-006 : Starting the posting process Status: Valid related to: SE-ASE-PROC-007 : Starting the sending process Status: Valid |
Requirement: SE-ASE-PROC-006 : Starting the posting process | |
---|---|
Scope If not already started, the posting process is started to persist incoming requests. When the posting process is correctly started, a message associated to the information code 'SE-ASE-I0001' is logged with an INFO level. Error management If an error occurs during the start of the posting process:
| |
Relations | related to: SE-ASE-PROC-005 : Starting a service unit Status: Valid related to: SE-ASE-ADM-025 : Starting the posting process Status: Valid |
Requirement: SE-ASE-PROC-007 : Starting the sending process | |
---|---|
Scope If correctly created and not already started, the sending process is started to process persisted requests. When the sending process is correctly started, a message associated to the information code 'SE-ASE-I0002' is logged with an INFO level. Error management If an error occurs during the start of the sending process:
Note: if the posting process was correctly started, a human action will be needed to fix the problem before to overload the persistence area with too many requests. | |
Relations | related to: SE-ASE-PROC-005 : Starting a service unit Status: Valid related to: SE-ASE-ADM-035 : Starting the sending process Status: Valid |
Requirement: SE-ASE-PROC-020 : Processing a incoming request (Posting Process) | |
---|---|
Scope Only one-way requests are accepted. A one-way request is mapped on following JBI message exchange pattern: InOnly and RobustInOnly. When a one-way request is received, it is saved exchange into the persistence area of the associated ASE service provider. When the request is saved, an acknowledgment is sent to the service consumer. A request message is saved in its entirety, as message exchange, in particular with its following information:
and following additional information, set as property in the message exchange:
Note: The component manages a TTL itself because we can't trust the persistence system. For example, JMS specifications 1.1 mentions a JMS expiration (see §3.4.9) but does not guarantee that message will not be delivered, and does not mention a queue to place expired message. So, we can't re-post expired messages. Error management If the received request is not a one-way request:
If an error occurs saving the request in the persistence area:
|
Requirement: SE-ASE-PROC-025 : Processing a persisted request (Sending Process) | |
---|---|
Scope A request read from the persistence area is forwarded to the target service provider. The target service endpoint is elected from interface-name and service-name of the target service. The request forward is done with a timeout defined by the parameter 'cdk:timeout' of the service unit section 'jbi:consumes'. If time out or error occurs, a retry policy is applied according to the idempotency of the target service. On receipt of acknowledgement or fault from the target service provider, the read request is acknowledged to be removed from the persistence area. See below the error management if an error is returned or a timeout occurs. How to manage crash vs idempotency ? Do we kept outgoing request ? Error management If an error is returned by the target service or the target service invocation timed out, a retry policy is applied. If a fault is returned by the target service:
| |
Relations | related to: SE-ASE-CFG-010 : Runtime parameters Status: Valid related to: SE-ASE-PROC-026 : Retry policy on timeout or error (In a next version) Status: Valid related to: SE-ASE-PROC-027 : Time-to-Live (In a next version) Status: Valid |
Requirement: SE-ASE-PROC-026 : Retry policy on timeout or error (In a next version) | |
---|---|
Scope A retry policy is applied on target service invocation timed out or processed with error. To prevent problem of non-idempotent service when retrying the invocation, the retry policy is applied only if the target service is declared as idempotent. A target service is declared as idempotent through the boolean parameter 'is-idempotent' of the service unit section 'jbi:consumes'. Default value 'false'. The retry policy is defined with following optional parameters defined at the service unit level in the section 'jbi:consumes':
On each timeout detected, including the first one and last one:
On each error detected, including the first one and excluding the last one:
Note: To not fill it, the requests MUST not be kept in memory. How to do this ? Using a JMS retry policy ? Using a JMS message selector ? Error management: If the last target service invokation timed out:
If the last target service invocation is processed with error:
If the value of the parameter 'is-idempotent' is not a boolean value:
| |
Relations | related to: SE-ASE-PROC-025 : Processing a persisted request (Sending Process) Status: Valid |
Requirement: SE-ASE-PROC-027 : Time-to-Live (In a next version) | |
---|---|
Scope A request read from the persistence area is forwarded to the target service if its Time-To-Live is not expired. The TTL is controlled through the optional parameter 'time-to-live' of the service unit section 'jbi:consumes'. This parameter inherits from the same parameter defined at the component level. The TTL is defined as expired when the instant resulting from the addition of the value of the parameter 'time-to-live' and the timestamp associated to the read request is exceeded. Error management If the Time-To-Live of the request is expired:
If the value of the parameter 'time-to-live' is not an integer number value:
| |
Relations | related to: SE-ASE-PROC-025 : Processing a persisted request (Sending Process) Status: Valid |
Requirement: SE-ASE-PROC-050 : Stopping a service unit | |
---|---|
Scope When stopping a service unit:
A timeout is used to prevent an infinite wait of the end of the processing of the pending persisted requests sent to the target service. The timeout is defined at the service unit level through the optional parameter 'stop-timeout' of the section 'jbi:provides'. This parameter inherits from the same parameter defined at the component level. Error management If an error occurs during the stop of the posting process or during the stop of the sending process, the stop of the service unit continues. | |
Relations | related to: SE-ASE-CFG-010 : Runtime parameters Status: Valid related to: SE-ASE-020 : Stopping the component Status: Valid |
Requirement: SE-ASE-PROC-051 : Stopping the posting process | |
---|---|
Scope If started, the posting process is stopped, no more incoming request is persisted. When the posting process is correctly stopped, a message associated to the information code 'SE-ASE-I0003' is logged with a INFO level. The pending processing of incoming request will end correctly. The stop processing does not wait their end. Error management If an error occurs during the stop of the posting process:
| |
Relations | related to: SE-ASE-ADM-020 : Stopping the posting process Status: Valid |
Requirement: SE-ASE-PROC-052 : Stopping the sending process | |
---|---|
Scope If started, the sending process is stopped, and no more persisted request will be processed. When the sending process is correctly stopped, a message associated to the information code 'SE-ASE-I0004' is logged with an INFO level. The pending processing of persisted request will end correctly. The stop processing does not wait their end. Error management If an error occurs during the stop of the sending process:
| |
Relations | related to: SE-ASE-ADM-030 : Stopping the sending process Status: Valid |
Requirement: SE-ASE-PROC-055 : Undeploying a service unit | |
---|---|
Scope To prevent loose of requests because of an involuntary undeployment, the persistence areas associated to the service-unit are not destroyed. The customer is responsible to destroy persistence areas directly through the persistence area system. |
Requirement: SE-ASE-PROC-100 : Persistence system | |
---|---|
Scope The persistence area queues are mapped on JMS queues using the point-to-point communication model. JMS queues are managed by an external JMS server. The customer is responsible of the JMS server and its correct configuration. The JMS client driver is provided as a shared library. |
1.2. Requirements Spec.: SE-ASE-CFG : Component configuration | |
---|---|
Scope |
Requirement: SE-ASE-CFG-000 : Configuring the component | |
---|---|
Scope All configuration parameters are available at following layers:
| |
Relations | blocks: SE-ASE-CFG-005 : Persistence system parameters Status: Valid |
Requirement: SE-ASE-CFG-005 : Persistence system parameters | |
---|---|
Scope The following parameters define the connection to the JMS server:
They can not be hot-updated. Component descriptor aspects Parameters of the connection to the JMS server are defined in the component JBI descriptor as:
where 'ase' is the parameter namespace of the component. JMX apects Parameters of the connection to the JMS server are customizable through JMX attributes of the installer configuration MBean of the component:
Ant tasks aspects The properties used by the component installation Ant task to customize the connection to the JMS servers are the same as the JMX attributes defined previously. | |
Relations | depends on: SE-ASE-CFG-000 : Configuring the component Status: Valid depends on: COMP-COMMON-CFG-000 : Configuration of service unit parameter Status: Valid |
Requirement: SE-ASE-CFG-010 : Runtime parameters | |
---|---|
Scope The runtime can be customized through the following parameters:
They can be hot-updated. Component descriptor aspects Parameters of the runtime are defined in the component JBI descriptor as:
where 'ase' is the parameter namespace of the component (see SE-ASE-CFG). JMX apects Parameters of the runtime are customizable through JMX attributes of the installer configuration MBean or runtime configuration MBean of the component:
Ant tasks aspects The properties used by the component installation Ant task to customize the runtime are the same as the JMX attributes defined previously. | |
Relations | related to: SE-ASE-PROC-050 : Stopping a service unit Status: Valid related to: SE-ASE-PROC-025 : Processing a persisted request (Sending Process) Status: Valid |
1.3. Requirements Spec.: SE-ASE-ADMINISTRATION : Administration | |
---|---|
Scope |
Requirement: SE-ASE-ADM-001 : JMX API | |
---|---|
Scope Administration actions are available through JMX. The property 'name' of the MBean object name is 'Administration_<component-id>', where <component-id> is the unique component identifier. A JMX MBean is created when the component starts and it offers all administration actions. The JMX MBean is destroyed when the component stops. Error management If an error occurs during the creation of the JMX MBean:
If an error occurs during the deletion of the JMX MBean:
| |
Relations | depends on: CONT-JMX-API-010 : Naming convention of the MBean object names Status: Valid blocks: SE-ASE-MON-000 : JMX API Status: Valid |
Requirement: SE-ASE-ADM-005 : Identifying a persistence area | |
---|---|
Scope If an administration action needs to identify a persistence area, it uses the following both parameters:
JMX aspects Parameters of the persistence area are available through the JMX operation as:
Error management If the persistence area to purge does not exist:
If the persistence area sub-type is invalid:
| |
Relations | related to: SE-ASE-ADM-010 : Purging a persistence area (In a next version) Status: Valid |
Requirement: SE-ASE-ADM-010 : Purging a persistence area (In a next version) | |
---|---|
Scope An administration action is available to purge a persistence area destroying its all pending request. The processing of purge starts to block internal processing waiting their end. During a persistence area purge, no more requests are persisted. Their processing waits the end of purge. JMX aspects This action is available through the JMX operation 'purge' with following parameters:
Error management If an error occurs during the purge of a persistence area:
| |
Relations | related to: SE-ASE-ADM-005 : Identifying a persistence area Status: Valid |
Requirement: SE-ASE-ADM-015 : Recycling a persistence area (In a next version) | |
---|---|
Scope An administrative action is available to recycle pending requests of a persistence area moving them to persistence area associated to incoming requests. Note: Recycling the persistence area associated to the incoming request has no sens. The processing to recycle starts to block internal processing waiting their end. During a persistence area recycling, no more incoming requests are persisted. Their processing waits the end of recycling. Each request of the persistence area to recycle is saved into the persistence area of incoming requests. Their timestamp is updated to be set to the current timestamp. JMX aspects This action is available through the JMX operation 'recycle' with following parameters:
Error management If the persistence area sub-type set is 'PENDING':
If the target service is not an idempotent service, and the administrative action is not forced:
If an error occurs during the recycling:
|
Requirement: SE-ASE-ADM-025 : Starting the posting process | |
---|---|
Scope An administrative action is available to start the posting process, persisting incoming request. See the related requirement. JMX aspects This action is available through the JMX operation 'startPostingProcess' without parameter. Error management If the posting process is already started:
If an error occurs during the start of the posting process:
| |
Relations | related to: SE-ASE-PROC-006 : Starting the posting process Status: Valid |
Requirement: SE-ASE-ADM-020 : Stopping the posting process | |
---|---|
Scope An administrative action is available to stop the posting process, no more incoming request will be persisted. See the related requirement. JMX aspects This action is available through the JMX operation 'stopPostingProcess' without parameter. Error management If the posting process is already stopped:
If an error occurs during the stop of the posting process:
| |
Relations | related to: SE-ASE-PROC-051 : Stopping the posting process Status: Valid |
Requirement: SE-ASE-ADM-035 : Starting the sending process | |
---|---|
Scope An administrative action is available to start the sending process to listen persisted requests listener. See the related requirement. JMX aspects This action is available through the JMX operation 'startSendingProcess' without parameter. Error management If the sending process is already started:
If an error occurs during the start of the sending process:
| |
Relations | related to: SE-ASE-PROC-007 : Starting the sending process Status: Valid |
Requirement: SE-ASE-ADM-030 : Stopping the sending process | |
---|---|
Scope An administrative action is available to stop the sending process, persisted requests will not be processed. See the related requirement. JMX aspects This action is available through the JMX operation 'stopSendingProcess' without parameter. Error management If the sending process is already stopped:
If an error occurs during the stop of the sending process:
| |
Relations | related to: SE-ASE-PROC-052 : Stopping the sending process Status: Valid |
1.4. Requirements Spec.: SE-ASE-MONITORING : Monitoring | |
---|---|
Scope |
Requirement: SE-ASE-MON-000 : JMX API | |
---|---|
Scope Monitoring information are available through JMX using the same MBean as administration. | |
Relations | depends on: SE-ASE-ADM-001 : JMX API Status: Valid |
Requirement: SE-ASE-MON-005 : Monitoring the persistence areas | |
---|---|
Scope The customer is responsible to monitor the persistence areas through the persistence system using the appropriate tools, as Nagios. The component has not to monitor persistence areas. |
Requirement: SE-ASE-MON-010 : Monitoring the connection to the persistence system (In a next version) | |
---|---|
Scope The current status of the connection to the persistence system is kept. It is updated:
JMX aspects The current status of connection is available through the MBean attribute 'connectionStatus'. |
Requirement: SE-ASE-000 : Installing the component | |
---|---|
Scope Component parameters are checked during the component installation, before to start it. Component parameter values are logged with a CONFIG level. Error management If the component parameter associated to the initial context factory class name is missing or empty:
If the initial context factory class is not found in the component class loader:
If the component parameter associated to the JNDI provider URL is missing or empty:
If the component parameter associated to the JNDI provider URL is malformed:
If the component parameter associated to the name of the JMS connection factory is missing or empty:
If the value of the parameter associated to the TTL is not an integer number value:
If the value of the parameter associated to the stop timeout is not an integer number value:
|
Requirement: SE-ASE-010 : Starting the component | |
---|---|
Scope The connection to the persistence server is realized during the start of the component. A message is logged with an CONFIG level to trace the configuration parameter values needed to the connection to the persistence server. Error management If an error occurs during the connection to the persistence server:
|
Requirement: SE-ASE-020 : Stopping the component | |
---|---|
Scope The connection to the persistence server is released. All service units are stopped. Error management If an error occurs during the disconnection to the persistence server:
| |
Relations | related to: SE-ASE-PROC-050 : Stopping a service unit Status: Valid |
Requirement: SE-ASE-ERRORS : Error messages | |||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Scope The component defines following error messages:
|
Requirement: SE-ASE-INFOS : Information messages | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Scope The component defines following error messages:
|
Requirement: SE-ASE-WARNS : Warning messages | |||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Scope The component defines following warning messages:
|