Ensemble 2009.1 introduced the following new features:
Ability to Edit and Resend Messages
Object Gateway for .NET Services and Operations
Ability to Create a Studio Project from a Production
Automatic Documentation of a Production
Support for ebXML
Caché 2009.1 Features
Ensemble 2009.1 provided enhancements to the following features:
Testing Service for Virtual Document Messages
Sequence Manager Support for Non-HL7 Messages
Java Gateway Adapters
Additional HL7 Schema Definitions
Ensemble Automatic Start Setting
The following changes in the 2009.1 release may affect the operation of your existing system. Review the following issues before upgrading a previous instance of Ensemble:
Also review the Caché Release Note and Upgrade Checklist Archive.
This release of Ensemble changes the storage structure for HL7 message segments to avoid block contention and improve throughput of large systems.
Ensemble now stores message segments in the new format and converts old message segments to the new format the first time it opens the message as an object. Access to HL7 messages from SQL and from the Management Portal is compatible with both formats.
This change is transparent to most applications; however, if you have code that directly accesses or manipulates the segment globals, you must modify it to be compatible with the new structure. Contact the InterSystems WRC for advice and guidance if you need to make such changes.
This release introduces a new property, ReplyCodeActions, for all business process and business operation classes. Formerly, this setting was available only on HL7 TCP business operations. This property allows you to specify how the host should handle each kind of response it receives from the remote system.
This change adds a boolean return value to the existing business operation callback method OnFailureTimeout(). If you added an override of this method to your business operation classes, you must add
Quit 0to your implementation to preserve your custom behavior, and
As %Booleanto your method signature for it to compile.
This update also changes the format and default behavior of the existing ReplyCodeActions property for HL7 business operations. If you are indicating a literal value found in field MSA:1 or using one of the described special values, you must start your reply code with a colon (
:). See the description of the ReplyCodeActions property in the EnsLib.HL7.Operation.ReplyStandard entry in the Class Reference for details.
If you upgrade to this release and your production configuration has existing reply codes of this type that do not begin with a colon (
:), Ensemble logs warnings in the Event Log for the item by the OnGetReplyAction() when the production starts. For example:
Unrecognized reply code: '?E' Unrecognized reply code: '?R' Unrecognized reply code: '~'
There were also other changes to the default behavior of properties that may affect your production:
Changes to Default Behavior of HL7 Business Operation Reply Code Actions
A previous release updated and expanded the default behavior of the ReplyCodeActions property with a value of:
This default indicates that Ensemble retries messages with acknowledgment codes AR or CR; for those with codes AE or CE, it suspends the current message, logs an error, and moves on to the next message. This behavior is more consistent with common HL7 processing. The new default also treats any message with codes AA or CA as Completed OK and suspends messages that have a value in field MSA:1 that is not matched by any other listed reply code.
Changes to Default Behavior of Business Operation Retry Count
This release redefined the meaning of the RetryCount property from “the number of the current try not counting the first try” to “the number of the current try” by setting the default in the business operation class to a value of 1.
This release removes the Ens.Util.MessageBodyMethods.%DrawEditForm() method, which the Ensemble Management Portal called to display a message-specific content editor. A different mechanism now provides this functionality. See the following sections in the chapter “Viewing, Searching, and Managing Messages” of Monitoring Ensemble Productions for details:
In previous releases, Ensemble did not trigger an alert when it encountered an error in a data transformation; errors were only logged in the Event Log. Ensemble now reports such errors as alerts if you enable the Alert On Error setting for the routing engine configuration item.
For TCP services, when Job Per Connection is True, a freshly spawned job handles each new incoming socket connection rather than the listener job itself. Only one job at a time can be the listener, and one job must be the listener, so a TCP service configured with a Pool Size greater than 1 still only starts one listener job. However, this listener can spawn an unlimited number of connection jobs if Job Per Connection is set to True. If you set the Pool Size to a value greater than 1, it serves as a limit on the number of simultaneous connection jobs that can exist. When this limit is reached, the listener does not accept any more connections until one or more of the existing connection jobs quits or dies. An Event Log warning appears when it first reaches the limit.
This release of Ensemble renames a column in the EnumerateHostStatus() and EnumerateJobStatus() queries in the Ens.Util.Statistics class from LastAction to LastActivity. If your application refers to the column by name, you must update it.
This Ensemble release adds error alerting and logging to the ProcessInput() method of business service classes when you invoke the service from a job not started by Ensemble and, therefore, not running in its OnTask() loop. The main examples of services invoked in this way are SOAP services and CSP web pages, but may also include language binding and stored procedure calls.
In previous releases, if a data transformation processed an HL7 message that had no schema category associated with it, Ensemble modified the source message to have the schema category expected by the data transformation. In this release, the schema category remains empty. It is possible that if a message passed through multiple data transformations or routing engines, it may now fail in subsequent transformations or routing engines. To avoid this problem, specify the schema category in the business service.