Post on 06-Apr-2018
transcript
Volante Product Suite
Release Notes
Version 5.1.2 Build 1612
Volante Technologies
Release Date: Mar 01, 2016
Table of Content
1 WHAT’S IN THIS RELEASE? ................................................................................................................ 4
2 COMPATIBILITY ................................................................................................................................ 6
2.1 DESIGNER .......................................................................................................................................... 6 2.2 RUNTIME ........................................................................................................................................... 6
3 WHAT’S NEW SINCE 5.0 .................................................................................................................... 7
3.1 USAGE INSTRUCTIONS FOR 5.X.X USERS .................................................................................................... 8 3.2 ENHANCEMENTS & BUG FIXES IN 5.1.2 ................................................................................................... 9 3.3 ENHANCEMENTS & BUG FIXES IN 5.1.1 ................................................................................................. 11 3.4 ENHANCEMENTS & BUG FIXES IN 5.1.0 ................................................................................................. 12 3.5 BUG FIXES/ENHANCEMENTS IN 5.0.4 ................................................................................................... 16 3.6 BUG FIXES/ENHANCEMENTS IN 5.0.3 ................................................................................................... 21 3.7 BUG FIXES/ENHANCEMENTS IN 5.0.3 ................................................................................................... 23 3.8 BUG FIXES/ENHANCEMENTS IN 5.0.1 ................................................................................................... 25
4 WHAT’S NEW IN VERSION 5.0 ........................................................................................................ 28
4.1 NEW PRODUCT COMPONENTS ............................................................................................................. 28 4.2 NEW PRODUCT FEATURES/ENHANCEMENTS ........................................................................................... 28 4.3 COMPOSER UI ENHANCEMENTS............................................................................................................ 31 4.4 BUGS FIXED ...................................................................................................................................... 32
5 OPEN ISSUES .................................................................................................................................. 32
5.1 COMPONENT-WISE ISSUES ................................................................................................................... 32 5.2 KNOWN ISSUES ................................................................................................................................. 33 5.3 UPGRADE ISSUES ............................................................................................................................... 33 5.4 COMPATIBILITY CHANGES .................................................................................................................... 34
6 OTHER RELEASE NOTES .................................................................................................................. 34
7 ENHANCEMENTS DETAILS .............................................................................................................. 34
7.1 REST PLUGIN ................................................................................................................................... 34 7.2 MONGODB PLUGIN ........................................................................................................................... 37 7.3 CAMELPROTOCOL USING SENDACTIVITY................................................................................................. 40 7.4 OSGI IMPORT/EXPORT PACKAGES IN CODE GENERATION SETTINGS ............................................................ 43 7.5 STANDALONE VALIDATIONS ................................................................................................................. 44 7.6 ENCRYPTION IN DATA-SOURCES.XML ..................................................................................................... 46 7.7 AUTO-COMMIT IN DATA-SOURCES.XML .................................................................................................. 47 7.8 ACTIVITY PLUGIN ............................................................................................................................... 47 7.9 VOLANTE TEST MANAGER ................................................................................................................... 48 7.10 VISUAL MAPPER ................................................................................................................................ 50 7.11 TRANSFORM ACTIVITIES ...................................................................................................................... 52
Sort ....................................................................................................................................................... 52 Filter ...................................................................................................................................................... 53 Deduplicate ........................................................................................................................................... 56 Aggregate ............................................................................................................................................. 58 Reformat ............................................................................................................................................... 60
Normalize ............................................................................................................................................. 64 Denormalize .......................................................................................................................................... 65 Join ........................................................................................................................................................ 67 Dynamic/Generic Transforms ............................................................................................................... 69
7.12 MULE ESB INTEGRATION .................................................................................................................... 70 7.13 SPRING INTEGRATION ......................................................................................................................... 72 7.14 WAR OPTIONS ................................................................................................................................. 73 7.15 SERVICE BUS/GENERIC APPLICATION ..................................................................................................... 75 7.16 PROJECT CONFIGURE FOLDER AS .......................................................................................................... 78 7.17 AUTO DETECT PROXY ......................................................................................................................... 79 7.18 REVOKE LICENSE ................................................................................................................................ 81 7.19 PROPERTIES WINDOW ........................................................................................................................ 81 7.20 FUNCTIONS WINDOW ........................................................................................................................ 82 7.21 EXTERNAL TOOLS ............................................................................................................................... 84 7.22 GRID MODE ..................................................................................................................................... 88 7.23 DRAG & DROP: ................................................................................................................................. 88 7.24 APPEND TO SPECIFIED OUTPUT MESSAGE ................................................................................................ 89 7.25 UPDATES AND NOTIFICATION ............................................................................................................... 89 7.26 ZONED DECIMAL ............................................................................................................................... 91 7.27 RETAIN TRAILING DELIMITER ................................................................................................................ 92 7.28 ENHANCEMENTS IN ISO8583 .............................................................................................................. 92 7.29 TEXT VIEW ENCODING ........................................................................................................................ 96 7.30 MESSAGE FLOW ................................................................................................................................ 98 7.31 MESSAGE RESOURCES - INDEXES ........................................................................................................ 104 7.32 SERVICE DIRECTORY ......................................................................................................................... 104 7.33 PROJECT PUBLISHER ......................................................................................................................... 105 7.34 PROJECT REFERENCE ........................................................................................................................ 106 7.35 ANALYZE PROJECT (BETA) .................................................................................................................. 107 7.36 NEW SWIFT RESOURCES ................................................................................................................... 107 7.37 XML - ALLOWED NAMED GROUPS TO BE FLATTENED .............................................................................. 108 7.38 VARIABLES IN GENERATE QUERY SQL .................................................................................................. 109 7.39 INCLUDE DEPENDENCIES USING TARGETDIR .......................................................................................... 110 7.40 NEW TOOLBAR ACTIONS .................................................................................................................... 111 7.41 SWITCH WINDOW ........................................................................................................................... 112 7.42 TASK WINDOW ............................................................................................................................... 113 7.43 RESOLVE CARTRIDGE REFERENCES ....................................................................................................... 114 7.44 OSGI OPTIONS ................................................................................................................................ 114 7.45 SERVICE BUS OPTION ........................................................................................................................ 115 7.46 ORPHANED MAPS............................................................................................................................ 117 7.47 MESSAGE RESOURCE ........................................................................................................................ 119 7.48 MESSAGE INTEGRATION GUIDE (MIG) ................................................................................................ 124 7.49 ENHANCEMENT IN SEARCH ................................................................................................................ 126 7.50 XML PARSER OPTION - XML.VALUE.LINEFEED ........................................................................................ 127 7.51 XML SERIALIZE - 'NAMESPACE.PREFIX' OPTION ..................................................................................... 128 7.52 SWIFT – USER HEADER TAGS ............................................................................................................ 129 7.53 ENHANCEMENTS TO PROJECT ............................................................................................................. 131 7.54 SIMPLIFIED PROCEDURE TO ENTER VALIDATION ...................................................................................... 136
8 VOLANTE 5.1.2 - SUPPORTED PLATFORMS ................................................................................... 138
1 What’s In This Release?
Note:
The actual products in your distribution will depend on the products you licensed.
Patches/upgrades have been released for this product. Use “Check for Updates’ menu
to find out about the latest product and message pack upgrades and keep your
installation up to date.
Volante Product Suite
Component Version Design Time Code-Generator/Runtime
Java/EJB C++ C#
Composer 5.0.0
ACH Format Plug-in 5.0
ASCII Delimited Format Plug-in 5.0
ASCII Fixed Width Format Plug-in 5.0
BACS Format Plug-in 5.0
BAI2 Format Plug-in 5.0
BOJ-NET Format Plug-in 5.0
Bloomberg Back Office Format Plug-in 5.0
Bloomberg Format Plug-in 5.0
CDM Format Plug-in 5.0
CFC Format Plug-in 5.0
CGI Format Plug-in 5.0
CHIPS Format Plug-in 5.0
CMS/FCS Format Plug-in 5.0
COBOL Copybook Format Plug-in 5.0
CREST Format Plug-in 5.0
DataScope Equities Format Plug-in 5.0
DataScope Fixed Income Format Plug-in 5.0
Document Format Plug-in (Requires JRE1.5) 5.0
EDI Format Plug-in 5.0
Excel Format Plug-in (Requires JRE1.5) 5.0
FAST Format Plug-in 5.0
FIX Format Plug-in 5.0
FIXML Format Plug-in 5.0
FPML Format Plug-in 5.0
Fedwire Format Plug-in 5.0
IDOC Format Plug-in 5.0
IDOC XML Format Plug-in 5.0
ISO 20022 Format Plug-in 5.0
ISO 8583 Format Plug-in 5.0
NEFT Format Plug-in 5.0
OASYS Global Format Plug-in 5.0
POJO Format Plug-in (Requires JRE1.5) 5.0
RTGS Format Plug-in 5.0
Reuters Format Plug-in 5.0
SECOM Format Plug-in 5.0
SEPA Format Plug-in 5.0
SIAC Canonical Format Plug-in 5.0
SIC/EuroSIC Format Plug-in 5.0
Standard005 Format Plug-in 5.0
STEP 2 Format Plug-in 5.0
SWIFT Format Plug-in 5.0
SWIFTTradeFinance Format Plug-in 5.0
SWIFTMX Format Plug-in 5.0
Tervela Format Plug-in 5.0
Universal Format Plug-in 5.0
XML Format Plug-in 5.0
CPPJavaBridge 5.0
Cartridge Publisher 5.0
Database Persistence Designer 5.0
MappingSpec 5.0
Message Flow 5.0
Report Plug-in 5.0
WMBIntegration 5.0
Web Forms Designer 5.0
REST 5.0
MongoDB 5.0
WebService 5.0
Hadoop 5.0
Java/EJB Code Generator 5.0
C++ Code Generator 5.0
C# Generator 5.0
Java/EJB Simulator 5.0
C++ Simulator 5.0
C# Simulator 5.0
2 Compatibility
2.1 Designer
Cartridges created using older versions of Designer are compatible with this
version; but the same is not guaranteed for the reverse case. Do not try to open
cartridges created with this version of Designer with an older version. It will
result in error.
The Designer comes bundled with JRE1.7 and supports both 32-Bit and 64-Bit
versions (you need to choose the version during installation).
2.2 Runtime
Code generated using one version of Designer is not compatible (and should not
be used) with the runtime libraries of another version. For instance, if you used
a previous version of Designer to generate code from your cartridge, you need
to regenerate the code and use it with new runtime libraries. This applies to all
the supported platforms (Java, C++ and C#). You need to take this precaution
even for minor version upgrades (unless specifically mentioned) since the API
between generated code and standard libraries is not publicly documented and is
subject to change across versions. Make sure that you compile your custom
classes and client code as well.
The runtime has been tested with JRE 1.5, JRE 1.6 and JRE 1.7. Support for JRE
1.4 has been removed (since Volante 5.0).
3 What’s new since 5.0
The following product components have been upgraded in this 5.1.2 release (patch).
Product Component Version
Volante Composer 5.1.2
Conductor 5.1.2
ACH Format Plugin 5.1.2
ASCII Format Plugin 5.1.2
ASCII Fixed Format Plugin 5.1.2
BACS Format Plugin 5.1.2
BAI2 Format Plugin 5.1.2
Bloomberg Format Plugin 5.1.2
CDM Format Plugin 5.1.2
CFC Format Plugin 5.1.2
CGI Format Plugin 5.1.2
CHIPS Format Plugin 5.1.2
CMS/FCS Format Plugin 5.1.2
CREST Format Plugin 5.1.2
Document Format Plugin 5.1.2
EDI Format Plugin 5.1.2
Excel Format Plugin 5.1.2
FAST Format Plugin 5.1.2
FIX Format Plugin 5.1.2
FPML Format Plugin 5.1.2
IDOC Format Plugin 5.1.2
ISO20022 Format Plugin 5.1.2
ISO8583 Format Plugin 5.1.2
POJO Format Plugin 5.1.2
RTGS Format Plugin 5.1.2
Report Plugin 5.1.2
Reuters Format Plugin 5.1.2
SEPA Format Plugin 5.1.2
SIAC Canonical Format Plugin 5.1.2
SIC/EuroSIC Format Plugin 5.1.2
SWIFT Format Plugin 5.1.2
Universal Format Plugin 5.1.2
XML Format Plugin 5.1.2
Web Forms Designer 5.1.2
Cartridge Publisher 5.1.2
Data Generator 5.1.2
Message Flow 5.1.2
Java/EJB Code Generator 5.1.2
Java Simulator 5.1.2
3.1 Usage instructions for 5.x.x users
a. Install this patch after installing all the plug-ins you plan to use. This
patch will update the Jars only if they have already been installed. This patch
includes all updates made in previous patches
(5.0.1/5.0.2/5.0.3/5.0.4/5.1.0/5.1.1) and can be directly installed on top of a
5.0 installation. You can also install this if you have already applied previous
patch(es).
This patch is idempotent, can be installed any number of times. If you install
a plugin after installing this patch, make sure that you reapply the
patch.
b. You need to rebuild your cartridges after applying this patch.
c. The following jars have been updated (to version 5.1.2) in this release. Make
sure that you use the updated Jars in your application. All these jars are
under the <volante>\lib\runtime folder.
Generic Jars Plugin Specific Jars
beanrt.jar
camel-volante.jar
cp.jar
generalutils.jar
resourcemanager.jar
simplert.jar
transformrt.jar
volante-client.jar
volante-osgirt.jar
volante-tasks.jar
j2ee.jar
webformsrt.jar
volante-client.jar
javacg.jar
Volante-osgirt.jar
camel-volante.jar
pojo-plugin.jar
pojort.jar
crest-plugin.jar
crestrt.jar
ascii-plugin.jar
asciirt.jar
javacg.jar
iso8583-plugin.jar
iso8583rt.jar
swiftrt.jar
swiftresources.jar
swift-plugin.jar
volante-osgirt.jar
d. Due to size constraints, updated help documents are not included with this
patch. Refer to the last section of this document for help on
enhancements/changes. Updated help documents are available separately.
e. This document lists all changes made in all Volante components. Only
changes related to features that you have licensed are applicable to you.
3.2 Enhancements & Bug Fixes in 5.1.2
New Plugins
REST Plugin
1. The REST plugin allows you to define externally invocable REST services and use
message flows for implementation of the services. The REST plugin requires 5.1.2
patch installation.
MongoDB Plugin
2. The MongoDB plugin integrates Volante with MongoDB by supporting a number
of formula functions that lets you insert, query, update and delete Volante’s data
objects (documents) to and from MongoDB. The MongoDB plugin requires JRE1.6
or higher in the runtime environment.
Standard005 Plugin
3. The Standard005 Plugin allows the user to create, import and export
Standard005 messages in Volante Designer. Standard005 is a standard for the
exchange of financial data defined by the Canadian Payments Association.
Mule Plugin
4. The Mule plugin is updated to use Mule 3.7.0 runtime libraries.
Camel Integration
5. The Message Flow activity SendActivity supports the Camel protocol to send
flow output directly to a Camel end point through ports.
OSGI
6. The OSGI Code Generation settings includes OSGi Import-Packages and OSGi
Export-Packages properties to configure the additional classes that need to be
added in the manifest file for Import-Package and Export-Package properties.
SWIFT Plugin
7. Updates to SWIFT runtime to support changes in SRG 2016 which includes-
50F and 59F functions
New tags 111, 121 and 165 added in user header (Note: Formats for
these fields are based on the spec published by Swift dated 26 Feb 2016).
8. Support for New Swift Resources in runtime (ReachPlus). Also includes updates to
Currency code, Country code and IBAN files based on Swift spec dated 26 Feb
2016.
9. New formula functions: With inclusion of new Swift resources, Volante supports
new formula functions listed below
Swift Resource New Functions
ReachPlus GetReachPlusFromBIC
GetReachPlusFromChipsId
GetReachPlusFromNationalId
In the ReachPlus directory, each service has its own definition of fields. Some of
them are common fields (such as the PARTICIPANT ID), re-used for each service.
Other fields are attributes (such as ATTRIBUTE 1) particular to a service.
“SD to RP conversion table.xls” bundled along with BankDirectoryPlus
Technical documents to get the actual or the correct field that is being referred to
(previously the same field would have been used when calls are made against the
Service Directory). This mapping document is available at
http://swiftref.swift.com.
Bug Fixes
POJO Plugin
10. Designer data type ISODateTime is now supported in the POJO Plugin.
OSGI
11. The execution of Activity from Persistence category is enabled in OSGi
framework.
12. The CREST message requires swiftrt.jar and swiftresources.jar in OSGI and it is
enabled.
SWIFT Plugin
13. Swift does not enforce Usage Rules given in the spec unless there is a specific
error code mentioned. In Swift Plugin 5.1.1, the usage rules (without error
codes) given for tags 50F and 59F were implemented along with the usual
conditions given in the spec. In Swift Plugin 5.1.2 this has been fixed (Note:
Except for the removal of the below mentioned usage rule, the rest of the rule is
implemented as per the spec):
In option F, subfield 2 (Name and Address): if number 2 is present, the first
occurrence of number 3 must include the town in additional details.
Note that you need to upgrade to 5.1.2 to use SRG 2015 only if you are using
tags 50 and 59 with Option F in your messages (MT101, MT102, MT102STP,
MT103, MT103REMIT, MT103STP, MT202COV, MT205COV, MT210 and MT910).
14. A bug in field 77E format customization is fixed in the current Swift plugin.
15. The Swift parser now throws an appropriate exception for wrong message types
given for n category messages. For instance, (n98 now only accepts 198, 298,
398 …998).
16. Field 61 fix:
In SRG 2016 Field 61 is split into two sub-fields to be consistent with the way
Swift messages are defined. The sub fields also have validations defined. Splitting
them makes it easier to add these validations and maintain them. Hence, the
field (Transaction_Type_Identification_Code) is split into two sub fields
(Transaction_Type and Identification_Code).
Below are the messages where field 61 is changed in SRG 2016-
MT608, MT940, MT942, MT950, MT970, MT972 and MTAllTags.
If you want to use this as a single field, you can simply merge the two using
"Concat" method and assign it as follows: -
Transaction_Type_Identification_Code = Concat(Transaction_Type,
Identification_Code).
17. Leap Day (February 29th of a Leap Year) used in reduced ISO form (4
characters) indicated as an invalid Entry Date. This has been fixed to use the
current System year.
3.3 Enhancements & Bug Fixes in 5.1.1
1. Standalone Validations - Support for creating validations independent of
message definition. Earlier validations had to be specified along with the message
definition; now it is possible to separate out the validations not part of the core
message specification like country specific extensions.
2. Support for specifying encrypted passwords in a separate file which is referenced
in the data-sources.xml. For security reasons, it may not be possible to modify
data-sources.xml for production; now that it is in a separate file, it can be
updated without compromising the security.
3. Auto-Commit - Support for enabling auto-commit mode with data sources. This
would turn off transaction support in flows and all persistence related work would
be committed immediately (not at the end of the flow). This option can be used
for special cases like, bulk updates where transaction support is deemed
unnecessary. Note that this option, breaks transaction support and flows would
behave different when it is enabled. It should be used only in special cases where
data bases inserts need not be transactional.
4. All the import options have been consolidated under Tools->Import menu. For
instance, you can import an XSD to create new XML-plugin based message.
5. Test Manager and Bulk Transform activities have been made independently
licensable components.
6. Activity Plugin - Support for creating user defined activities for message flows.
7. Terminal Window – Simulates ‘Windows Command Prompt’ or Bash Shell within
Designer. Allows you to execute shell commands from Designer.
8. Web Help - Support for Web based help has been added. The help topics are
now available from Volante’s Web Site as well; you can configure Designer to use
the Web Help or the local CHM based help. This is particularly useful in MAC and
LINUX where, CHM support is not good.
9. Update to SWIFT runtime, to support changes in SRG 2015. Note that, you need
to upgrade to 5.1.1 to use SRG 2015 messages.
New Functions
10. The following functions have been added to support changes in 50F validation.
Swift Function:
Verify50FNmandAdrLines2
Verify50FNmandAdrCtryCode2
Bug Fixes:
11. In Universal Plugin, for a field which uses ‘Serialized Value’ option, the default
value specified for it was not correctly processed. This has been fixed.
3.4 Enhancements & Bug Fixes in 5.1.0
1. Volante Test Manager
Testing framework based on xUnit family (similar to JUnit) to manage and
automate test case execution.
Create and manage test suites using Simulator (UI).
Execute test suites in Simulator, ANT, MAVEN and from command line
Support for HTML and XML test reports
2. Visual Mapping
Visual drag and drop mapper - Provides an alternate way for mapping source
fields to destination. You can drag links from the source to the destination to
define a mapping. Mapping defined using the existing UI would also be
rendered in the Visual mapper with appropriate links. You can switch back
and forth between the two views.
One click mapping for fields of different types (with type conversion).
3. Functions
Support for Map type (hash/sorted) in message flow.
Support for Caching based on JSR 107 Cache API.
4. Message Flow – new activities for bulk transformation
Sort, Filter, Deduplicate
Aggregate, Reformat
Normalize, Denormalize
Join
All the above activities support generic configuration and hence can be used in
dynamic flows.
5. Support for Mule - Volante adapter which lets you invoke Volante flows from
Mule. Integrates with Mule studio where you can drag and drop Volante from the
palette and configure the flow.
6. Support for Spring Integration - Volante adapter which lets you invoke Volante
flows from Spring Integration framework.
7. Bundle application as WAR – As part of code generation you can now generate a
deployable WAR.
8. Service Bus/Generic Application - Option to create a merged uber-jar which
includes all cartridge/project jars and its dependencies meant to be used with
Service Bus.
9. Support for configuring project folders as ‘Source’, ‘Test’, ‘Excluded’ and ‘Test
Samples. This helps in distinguishing between core project entities and auxiliary
entities.
10. Improved support for HTTP proxy in Designer.
automatically detects proxies configured in the system (or IE)
supports PAC files
11. Support for revoking license. This allows you to quickly transfer an instance of
Designer to another machine.
12. New Plugins – BACS, FPS (Faster Payments) and Swift Trade Finance
13. Support for publishing project as HTML using Maven.
14. User interface has been revamped
Shared Properties Pane: The properties for the currently selected element
(field, mapping, validation, activity) is displayed in the property pane below.
Functions Pane: Lists all the functions that are available in the current
context. You can use drag and drop a function to formula window
(validation/mapping) to invoke.
15. Support for External tools. You can configure and invoke external tools from
Volante Designer.
16. Generate Maven dependencies - Used to generate cartridge/project dependencies
in the cartridge/project location as “pom-dependencies.xml”. You need to build
the cartridge/project to generate the pom-dependencies.xml file.
17. Support for viewing Simulator input/output in grid mode.
18. Support for moving nodes in Explorer using drag and drop
19. Volante Camel Adapter:
Support for more input and output types. User defined objects and
DataObjects can be passed as input/output
Support for passing multiple input/output through Camel using a XML
envelope.
20. Support for appending to existing message while serializing.
Bug Fixes:
21. The integrity of the downloaded message packs are verified to make sure that it
is not damaged during download. This is done by checking whether the
downloaded file is a well formed ZIP file. Earlier, download errors led to invalid
message packs in the download folder.
22. For mapping based functions, the generated HTML documentation includes the
mapping definitions.
23. Support for Maven 3.2.3
24. PDF type (not functional) specified in the documentation for cartridge publisher
has been removed.
25. 'Copy Cell Value' context menu has been added for all tables to copy the values
for the current cell. This works even if the cartridge is in read-only mode.
26. Shortcut keys (Ctrl+Right Arrow/Ctrl+Left Arrow) to expand/collapse message
format tree-table view.
27. Reformat formula shortcut (Alt+F8) is supported for tables (such as mappings &
validations)
28. In mapping based function, if mandatory field with default value has no mapping
the default value is used for mapping.
29. While serializing XML, if a mandatory field with a default value has null value, a
“Missing Mandatory field error” was reported. Now, the serializer uses the default
value for serialization.
30. MIG generator now supports up to 15 validation nodes (earlier the limit was 10).
31. Classes generated for SWIFT messages were earlier optimized to reduce code
size. This optimization results in other issues, hence has been removed. Now,
code generation for SWIFT uses same strategy as other message types. This
results in 30-300% increase in code size for SWIFT messages (compared to
previous version).
As a consequence of this change, SWIFT messages which contain sections with
the same name with different case would fail (this is breaking change). The two
known cases are MT370 & MT559; please update these messages from the latest
message pack.
Known Issues
32. Define Output Type feature (in Transform activities of message flow) allows you
create a new local type, but does not allow you to delete. It is good idea to create
a standalone internal message, instead of relying on this.
Deprecated Features
a) Volante Designer had support for Input/Output formats (prior to External
Messages); this feature was deprecated in 2005 (V2.3) and had been removed
from the UI. But cartridge containing input/output formats were still supported
for code generation. Support for this feature will be completely removed in the
next major release (6.0). Customers who had used this feature are encouraged
to convert the cartridges to the new format (using external messages)
b) Support for JRE 1.4 & 1.5 have been deprecated. These versions would continue
to be supported till the next major release. In the next major release (6.0),
Volante Runtime would only be supported for JRE 1.6 and above.
3.5 Bug Fixes/Enhancements in 5.0.4
General
1. Support for JDK/JRE 8. Both Designer and runtime now support JRE 8.
2. Updates & Notification: Option to check for product updates automatically has
been added. Updates, other notifications from Volante, license expiry information
etc are now shown in the ‘Notification Window’.
Users can configure which of these should be automatically checked and also the
frequency of such checks.
3. Option to generate ANT and MAVEN build scripts for project/cartridge. These
scripts can be used to build the cartridge/project.
4. Support for fields of type RawMessage in Internal Message.
5. Improved traceability of messages. Messages imported in cartridge now contain
information about the message pack from which it was imported. Till now, only
the standard version of the pack was maintained, now the message pack qualifier
(release date) is also included in the cartridge which let us identify the
corresponding message pack (if there are multiple releases for the same standard
version). This applies only for messages imported from new message packs
(since Apr 2014).
6. Support for UNC path in Windows. It is now possible to open cartridges with UNC
Path (\\mach\folder), build and test the cartridge. Some features may still not
work well with UNC paths (in particular which contain spaces, due to a JRE
issue). Not all applications and tools (e.g. Windows Command tool) work well
with UNC paths. Hence, it is generally recommended that you map the path to a
drive instead.
New Functions
7. The following functions have been added,
Aggregate Function:
SecSumBigDecimal
Utility Functions:
GetContextObjectProperty
SetContextObjectProperty
SetJavaProperty
GetJavaProperty
Message Functions:
[Beta]NewCachedMessage
GetObjectProperty
SetObjectProperty
GetEncoding
SetEncoding
8. [Beta] Following Query related functions have been added
DBQueryMessage
DBLimitQueryMessage
DBCountMessage
DBSQLQueryMessage
DBSQLLimitQueryMessage
DBCountSQLQueryMessage
Universal Plugin
9. Support for Zoned Decimal
10. Option to retain trailing delimiter (of the last non-null field), while trimming
trailing null fields in a section.
ISO8583
11. Support for specifying code pages for messages with ASCII & EBCDIC encodings.
This lets you process messages with one of the EBCDIC code page variations (like
cp277, cp1047 etc.) or extended ASCII variants like (ISO 8859-1 etc.). Since
bitmap fields do not distinguish between byte and character lengths, only single
byte code pages are supported (this excludes code pages like UTF-8).
12. Custom Section – Support for a user defined section for which
parsing/serialization will be done by user defined code.
13. Support for handling contiguous batched ISO 8583 messages.
14. Tag-Length-Value sections.
TLV sections were partially supported in the previous releases as well. The tag,
earlier, was restricted to be a numeric, the order of the Tag & Length were
reversed. This release supports numeric/text tags and the tag is always written
before the length. This is a incompatible change, in case you have been using
TLV sections in the earlier release.
15. The default padding for numeric fields for versions 1993 and above has been
changed from ‘Pad Right with Zero’ to ‘Pad Left with Zero’. Very often you would
want numeric to padded left with zero, but in case you depended on the old
behavior, this is an incompatible change.
16. The tool tip for ISO 8583 fields now contain more detailed information about the
field, like, encoding, field size etc.
17. A bug related to serialization of EBCDIC encoded sections has been fixed.
18. Messages distributed in the ISO 8583 message pack may not be usable out-of-
box like other standards (e.g. SWIFT, SEPA, ISO 20022). Subtle variations in
individual field settings (like encoding, padding etc.) between one vendor
implementation to another are possible. Volante ISO 8583 plug-in provides the
flexibility to tweak the External Message definitions to match exactly to the data
formats of any card data provider or consumer.
The user is expected to import the message from the message library and make
necessary changes as specified by the vendor. Once the messages are
customized, the definition can be exported to message library to be shared within
the organization.
Simulator:
19. Binary Viewer in Simulator now supports displaying text using specified encoding.
This is especially useful if the text contains a mix of non-ascii encoded text and
binary data (e.g ISO 8583 with EBCDIC encoding).
Message Flow
20. Improvements to message flow layout.
21. Support for dragging and dropping nodes from the Designer Explorer (node tree).
Option to automatically create variables required for the activity.
22. Automatic link creation if an activity is dropped close to a port.
23. If an activity is dropped on a link, the activity is inserted between the links.
24. On deleting an activity, the incoming and outgoing ports are automatically
connected.
25. When activities are added the default label for the activity now contains more
information about the element that is invoked (e.g. ‘Parse MT102’ instead of just
‘Parse’).
26. Synthesize Label in the context menu of activity to automatically provide a label.
Resources
27. Message based resources are now cached and loaded just once. Earlier the
message was parsed (expensive) and new object returned on every access (and
hence user had to cache it). Because of this change, any modifications to the
fields of the returned object will be visible at other access points. All resources
should be treated as constants and the contents should not be modified.
28. [Beta] Support for indexing the resources based on repeating fields to speed up
access.
29. Formula functions that use native static method calls use reflection to invoke the
method. With proper caching of reflected objects, the invocation costs are
significantly reduced.
SWIFT Plugin
30. Support for Service Directory.
31. New formula functions: With inclusion of new Swift resources, Volante supports
new formula functions listed below
Swift Resource New Functions
BankDirectoryPlus GetBankDirectoryPlusEntriesFromBIC GetBankDirectoryPlusFromChipsId
Service Directory GetServiceDirectoryFromBIC GetServiceDirectoryFromNationalId GetServiceDirectoryFromChipsId
XML Plugin
32. Support for representing all XML types as String in Designer. For every xmlType,
you can choose one of the supported Designer types. Most types have mappings
to String and hence can be represented as String in Designer.
When the Designer representation is changed mappings/validations written based
on original type may not work. The message libraries distributed by Volante,
which include validations, assume that the default Designer type is chosen for a
XML type. If you change the type, validation rules may not work/compile.
Cartridges created with xmltype mapped to other designer types (other than
default) may not work when used with previous versions (before 5.0.4) –
behavior varies. Therefore cartridges created using 5.0.4, which uses these new
few features, should be used only with Volante version 5.0.4 or higher.
33. [Beta] When the Designer type is changed to String, validation to check
conformance to the XML type and other facet validations are automatically done
by the runtime.
Runtime
34. Support for decreasing working memory usage. In non-batched mode, typically
memory consumption for message flows would include memory consumed by raw
input, parsed object, mapped object, and the raw output. These are all
temporarily held till the main flow is complete. If the input is large, and batching
cannot be used, then it is possible to free up some of the working memory to
reduce the overall peek memory consumption. For instance, the raw input and
the input object are no longer needed during serialization and hence can be
cleaned up.
To reduce working memory, use the close() method to cleanup RawMessage and
DataObject if it is no longer used.
35. Variables of a flow are now set to null when flow exits. This helps to free up the
reference and facilitates early garbage collection.
Camel
36. Support for handling batched messages.
Miscellaneous
37. The artifact id of beanrt.jar is changed to volante-bean for consistency with other
jars.
38. Some of the error codes in XML plugin that were duplicates have been
normalized. SRT127 and SRT120 are changed to XML104.
3.6 Bug Fixes/Enhancements in 5.0.3
New Plugin
12. A plugin to support integration of Volante with Hadoop has been released. This
plugin needs to be licensed separately.
Project
13. Support for generating HTML docs for project using Project Publisher
14. Within a project cartridge references are live. That is, changes made to a referred
cartridge within the project are immediately reflected in the reference cartridge.
You no longer have to use ‘Refresh references’ for cartridges within a project.
15. Cartridges within the project are now cached (as memory permits). Hence all
operations related to project (like find in project) are faster.
16. Significant improvements in project build time (for project with lots of cartridge
references, it should now be twice as fast as 5.0; (Project build time for a test
project brought down from 150 to 60 secs)
17. Project dependency analyzer (beta). Allows you to quickly analyze cartridge and
flow dependencies in a project.
SWIFT Plugin
18. Support for New Swift Resources in runtime (BankDirectoryPlus, Holiday, Holiday
Service, Time Zone and SEPARoutingV3).
19. New formula functions: With inclusion of new Swift resources, Volante supports
new formula functions listed below
Swift Resource New Functions
BankDirectoryPlus GetBankDirectoryPlusFromBIC GetBankDirectoryPlusFromNationalId
Holiday GetHolidayInfo IsCountryHoliday
Holiday Service IsServiceHoliday GetHolidayServicesInfo
Time Zone GetTimeZoneDifference
XML Plugin
20. Backward compatibility option to restore the 4.x behavior of allowing the named
groups to be flattened.
Persistence
21. The SQL query in Persistence Designer can now be completely modified (except
for the list of fields to select). This allows more flexibility over query (earlier only
the where clause of editable) Generate Query SQL.
Tools
22. Support for copying all the generated and dependent jars (of a project or a
cartridge) to a target directory from ANT and Maven build scripts.
General
23. Minor enhancements to Copy menu item
Qualified Name (Mangled) menu item copies the name of the selected
field/section and replaces the hyphen symbol with an underscore symbol. This
option will be useful when a name with a hyphen is used in formula.
Qualified Name (with index) menu item copies the name of the selected
field/section with index. This option will be useful when a name is used in
formula with index.
24. Bug fixes and minor enhancements (fixed map code gen issues, some
suggestions from clients incorporated).
25. New toolbar actions to build and configure project.
3.7 Bug Fixes/Enhancements in 5.0.3
Validation
1. Support for generating Message Integration guide (MIG) from validations
2. Enhancements to Validation selector mechanism. This allows us to easily apply
validations to any field/section which matches the constraint. E.g
“xmlType=NameAddress.city” applies validation to city element under all
elements of type NameAddress.
Functions
3. New formula functions - FieldIdToXPath, Attribute, NodeAttribute
References
4. Cartridge references within a project are automatically resolved even if the
cartridge is moved to a different folder (as long as the file name of the cartridge
is not changed).
5. Support for fixing cartridges references within a project (context menu).
Build
6. Optimized build process. Building project and cartridge are now much faster.
7. Building a project with changes to some cartridges (during development) is much
faster now. Dependency and change information for a cartridge are now obtained
without reading the entire cartridge.
8. Option to compile & build cartridges stored in remote (network) drive in the local
machine.
9. It is now possible to start the Simulator on opening a cartridge/project if it is
already built. Earlier you have to rebuild it the first you open. Note that, if a
cartridge is saved after code generation then jar will not be up to date (hence the
cartridge has to be rebuilt to restart the simulator).
10. During build, referenced cartridges are validated just once. On subsequent builds,
validation is skipped. This can significantly speed up build during development.
11. Support for building OSGi bundle for the entire project. It can generate either an
ESA file or a super bundle which includes other cartridge bundles.
12. Option to include/exclude dependencies in merged application Jars meant to be
used with Service Bus.
Designer
13. Easily switch between windows within or outside of a project using ‘Switch
Window’ (Ctrl+W).
14. Task Window to monitor progress of long running tasks (like build) and to cancel
them.
15. Designer now tracks modifications to cartridge and prompts the user to save it
only if it is modified.
16. Support for saving XML configuration data as part of resources.
17. Support of properly managing mappings that are orphaned when a target field is
deleted or modified.
Cartridge Navigation and Search
18. Enhanced search mechanism (Find Symbol etc.) to locate service elements,
functions and cartridges in project.
19. Cartridge format has been enhanced to include summary information about its
contents. This helps in quickly preparing cartridge summary without actually
reading the entire content.
XML Plugin
20. xml.any.mixed-content property can be used to treat ‘any’ element within an XML
as mixed-content or normal elements (default is mixed content = true)
Runtime
21. SLF4J – support for previous versions of SLF4J (prior to 1.6). These versions
have a method missing which Volante runtime uses. With this fix, the runtime
degrades gracefully if a prior version of SLF4J is used.
Bug Fixes
22. Field details were not generated in Cartridge Publisher (since 5.0.1); this has
been fixed.
23. Cartridge document generation was slow compared to previous versions. This has
been fixed.
24. Build using Maven was broken (resulted in NoSuchMethodError)
25. There were usability issues with entity names (message, mapping etc) containing
‘.’ (dot); hence it is no longer supported.
26. A cartridge without any service elements (only functions) was not correctly added
as dependency in EAR file.
27. While debugging code in certain activities like Custom element, mapping etc were
not displayed.
28. Transform context is not correctly propagated in case of phased parse/serialize.
This results in the options set using the context not getting passed to
parser/serializer. This renders EDI based messages not usable using phased
parse/serialize.
29. java.lang.Float cannot be cast to java.lang.Double” error in mapping from float
field to output field of type “Double”.
3.8 Bug Fixes/Enhancements in 5.0.1
XML Plugin
1. [Bug] During serialization of mixed format elements, optional ‘Value’ field
(PCDATA) was treated as mandatory.
2. Additional parser option xml.value.linefeed, specifies the line feed to be used in
case of multi-line values.
3. Additional serializer option 'namespace.prefix' that lets you control the prefixes to
be used for a given namespace dynamically.
4. [Bug] Null Pointer Exception at runtime, if the DTD file name’s case is changed.
SWIFT Plugin
5. Support for additional fields in User Header (as per the SWIFT specification).
6. [Bug] For Swift Service message, automatic creation of Web Form resulted in
NPE.
Universal Plugin
7. [Bug] Serialized output is incorrectly truncated when "Ignore Trailing Fields"
option is used for Length Preceded section.
POJO Plugin
8. [Bug]POJO plugin - classpath with backslash causes code generation error in
LINUX
Project
9. Support for Debugging/trace navigation in project simulator
10. Support for Find, Change log and Error reporting at project level.
11. [Bug] Memory leaks while opening and building cartridges in a project have been
fixed.
12. Double clicking a cartridge in a project and open it (earlier it was “Open” context
menu). Also, when reference cartridges are opened it is opened within the project
(if the referenced cartridge is also part of the project).
Validation
13. Added support for MinOccurs, MaxOccurs, Mandatory, NotAllowed validations for
sections.
14. Support for NotUsed, GuideLines and Bilaterally Determined validations for fields
and sections.
15. Entering commonly used validations such as Mandatory, NotUsed etc have been
simplified.
16. [Bug] Validation/Build takes too long in case of Functions containing Mapping
Rules.
17. Validation error for section elements includes the FieldId of the element instead
of the section (has the index of the element).
Cartridge Publisher
18. [Bug] When adding a Report and WebService Client to a cartridge, unable to
generate Documentation.
General
19. Proxy settings are now used even if the proxy panel is not okayed before use.
20. JRE 7 which is bundled with Volante Designer (for Windows), does not work
correctly with some VPNs. An additional VM option
“java.net.preferIPv4Stack=true” is now set to prefer IPV4 instead of IPV6.
21. [Bug]When diffing two messages with references (like CGI & MX messages)
spurious differences are reported since the references are expanded to different
depths.
22. [Bug]When installing the ISO8583 message package, the process ends fine but
there are no definitions installed. The folder permissions for config/iso8583 is not
right. (MAC & LINUX)
23. [Bug]Mapping one primitive type to another using implicit conversion (float-
>double) leads to an exception if the destination is SWIFT.
Simulator
24. Enhancements to test case generators for XML and other Plugins in Simulator.
Runtime
25. [Bug] During batched write using FileInputOutputMessage, it results in truncation
of file if another RawMessage is appended to it.
26. Support for passing dataObject/exception object for logging methods. E.g. error
(dataObject).
27. JSON Serializer - Field names in JSON should be quoted and should not be
mangled.
28. JSON Parser - line number in error; support for cascading
4 What’s New in Version 5.0
4.1 New Product Components
Excel, POJO, Document, Report plugins are added. Other additions include CPP Java
Bridge, WMB Integration, etc. Number of format specific plugins like CHIPS, SECOM,
RTGS, NEFT, SIC, BOJNET, etc have also been added.
4.2 New Product Features/Enhancements
Installation, Licensing & platform support
1. Volante Designer is now bundled with JRE 1.7 and uses the eclipse compiler.
Runtime compatibility with JRE 1.5 is still maintained (for most features). Note
that some plugins require JRE 1.6 or higher.
2. Support for WINDOWS 8.
3. Support for MAC OS X & LINUX
4. Support for 64-bit JVM. If you are running 64-bit Windows, during installation
you can chose 64-bit JVM. Under the bin folder both Designer.exe and
Designer64.exe are installed use the one that is appropriate for your installation.
5. Improved licensing mechanism.
o Simplified multi-user license management
o Support for automatically activating your license
o Support for independent additional licenses for evaluation of specific
features, etc.
o Support for checking for upgrades.
Support for Message Packs
6. New distribution model to download, install and manage message libraries.
7. Build-in installer to install/uninstall messages independent of the format plugin
8. Support for shared installation (on the network) of message library which can be
managed by an administrator and accessed by multiple-users.
Project
A project is an organizational unit that represents a complete software application,
typically comprising multiple inter-dependent cartridges
9. Support for creating a project, which includes cartridges one or more root folders
(recursively)
10. Support for building, executing, and managing the contents of a project
(cartridges) from the Designer.
11. Support for exporting and importing a project as zip.
Core Enhancements
12. Support for cascading errors (most plugins)
13. Phased parsing and serialization (only in XML & Universal plugin)
14. Better support for COBOL Copy Book
Runtime improvements
15. Support for using TOMCAT data source
16. Enhancement in Volante client (performance reports, profiling, automated test
execution, etc.)
17. Support for encrypting passwords in cp.xml and data-sources.xml
18. Improvements in Command Processor (file locking and staging support).
Formula Language:
19. Support for Nullable types
20. Support for Variant type
Functions:
21. New formula functions (ZIP, Security, Formatting, etc.)
22. Support for database operation in functions
SWIFT Plugin:
23. Support for BigDecimal type in SWIFT
24. Support for ignoring {S: trailer block while parsing
Universal Plugin:
25. Support for Length Preceded sections
26. Better support for formatted output in case of decimals
27. Support for specifying multiple delimiters
28. More options for delimited fields/sections
29. Support for cascading of errors during parsing.
XML Plugin:
30. Better support for ‘Any’ in XML plugin (new functions AnyToText, TextToAny and
createAnyElement).
UI
31. Better support for multi-monitor configuration
32. Unified application level settings.
General Features:
33. Support for cascading FIX, ASCII Delimited and ASCII Fixed Width, Universal
plugins
34. Support for Facets in Universal and FIX plugins
35. Simulator: Support for passing context properties (from the UI), Default
Resource, Parse, Validate and Write (Output format) and Switch to Designer
option.
36. Improvements to SQL console.
37. Support for TOMCAT datasource (Simple Runtime)
38. Cartridge elements can be excluded from cartridge or made private to the
cartridge.
Integration
39. Support for OSGi runtime. All runtime jars, cartridge generated jars, and
dependent jars are now OSGi bundles.
40. Support for Volante Camel Adapter which lets you invoke Volante flows from
Apache Camel.
41. Support for building cartridges with Maven and support for Maven repository.
42. WMB Integration
43. Option to generate static methods to invoke flows for simpler integration with
Service Bus.
For more details on enhancements to Designer, refer to the Designer Release notes
and Message Flow Release notes. For enhancements in other Plugin components,
refer to the release notes of that component.
4.3 Composer UI enhancements
Refer to Designer Release Notes.
4.4 Bugs Fixed
1. In Document Format Plugin, Support for XHTML document with namespace.
2. XPath Evaluator to evaluate the XPath expression. (ToolsXML Tools XPath
Evaluator)
3. Command Processor was available as a Separate Utility, whereas now included as
an addin in designer under Tools Command Processor.
4. Support for executing Cartridge entities in “execute.bat” that contains spaces in
the name using double quotes.
5 Open Issues
5.1 Component-wise issues
Designer Issues
ASCII Delimited Plug-in
Cobol Copy Book Plug-in
Crest Plug-in
Document Plug-in
EXCEL Plug-in
FIX Plug-in
FPML Plug-in
SICEuroSIC Plug-in
Standard005 Plug-in
Swift Plug-in
Universal Plug-in
XML Plug-in
CPP Issues
Web Form issues
Message Flow
Java Runtime Library Issues
Hadoop Issues
5.2 Known Issues
a. REST and MongoDB plugins are not supported in OSGi environment.
b. Batch mode is not supported in case of ASCII FIXED external messages.
c. If multiple definitions of a function with same signature is defined in one or more
cartridges, it is now flagged as an error (earlier this went undetected). This
additional validation would result a validation error indicating that there is “More
than one occurrence of the same function in the cartridge scope”. This might
result in a cartridge that was building fine to fail with code generation error (MT-
MX references cartridge provided by Volante has this problem).
d. Batch activities are supported only for XML and ASCII Delimited plug-ins.
e. Batch activities are not supported in C++ and C#.
f. Batching and phased parsing/serialization requires that the invocation is through
local interfaces. It may not work well when the client is remote, for e.g. in case of
EJB.
g. RawMessage is not properly supported in C++ and C#.
h. In Resources, internationalization and locales are supported only in Java. These
features are not supported in C++ and C#.
i. Many formula functions are not supported in C++ & C#.
5.3 Upgrade Issues
There are no Upgrade Issues. The 5.1.2 release should be installed only after
installation of all the plug-ins that are planned to be used, as this patch will update
the Jars only if it is already installed. You can also install this if you have
already applied previous patch(es); this patch is idempotent and can be installed any
number of times.
5.4 Compatibility Changes
Multi source mapping (Many to one) has been superseded by the more flexible
Many-to-Many mappings. Cartridge containing Multi-source mappings will
continue to work but you cannot create new mappings; use Many-to-many
mappings instead. In some cases, when you compile cartridges with Multi-source
mappings invoked from a message flow, you may encounter validation errors. If
all cases opening the property pane for the mapping activity and saving it would
fix the issue.
Some additional checks are now made during Cartridge validation, which can
report new errors in cartridges that ran fine in previous versions. These are
actually errors that existed in your cartridge and are now exposed due to tighter
validations. In most cases these errors should be easy to fix.
6 Other Release Notes
Your distribution contains other release notes. Please refer to them before using the
product.
7 Enhancements Details
7.1 REST Plugin
The REST plugin allows you to define externally invocable REST services and use
message flows for implementation of the services. That is,
Define REST services and associate them with a flow.
Bind a message flow’s input and output to parts of HTTP request and response,
such as query parameters, URI path, headers, cookies etc.
Goals
The goals of REST are:
The specification will define REST bindings for Volante flows, so that resources
defined in the cartridges can be exposed as REST services. The scope would be
limited to HTTP as the underlying protocol.
The features would be modelled after JAX RS specification which defines REST
bindings for Java classes. The main difference being, instead of Java classes,
Volante flows would be used for implementation of services.
The objective is not to expose every message flow as a REST service; only flows
that are “Resource Oriented” can be meaningfully exposed.
The REST services are meant to be consumed by a UI front end (like HTML 5 +
Javascript) as well as a standalone REST client.
Volante Rest Adapter
Volante adapter for RESTful Web Services is a module that provides support for
creating REST (Representational State Transfer) based web services. In REST
architecture, data and functionality are considered resources and are accessed using
Uniform Resource Identifiers (URIs), typically links on the Web. The resources
are acted upon by using a set of simple, well-defined operations (in this case,
Volante message flows). The REST approach is constrained to a client/server
architecture and is designed to use a stateless communication protocol, typically
HTTP. In a REST architecture, clients and servers exchange representations of
resources by using a standardized interface and protocol.
The following principles encourage RESTful applications to be simple, lightweight,
and fast:
Resource identification through URI: A RESTful web service exposes a
set of resources that identify the targets of the interaction with its clients.
Resources are identified by URIs, which provide a global addressing space
for resource and service discovery.
Uniform interface: Resources are manipulated using a fixed set of four
operations – create, read, update and delete operations(PUT, GET, POST,
and DELETE in HTTP). POST creates a new resource, which can be deleted
by using DELETE. GET retrieves the current state of a resource in some
representation. PUT transfers a new state onto a resource.
Self-descriptive messages: Resources are decoupled from their representation so
that their content can be accessed in a variety of formats, such as HTML, XML, plain
text, JSON, and others. Metadata about the resource is available and used, for
example, to control caching, detect transmission errors, negotiate the appropriate
representation format, and perform authentication or access control.
Service
A Service is a collection of REST operations grouped together. For instance, you can
group together operations related to a customer under the ‘customer’ service and
define operations like create, get, delete, etc. under it. Each of these operations is
mapped to a combination of URI path and HTTP method.
While defining a service, you can optionally associate an URI path with it. The service
is selected only if the HTTP request’s path matches with the path specified for the
service. Path specified for the operation of the service are conjuncted with the path
for the service.
Note that the service is just a grouping of operations; HTTP request must match one
of the operations for it to be executed.
Operation
Operations are defined under the service and are the executable component of the
service. Every operation is associated with a message flow. This message flow is
executed, if the incoming HTTP request’s URI path and the HTTP method matches
with the operation. The input arguments to the flow are obtained from various
components of HTTP request.
While defining an operation, you can optionally associate an URI path with it. Path
specified for the operation of the service is conjuncted with the path for the service.
For instance, if the path specified for the service is path="/users" and the path for
the operation is “/messages” then the effective path of the operation is
"/users/messages".
The operation also includes a method attribute which refers to the HTTP method to
which it responds. The operation is selected only if the incoming HTTP request’s path
and the method matches with the path and the method specified for the operation.
Message Flow
This message flow associated with the operation is executed, if the incoming HTTP
request’s URI path and the HTTP method matches with the operation.
Input - The input arguments to the flow are obtained from various
components of HTTP request.
Output - The flow may define zero, one or more than one outputs. Also, the
flow may return null for output defined.
7.2 MongoDB Plugin
Volante integrates with MongoDB by supporting a number of formula functions that
let you insert, query, update and delete Volante’s data objects (documents) to and
from MongoDB. The ‘volante-mongodbrt’ runtime adapter takes care of efficiently
converting Volante’s Data object to and from JSON object as required by MongoDB.
The functions supported by Volante are very similar to the ones provided by Mongo
Shell or the Mongo Java API.
The ‘volante-mongodbrt’ runtime adapter requires data-source.xml configuration to
connect MongoDB server.
Example:
<?xml version="1.0"?> <data-sources> <data-source dbType="mongodb" name="mongodb-Sys1" password="12345678" url="localhost:27017;databaseName=mydb" username="dbUser"
/> </data-sources>
You need to include Volante - mongodbrt.jar and MongoDB Java driver in the class
path to use these functions.
Volante – MongoDB Example
This example demonstrates how to Persist, Query and Update a purchase Order
message in Mongo db using simple MongoDB functions.
1. Parse a PurchaseOrder message. The object could have been received from some
other source as well (example from another data base).
2. Persist the purchase order object in MongoDB using ‘MongoDBInsert’ function in
custom activity
MongoDBInsert("data-source-name ","CollectionName", Obj);
3. View inserted object in Mongo Shell
Query from MongoDB
1. Create a new purchase order object, which will be used as a template for
returning the results of the query.
Query the collection by order date as shown below
def results = MongoDBFind("mongodb-localhost",
"Order","{Data.orderDate=’1999-10-20’}", OrderObj);
f. This returns a collection of objects with the specified orderdate.
7.3 CamelProtocol using SendActivity
CamelProtocol
The Send Activity is enhanced to send output/data directly from Volante flows to
Camel endpoint by looking up the endpoint in the Camel Context name.
In the message flow select the ‘Ports’ tab under message flow properties. Set the
properties for Protocol as ‘camelprotocol’ and for Device as ‘direct:{DeviceName}’
Example : direct:volanteout
The device name ‘direct:volanteout’ should be called in endpoint of
camelContext.xml to get the output from flow ‘OrderFlow’
Note: To simulate via designer, include camel-volante.jar in
AdditionalClassPath of Cartridge Codgeneration Settings, this jar is available
under ‘Volant/lib/Runtime’ folder
camel-rmiprotocol
By using camel-rmiprotocol instead of camelprotocol, Camel will take precedence
over rmi. That is, for example, if camel classes are present, the SendActivity will use
Camel protocol. If camel is not running, the SendActivity will automatically use rmi.
Volante provide support to set the Camel URI using camel.device.prefix property
as shown below
SetContextProperty("camel.device.prefix", "direct:");
By setting this property, the camel URI will not be exposed to RMI. That is, when
connecting camel, this property will concatenate the camel URI ‘direct:’ to the device
name prefix e.g.’direct:volanteout’ otherwise, ignores the camel component ‘direct:’
when connected to rmi.
Note:
This will help in migrating from CommandProcessor based flows to Camel.
This protocol is mainly used for standalone and Simulator testing.
7.4 OSGI Import/Export Packages in Code Generation Settings
OSGi Import-Packages and OSGi Export-Packages properties are introduced to
include the required packages in MANIFEST.MF file for OSGI.
This property allows users to make their cartridges as fully compatible with OSGi
environment.
Note:
Multiple packages can be included by using comma as separator.
Version is not supported.
For example, if your own external class like mycompany.xxx is used in Native code
or Native class then these external classes will not be part of Import/Export-
Packages list in Manifest.MF file by defualt. Hence the generated jars may not have
all its dependencies satisfied in OSGi environment. The developer can configure all
external packages in OSGi Import/Export-Packages property to make their cartridge
fully compatible with OSGi environment.
Once the package name is specified in the OSGi Export-Packages or OSGi Import
Packages text box and the cartridge is code generated, the package name will be
made available in the MANIFEST.MF file of the generated jar.
7.5 Standalone Validations
Designer supports creating stand-alone validations at the outside of message
definition. Though the stand-alone validations are also tied to a specific message,
ability to define it separately, allows us to extend the message definition without
modifying it. Validation Group node acts as folder which consists of multiple child
validation nodes for a specific message.
You can use stand-alone validations in the following situations,
The cartridge in which the message is defined cannot be edited, and you
want add validations rule sets for the message.
Validations are not part of the core specification (e.g. based on certain
country or region). You can create top-level validation groups for each
category of rules.
To invoke a Stand Alone Message Validation from the Message Flow, use the Validate
Activity as shown below. Select the message for which the validation needs be
applied as you normally do. Since the stand-alone validation is defined outside of the
message definition, it does not appear in the ‘Validation’ combo. You need to enter
the validation name as a string (formula) as shown below.
You can test the validation fusing the ‘Execute’ utility. Name of the Actual Validation
rules node under the Stand Alone Message Validation is used in the Execute Utility.
Syntax:
>execute name Inputfile -validate:rulename
>execute EntireInputAsSingleMessage D:\Samples\invalid1.dat
-validate:RequiredFields
7.6 Encryption in data-sources.xml
Instead of using encrypted value directly in data-sources.xml, the encrypted value
can be embedded in external file and this external resource file is refer to in data-
sources.xml by prefixing the property with “encrypted-resource-“. For instance to
encrypt user name, you would use the attribute “encrypted-resource-username”
instead of “username” as shown below.
Property
encrypted-resource-password="Resource File"
Example
Note: This external resource file (Encrypted file) should be present along with data-
sources.xml.
7.7 Auto-commit in data-sources.xml
Every transaction in SQL statement is committed when completed successfully or
rolled back when error occurs. However, when a single error occurs the entire batch
is rolled back. In auto-commit mode, each and every sql command is considered as a
transaction and it will be saved in the Database when set to true. The sql statement
only for which error is thrown is rolled back when auto-commit="true". The default
behavior of auto-commit is set to false.
<?xml version="1.0"?>
<data-sources default-data-source="oracledb" >
<data-source
connection-driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@200.200.200.10:1521:orcl"
username="Volante"
password="Volante"
class="com.volante.component.server.jdbc.ManagedJDBCDriverConnectionPool"
dialect="oracle"
location="oracledb"
name="oracledb"
auto-commit="true"
/>
</data-sources>
7.8 Activity Plugin
Volante lets you define new message flow activities which appear in the palette along
with the predefined activities. These custom activities can be used for specific
purpose or tasks for which Volante does not have out of the box support.
For creating the activity plugin user should generate the jar. To generate a jar need
to create activity Java class and a conductor-extension.xml which publishes this
activity to the Designer and also defines the user interface for specifying the
properties of the activity. Package activity Java class and conductor-extension.xml as
jar and drop it under Volante’s plugin folder.
After restarting the designer the activity will appear in the message flow palette
along with the predefined activities as shown
At runtime, the message flow activity class would be instantiated and its properties
are set based on user specified values. Then, its run method is invoked and the
results are passed back to the flow. During code generation, the extension Jar is also
included as part of the runtime package (bundle or in class path).
7.9 Volante Test Manager
Volante Test Manager helps you to define and manage your test plans for automated
unit, integration and system tests. The Test Manager is integrated with Volante
Simulator, in which you can create the test cases and manage them as test suites.
Once created, these tests can be executed in an automated manner from the
Simulator, ANT, MAVEN and from command line. Also it supports for Volante HTML
Reports, JUnit HTML and XML test report format.
Volante Test Manager contains the following
Test Suite
Test Case
Test Group
Test Module
Files and Folders
Tags
Test Output Comparison
Test Execution
Test Suite
A suite is the central unit of composition of test cases and is stored as an XML file. It
can contain one or more tests. The path of the test suite is relative to the project
that stored in the Project file. This allows you to copy the project and test suite
folders together to another machine. The lists of test suites associated with a project
are displayed in the Simulator and can be executed for it.
Test Case
A test case, which is defined within a test suite, is used to test an entity (Message,
Mapping flow etc) and includes the input(s) and expected output(s) for that test. On
executing the test case, the system should be able to verify the result and mark the
test as success or failed.
Test Group
Test Suites are grouped/organized using their module name. Module, typically is
name of the Cartridge which is tested by this Test Suite. Module names can also be
hierarchical, in which case the components are separated by dot e.g.
Payment.Cancellation. Modules are akin to packages in Java.
Organizing test suites based on modules is particularly useful if there are large
number of test suites, since it allows you to execute based on the module hierarchy.
Module names are again used in reports for organizing the test results.
Files and Folders
The input and the expected output of a test case as well as actual output of a test
run are typically stored in the file system. In the Files & Folders section, you can
configure the files names and folders you want to use.
Tags
Test Manager allows you to define arbitrary test categories, to "tag" tests as
belonging to those categories, and filter tests to run based on their tags. You can
add a list comma separate tags to a test case. Then, Test Manager can be invoked
and asked to include a certain set of tags (or regular expressions) while excluding
another set. This gives you maximum flexibility in how you partition your tests and
allows you run different subsets of tests using the same test suite.
For instance, you can mark some of the tests as Smoke? And later can execute only
those test cases. All tags are user defined and does not carry any special meaning to
the Test Manager.
Test Output Comparison
Typically you find that there are some differences between the output and the
expected output which are not significant, and simple equality check will result in
number of test cases failing incorrectly. Test Manager comes with a built-in
comparison engine which lets you compare the output of a test run and the expected
output and ignore these semantically insignificant differences.
The comparison tool supports options to ignore whitespaces, ignore character case,
mask part of the output and expected outputs using regular expression etc
Test Execution
Test Execution depends on the environment in which you are executing the test. You
can run the tests in following ways,
Simulator
Command Line
ANT
MAVEN
Since multiple Test Suites are associated with a Project, it is convenient to execute
all the test suites that are part of the project.
7.10 Visual Mapper
Provides an alternate way for mapping source fields to destination. You can drag
links from the source to the destination to define a mapping. Mapping defined using
the existing UI would also be rendered in the Visual mapper with appropriate links.
You can switch back and forth between the two views. In Visual Mapper Mapping can
be happened in four ways.
1. By dragging a line from source field to destination field
2. By dragging a field from source table and drop it on destination table’s field
3. By double clicking on destination field
4. By clicking on map button
5. By Properties pane
After selecting the mapped link the formula can be visible as a tooltip and it will
displayed in properties pane also.
Visual mapping:
7.11 Transform Activities
Sort
This activity is used to Sorts set of records based on one or more key fields
Input
In this combo box, all the collection variables for the messages that are defined in
the flow will be listed. The collection variable can be of type defined or undefined
based on which the records needs to be sorted.
Sort By
The records are sorted based on one or more key fields. The key fields are prioritized
based on specified order (ascending/descending). If the input specified is defined,
the fields of that particular message will be listed in this list box. The user can select
the field from the list box. The field to Sort can be specified dynamically by prefixing
the equals sign and giving a string (For ex: =”AccountNumber”). This will be
validated during runtime. Hence any error such as the field specified is not available
in the message will be thrown during runtime.
Output
In this combo box, all the collection variables for the messages that are defined in
the flow will be listed. The collection variable can be either of defined type or
undefined type. The output can also be specified dynamically by using formula. This
formula is evaluated at runtime and it should return the output. A new output record
set can be specified or you can overwrite the input set.
Note that the Input and Output should be of same type, otherwise a validation error
will be reported.
Filter
This activity is used to Filter data records based on a specified condition
Input
In this combo box, all the collection variables of type defined or undefined will be
listed. The record set that needs to be filtered based on a condition has to be
selected from the list.
Filter Condition
In this combo box, a boolean condition has to be specified based on which the input
records is filtered. The condition can be an expression or you can access other
variables defined in the message flow. Note that, when the Input collection is
undefined, the getString() function is used to dynamically define the condition that is
validated at runtime.
Output
In this combo box, all the collection variables for the messages that are defined in
the flow will be listed. The collection variable can be either of type defined or
undefined. Select the required records where the filtered set of records needs to be
stored. A new output record set can be specified or you can overwrite the input set.
Rejected
In this combo box, all the collection variables for the messages that are defined in
the flow will be listed. The collection variable can be either of type defined or
undefined. Select the required rejected variable where the subset of records that
does not satisfy the filter condition needs to be stored. This variable is optional.
Note that the Input and Output should be of same type, otherwise a validation error
will be reported.
Deduplicate
This activity is used to Removes duplicates from the sorted set of records based on
key fields
Input
In this combo box, all the collection variables of type defined or undefined will be
listed. The record set from which the duplicate needs to be removed has to be
selected from the list.
Retain Duplicate
There is an option to retain duplicates as below.
Retain Duplicate Description
First It will keeps the first record and removes all other duplicate
records
Last It will keeps the last record and removes all other duplicate
records
Remove It will removes all duplicate records
Sort Input (uncheck if already sorted)
For deduplicate, the input should have been sorted. Sorting can be done using a
separate activity or simply by checking the Sort Input check box. Sort Input when
checked, sorts the given input to check for duplicate records.
Key Fields
The duplicates are identified using these key field(s). Note that the input set of
records should have be sorted using the same key fields or a super set. If the input
specified is defined, the fields of that particular message are listed in this list box.
The user can select the field from the list box. The field to deduplicate can be
specified dynamically by prefixing the equals sign and giving a string (For ex:
=”AccountNumber”). This will be validated during runtime.
Output
In this combo box, all the collection variables for the messages that are defined in
the flow will be listed. The collection variable type can be either of defined or
undefined. Select the required variable where a new output record set with
duplicates removed needs to be stored.
Duplicates
In this combo box, all the collection variables for the messages that are defined in
the flow will be listed. The collection variable type can be either of defined or
undefined. Select the required variable where the duplicate records can optionally be
collected.
Note that the Input and Output should be of same type, otherwise a validation error
will be reported.
Aggregate
This activity is used to Aggregates sorted record set grouped by a key or set of fields
The Aggregate activity aggregates sorted record set grouped by field defined under
Aggregate by fields. This activity can be used to calculate the sums, record count for
each group of records. In the Properties dialog box for the ‘Aggregate’ activity, you
are prompted to specify the properties as shown in the above picture.
Input
In this list box, all the collection variables for the messages that are defined in the
flow is listed. The collection variable can be of type defined or undefined, thus
dynamically defining the input.
Sort Input (uncheck if already sorted)
For Aggregate, the input should have been sorted. Sorting can be done using a
separate activity or simply by checking the Sort Input check box. Sort Input when
checked, sorts the given input to be aggregated.
Aggregated By Fields
The field with respect to which the input should be aggregated should be given in the
“Aggregate by Fields” under the input. The records are aggregated based on one or
more key fields. The key fields can be used to calculate the sums, record count for
each group of records. If the input specified is of type defined, the fields of that
particular message is listed in this list box. The user can select the field from the list
box. The field to aggregate can be specified dynamically by prefixing the equals sign
and giving a string. This will be validated during runtime. Hence any error such as
the field specified is not available in the message will be thrown during runtime.
Output
All the collection variables for the messages that are defined in the flow will be listed
in this list box. Select the required variable where the aggregated set of records
needs to be stored. The output can be of input type or undefined.
Mapping
The records can be aggregated based on the mapping specified in the mapping tab.
The user can define mapping in two ways
Use Mapping
Define Mapping
Use mapping: lists the mapping defined elsewhere. Under Use Mapping the mapping
name can be dynamically called, for instance by entering the name as
="MappingName"
Create New Mapping: When there is no mapping available, a new mapping can be
created using the Create new mapping option. A new mapping is created based on
the inputs and output defined in the Input & Output tab. When a mapping name is
given in the Use Mapping text box and Create New Mapping is selected, a mapping
node with the corresponding input and output as source and destination will be
instantly created.
Define mapping: the user can define mapping in-place. When Define Mapping is, the
fields can be Dynamic by giving values as ="fieldname".
Note that Input, Aggregated by Fields, Output and mapping are type checked at
design time.
Reformat
This activity is used to Reformats/transforms a set of records
The Reformat activity allows to Reformat/transform a set of records. Output records
can have completely different structure. In the Properties dialog box for the
‘Reformat’ activity, you are prompted to specify the properties as shown in the above
picture.
Input & Output
All the collection variables for the messages that are defined in the flow will be listed
in this list box. The collection variable can be of type defined or undefined based on
which the records needs to be reformat has to be selected.
Output
All the collection variables for the messages that are defined in the flow will be listed
in this list box. The collection variable can be either of defined type or undefined
type.
Mapping
To reformat a set of records, means the output can have a complete different
structure.
The user can define mapping in two ways
Use Mapping
Define Mapping
Use mapping: allows selecting a predefined mapping from the list. Under Use
Mapping the mapping name can be dynamically called, for instance by entering the
name as ="MappingName".
Create New Mapping: When there is no mapping available, a new mapping can be
created using the Create new mapping option. A new mapping is created based on
the inputs and output defined in the Input & Output tab. When a mapping name is
given in the Use Mapping text box and Create New Mapping is selected, a mapping
node with the corresponding input and output as source and destination will be
instantly created.
Define mapping: In place mapping. When the mapping is Define Mapping, the fields
can be Dynamic by giving values as ="fieldname".
Normalize
This activity is used to Normalizes a record set with repeating elements by breaking
it into multiple rows
In the Properties dialog box for the ‘Normalize’ activity, you are prompted to specify
the properties as shown in the above picture.
Input
All the collection variables for the messages that are defined in the flow will be listed
in this list box. The collection variable can be of type defined or undefined based on
which the records need to be normalized has to be selected. Also, the input can be
specified dynamically using a formula. This formula is evaluated at runtime and it
should return the name of the collection to be used for normalizing the parsed
object.
Fields to Normalize
The field to which the output should be normalized should be given in the “Fields to
Normalize” under the output. If the output specified is of defined type, the fields of
that particular message is listed in this list box. The user can select the field from the
list box. The normalize fields can be specified dynamically by prefixing the equals
sign and giving a string. This will be validated during runtime. Hence any error such
as the field specified is not available in the message will be thrown during runtime.
Output
All the collection variables for the messages that are defined in the flow will be listed
in this list box. The collection variable can be either of defined type or undefined
type. The output can also be specified dynamically by using formula. This formula is
evaluated at runtime and it should return the output.
The field to which the input should be normalized should be given in the “Normalized
Field” under the input. If the input specified is defined, the fields of that particular
message is listed in this list box. The user can select the field from the list box. The
field to normalize can be specified dynamically by prefixing the equals sign and
giving a string. This will be validated during runtime. Hence any error such as the
field specified is not available in the message will be thrown during runtime.
Note that Input and Output are type checked at design time.
Denormalize
This activity is used to Denormalize a sorted record set by converting columns to
rows
In the Properties dialog box for the ‘Normalize’ activity, you are prompted to specify
the properties as shown in the above picture.
Input
All the collection variables for the messages that are defined in the flow will be listed
in this list box. The collection variable can be of type defined or undefined based on
which the records needs to be denormalized has to be selected. Also, the input can
be specified dynamically using a formula. This formula is evaluated at runtime and it
should return the name of the collection to be used for denormalizing the parsed
object.
The field to which the input should be denormalized should be given in the
“Normalized Field” under the input. If the input specified is defined, the fields of that
particular message is listed in this list box. The user can select the field from the list
box. The field to normalize can be specified dynamically by prefixing the equals sign
and giving a string. This will be validated during runtime. Hence any error such as
the field specified is not available in the message will be thrown during runtime.
Output
All the collection variables for the messages that are defined in the flow will be listed
in this list box. The collection variable can be either of defined type or undefined
type. The output can also be specified dynamically by using formula. This formula is
evaluated at runtime and it should return the output.
Denormalized Fields
The field to which the output should be denormalized should be given in the
“Denormalized field” under the output. If the output specified is of defined type, the
fields of that particular message is listed in this list box. The user can select the field
from the list box. The denormalize fields can be specified dynamically by prefixing
the equals sign and giving a string. This will be validated during runtime. Hence any
error such as the field specified is not available in the message will be thrown during
runtime.
Join
This activity is used to Joins two or more data sets by matching key fields or
expression
Join activity joins two or more data sets by matching the conditions given under the
Condition tab. This activity supports multi way join, more than two messages can be
joined. In the Properties dialog box for the ‘Join’ activity, you are prompted to
specify the properties as shown in the above pictures:
Input & Output
Inputs
All the collection variables for the messages that are defined in the flow will be listed
in this list box. Those messages that need to be joined are collection variables that
can be of type defined or undefined.
Output
The output is the subset of records of the given messages depending on the
conditions and Join Type. All the collection variables for the messages that are
defined in the flow will be listed in this list box. The collection variable can be either
of defined type or undefined type.
Output can also be defined using the Define Output. This defined Output is similar to
an internal message.
Rejects
Records that do not participate in join can optionally be collected separately. For
each input set, there is separate set of rejects.
Condition
Conditions can be added and each condition can be defined separately. Defining
conditions includes the Join Type, Inputs, and Conditions.
All Inputs Participate in Join option means it is mandatory to define conditions for all
the defined inputs. If an input does not participate in the condition, validation error
will be thrown.
Join Condition
There are two ways to define a condition,
Matching key fields.
Generic Expression.
Join Type
Type Comment
Inner Returns rows that have a match in both the joined record sets
Left Outer Returns rows from the left set, and the matched rows from the right
record set.
Right Outer Returns rows from the right set, and the matched rows from the left
record set.
Full Outer Returns all the rows of both record sets irrespective of match
Mapping
Mapping is to merge the individual records to an output structure.
The user can define mapping in two ways
Use Mapping
Define Mapping
Use Mapping: Refer to a mapping defined elsewhere. Here the mapping name can be
dynamically defined, prefixing an equal sign and the name given as string
="MappingName"
Create New Mapping: When there is no mapping available, a new mapping can be
created using the Create new mapping option. A new mapping is created based on
the inputs and output defined in the Input & Output tab. When a mapping name is
given in the Use Mapping text box and Create New Mapping is selected, a mapping
node with the corresponding input and output as source and destination will be
instantly created.
Define Mapping: Mapping can be defined in-place. In case of outer joins, input record
can be null. The fields can be given dynamically by prefixing an equal sign followed
by string =”fieldName”.
Other Options
Here you can specify optional parameters that are recognized by that activity. These
optional parameters are taken into account when the activity is executed.
Dynamic/Generic Transforms
With dynamic flows you define the process or way in which message need to be
processed without using specific message type. Since the record set is specified as
formula, the type of the message is not known at design time (Undefined) and so
resolved at runtime. Hence, the variables that refer to the record set are of
‘Undefined’ type. All the activities in the ‘Transforms’ category support using
undefined types and dynamically computes names.
To use the transform activities in a generic context,
The record set (input/output/reject) has to be a collection (section) of type
“Undefined”.
Input and output variables can be specified using formula.
The field variables can be indicated as a formula with the ‘=’ symbol as prefix.
Since the flow is accessed dynamically, the control of which records to be processed
is with caller of the flow. Typically, this generic flow can be applied or invoked for
multiple types of messages.
7.12 Mule ESB Integration
Mule ESB is a lightweight Java-based enterprise service bus (ESB) and integration
platform that allows developers to connect applications together quickly and easily,
enabling them to exchange data. Mule ESB enables easy integration of existing
systems, regardless of the different technologies that the applications use, including
JMS, Web Services, JDBC, HTTP, and more.
Volante Transformer
Volante provides the following to integrate with the Mule Studio and Mule runtime.
Volante Plugin for Mule Studio - Volante transformer component that can be
installed as a plugin in the Mule/Anypoint Studio. Volante appears in the Mule
flow palette under the ‘Transformers’ category.
Volante Adapter - Volante provides an adapter (mule-volante.jar) which lets
you invoke Volante flows from Mule. The invoked flow is normally expected to
have one input and one output (which represent the body of the message).
These Volante design and runtime components for Mule are described in detail in this
document.
Volante Plugin for Mule Studio
The Volante transformer component can be used when designing message flows in
Mule. In order to make the Volante transformer to appear in Mule palette, the
Volante Studio plugin for Mule has to be installed in to the Mule Studio.
After installing Volante transformer in Mule studio, Volante component will then be
available in the Mule Studio palette.
1. The Volante transformer can be dragged and dropped on a mule flow.
Message flow is a mandatory property for the Volante transformer.
Message Flow
Message flow is a mandatory field for the Volante’ Mule transformer. The Message
flow should point to the name of the Volante flow that is defined in the cartridge.
After Configuring Volante project and refresh the build path, Project jars and its
Dependencies will include java build path section
The Exported Mule deployable archive can be deployed and tested in Mule stand
alone.
7.13 Spring Integration
Spring Integration provides an extension of the spring programming model to
support the well-known Enterprise Integration Patterns. It enables lightweight
messaging within Spring-based applications and supports integration with external
systems via declarative adapters. Those adapters provide a higher-level of
abstraction over spring’s support for remoting, messaging, and scheduling. Spring
Integration's primary goal is to provide a simple model for building enterprise
integration solutions while maintaining the separation of concerns that is essential
for producing maintainable, testable code.
Volante Component
Volante provides an adapter spring-volante.jar to integrate with Spring Integration
that lets you invoke the Volante flows. The Volante: component allows you to
process a message using Volante flow. The invoked flow is normally expected to
have one input and one output. (This represents the body of the spring message).
URI format
volante:transformer messageFlow="Flowname"
A flow by the given name should have been defined in a cartridge and the jars from
the cartridge should be included in the class path. The class path should also include
all other dependent jars including spring-volante.jar which defines the Volante
component for spring.
<volante:transformer messageFlow="OrderFlow" input-channel="filesIn"
output-channel="filesOut"/>
The Volante namespace is available through the inclusion of the schema shown
below.
xmlns:volante="http://www.volantetech.com/schema/spring-integration"
http://www.volantetech.com/schema/spring-integration.xsd".
The plugin will install Volante Menu option under the Project Menu category. The
Volante Menu option will have the following Menu items
Configure Volante Project
Configure the Mule project with the location of the Volante project/Cartridge files.
Choosing the Menu option Configure Volante Project will bring out a dialog like shown
below which can be used to associate a Volante Project to the selected Mule Project.
The volante project’s path selected will be saved relative to the Spring project used,
when the spring project is moved, the volante project files can be moved relative to
its parent.
Refresh Build Path
Refreshes the build path of the current mule project with the volante runtime jars
and jars from the associated volante project. The volante project must have been
built before using this option.
Open Volante Project
Opens the configured Volante Project in a new instance of Volante Designer
application.
Display Maven Dependencies
This option will list all the classpath dependencies of the Volante Project in a maven
compatible dependency structure so that it can be copied and added to a POM.xml
file. The dependencies will be displayed in a dialog as shown below
Message Properties and Header Enrichers
Header enrichers can be used in Spring to add additional property information to the
message as shown below.
<integration:header-enricher input-channel="filesIn" output-
channel="enrichedOut">
<integration:header name="Test" value="123"/>
</integration:header-enricher>
7.14 WAR Options
Enabling the ‘WAR’ option allows you to generate a WAR file which includes all the
Jars of the project (including dependencies). The generated WAR can be deployed in
Java Web Server or an EJB server as a web Application.
On code generation, %ProjectName%.war file is created under java folder. This
includes cartridge generated jars and runtime jars.
In the designer, the WAR options are available in the Target Platform tab of Project
Code Generation Settings under the Build menu as shown below.
WAR Option Dialog box
You can, optionally include, additional jars or a predefined Web App folder in the
WAR using the options below.
To open WAR options dialog click on war Option Button.
Custom Web App
Custom web app option is used to include external defined web application into the
war file by providing the path of the custom folder. That is all files under the
specified folder are bundled into the WAR.
Additional Jars
You can include additional jars by providing full path of jar file name using ‘Additional
Jars’ option. Multiple jars can be specpfied using semicolon separator.
Note: This option is only supported for project.
7.15 Service Bus/Generic Application
In Designer, the Service Bus/Generic Application options is available in the Target
Platform tab of Cartridge/Project Code Generation Settings under the Build menu as
shown below.
Uber/Merged Jar
Using this option you can generate an Uber/Merged jar (that includes cartridge
Jar(s), reference Jar(s) and required Dependency Jar(s)) for deployment under a
Service Bus. If required, you can include the dependent jars as well.
You can provide Jar name and its directory to generate Uber/Merge Jar under desired
location. By default, the jar will be generated under java folder with the name
(Cartridge/ProjectName-uber.jar).
Copy Jars
This option allows you to copy Simple Runtime Deployment jars (Project/cartridge
jars and its dependencies jars) to the desired location. If required, you can include
the dependent jars as well. By default, jars will be copied to target folder.
Include Dependencies
This option apples to both Uber Jar generation and Copy Jar to directory option (if
enabled). Dependencies included referfenced cartridges jar, volante runtime jars,
and other expliclty specified dependency jar(s) that are need to execute the
application. Note that Jars included are for executing under Simple runtime. For EJBs
and other deployments use the corresponding options.
These options apply to both Cartridge and Project code generations.
7.16 Project Configure Folder As
Configure Folder as option provides way to configure the directories present in the
Project.The directories either to be included in all process of Project like Build, export
project etc.
The various configurations are as follows.
Source- The root directories only can be configured as Source. The folder
configured as source, involves in all process of Project like built, exported,
generated as HTML doc, jars present in the EAR file, OSGI bundle files.
Test-When cartridge jars are not necessarily to be included in the EAR file or
OSGI bundle, then those cartridges present in the folders can be configured
as TEST. The folder configured as TEST, works similar as Source folders.
Samples- The folder configured as Samples, works similar as Source folders.
Excluded- When cartridges are not necessarily to be built, then those
cartridges can be excluded from the project. Once excluded from project it
gets removed from the UI of project and not from the location of project
where it has been saved. The cartridges that are excluded from the project, is
not included in the build or rebuild project process.
7.17 Auto Detect Proxy
The Auto Detect Proxy Settings uses the system’s default Proxy settings. Auto-detect
Proxy settings option enables the Designer to use Internet via the system internet.
The system's internet can be a direct connection or a connecting via proxy server.
The Use Automatic Proxy Script allows the user to define the Proxy settings using
which the designer can connect to the internet. There can be more than one Proxy
server given in the Proxy script.
function FindProxyForURL(url, host) {
return "PROXY 200.200.200.35:808; PROXY SV03:808";
}
The Clear passwords button clears the previously stored passwords from the
designer.cfg file. Thus the passwords will not be retained when the designer is
restarted.
7.18 Revoke License
Enables the user to revoke the license, thus the user will not be allowed to use the
same license anymore. As the license is revoked, the number of licenses available
increases by one.
7.19 Properties Window
Properties Window was shared globally, in which you can edit the Properties for all
entities.
This Properties Window is available for the below Entities
Messages
Validation Rules
Mapping Rules
Message Flow and
Function Definition – Function Type (Mapping)
Mapping Rules
For Mapping Rules, Mapping column will be displayed in the Properties window. In
which the Direct Mapping and Formula Mapping can be edited.
Properties Window is similar as the Edit Formula Window. When Mapping is edited in
Properties Window, immediately it will synchronize in the Mapping Rules or Vice
Versa.
7.20 Functions Window
Functions Window displays all the functions along with User Defined Function in the
current context. You can drag and drop a function to formula
window(validation/mapping) to invoke.
Filter:
The Filter text box in the functions is used to filter functions based on specified string
or character.
For instance, Search ‘LeftStr’ function and drag and drop that function to formula
window. LeftStr’ function pane will appears, which allows you to fill the parameters.
A pane appears which allows you to fill in the parameters of the function as shown
above. You can fill in the parameters either by entering values or dragging and
dropping fields from field structure.
You can do this recursively, by including nested function calls. Once you are done
click ‘Finish’ to complete the definition.
You also click on the link shown at the bottom any time to view the function pane
and enter its parameters.
7.21 External Tools
The Volante Designer, uses several tools inside and outside Volante designer for
execution, report generation, comparison and several other tasks. The External tools
feature supports the usage of these tools from the designer instead of going to the
terminal. The tool required is configured under File-->Settings--> External Tools or it
can also be configured from Tools--> External Tools--> configure. Once a tool is
added, the external tool appears as a new menu command under Tools->External
Tools. Selection of the tool from the menu executes it. To edit or make changes to
an existing tool or add a new tool, select configure from the Tools--> External Tools
menu.
To configure the External tools the following settings need to be done
General
Name is the title of the tool to be executed. Description is about the tool
Settings
Executable
The tool is defined here. Every executable that can be run using a terminal must be
able to execute using External Tools. The path of the tool can be absolute or relative.
The tools which are already defined in the System's environment variables can be
called in directly.
Parameters
The input to the tool to be executed is given in Parameters. Inputs are separated by
space. Each input needs to be given within double quotes.
Initial Directory
The initial directory is the working folder, where the executables need to be
executed.
Macro
Macro simplifies the task of defining the path of current cartridge, project, designer
and those tools defined in the system's properties
Here is the list of Macros that can be used while defining the external tools.
Execution of External Tools
Once a tool is added, the external tool appears as a new menu command under
Tools->External Tools.
The output of the external program is displayed in the ‘Output Window’.
7.22 Grid Mode
Grid Mode in simulator supports displaying the text in tree structural view for easy
reference. Grid Mode can view only when the Input/output is in XML format(Internal
Message, Parsed Object and XML messages).
An XML message in Text mode when changed to Grid Mode is as shown
Text Mode Grid Mode
7.23 Drag & Drop:
Drag & Drop can be used to rearrange the position of the nodes in the Explorer
window, without the use of Move Nodes options. Once the required design element
node is selected, the user can drag from one position and drop it to the other
position. Nodes can even be arranged by selecting multiple design elements. This
can also be done across cartridges and projects.
7.24 Append to specified output message
In general the output of the Serialize activity is assigned to a variable of type Raw
output. The Append to specified output message option enables the user to add on
the Serialized Output to a user defined variable. This supports appending to existing
message while serializing.
7.25 Updates and Notification
The Automatic updates notification system will notify when a new update is available
and will offer to launch the web page for those updates. Launching the Designer tells
to check if there is any update on the Product, Message Pack & Other notifications. If
there is an update, Designer will pop up a notification inviting to visit the update site
which depends upon the frequency settings. Those updates can be deliberately
downloaded and installed.
Notification
Designer notifies you of new Product updates, Message Pack updates, other
notifications from Volante and license expiry information. New Notifications pops up
from the notification tray, typically when you start Designer. This popup stays on the
screen for a brief period and disappears automatically. You can continue to work on
Designer, with the notification visible or you can close it.
In many cases, the notification is a short message which can lead to a web link or a
task. To navigate to the link, hover the mouse over the notification and click on it
when the cursor changes to a hand cursor. For instance clicking on the above
notification for product updates, would take you to a HTML page which provides the
link to updates you are entitled to. Similarly notification message from Volante may
contain a link which would provide more information about it.
Designer checks for updates and pops up notification window according to the
frequency which is chosen under the Updates in designer settings.
Notification List
All such notifications get added to the list of notifications. You can view the list of
recent notifications, by clicking the Notification icon in right side of the status bar
or by using Windows->Notification Window.
You can clear the individual notifications using the clear button or use the Clear all
button to clear all the notifications.
Follow the steps given below to set the settings for updates
1. From the File Menu, select the Settings Menu tab.
2. Go to the Updates in Designer Settings. By default Designer checks for all the
updates on daily bases (“Daily”). Frequency and Check For options can be
customized as desired. To turn off the automatic updates, Check frequency has to
be set as “Never”.
7.26 Zoned Decimal
In this type of Encoding, each digit is represented as a byte. While the digit itself is
represented as 4 bits of the lower most nibble, the upper nibble is a fixed value
(excepting in the byte of the last digit) which depends on the charset. The upper
nibble in the byte for the last digit represents the sign of the number (positive /
negative / unsigned).
E.g.:
564.22 is stored (in EBCIDIC charset) as |F5|F6|F4|F2|F2| (each slot represents 1
byte). (-564.22) is stored as |F5|F6|F4|F2|D2|. (Note that the decimal point is not
stored. The field definition itself holds the place for decimal)
7.27 Retain Trailing Delimiter
This option is used to trim or retain the delimiters of the trailing optional fields
having null value and the delimiter of the last field (at run time) that precedes the
sections instance delimiter.
7.28 Enhancements in ISO8583
Code Page
Code Page option is to specify the code page of the message along with the encoding
(ASCII/EBCDIC). This option process messages with one of the EBCDIC code page
variations (like cp277, cp1047 etc.) or extended ASCII variants like (ISO 8859-1
etc). Only those code pages that are part of the JRE distribution is supported.
To set a code page, Click on format option icon , under Format option dialog
select required code page in code page dropdown Box. Click ok button
Also, while invoking the parser/serializer from the flow, you can also use the code-
page option to specify a different code page.
Custom Section
ISO 8583 plugin allow definition of a custom section with arbitrary fields and sections
under it (as a top level section). The fields under it are meant to flexible and hence
there would not be any validations at Design time.
User can write formula code to parse and serialize the section. Typically, these are
formula/native functions.
Follow the steps below to create a Custom section
1. Click Add Custom Data Element icon in UI tool bar
2. Custom Data Element is created as shown below,
3. Custom properties present under properties pain allows user to write Formula
cods to parse and serialize the section
4. Other properties like Length, Encoding and Padding can also available in
properties pane
Batching Messages
ISO8583 parser would support identification of end of message and passing back
number of the bytes consumed through transform context. To enable this, the calling
flow should set the property ‘detect-end’ to true in the options tab of parse activity.
After completion, the context would contain __size Used property which indicates the
number of bytes consumed by the parser. This information can be used by the batch
handler flow to move the ‘cursor’ and parse the next message.
Tag Length Value
TLV - Group containing fields with TAG/LENGTH/VALUE specified in that order.
TLV fields is part of a higher level composite group (section, in Volante) whose
length is known ahead of time (either fixed or length preceeded). TLV fields, as the
name suggests, are always length preceded and can occur in any order. Tags can be
numeric or alpha. Each tag occurs just once, some tags can be optional. The fields
under TLV section are scalar fields, nested sections under TLV section is not be
supported.
Follow the given below steps to create a Tag Length Value section
1. Click Add Tag Value Data Element icon in the UI tool bar
2. Tag Value section is created as shown below,
3. Type, Index, Encoding, Padding and Length specific to Tag Value Section can be
mentioned in the properties pane.
4. Tag Length and Field Max Length can be given in property pane
5. Multiple fields can be added by selecting created ‘TagValueSection’ and click Add
New Fields icon
7.29 Text View Encoding
This feature displays text using specified encoding, when the data is in binary mode.
This is useful if the text contains a mix of non-ascii encoded text and binary data
Follow the steps given below to view the text in the selected encoding:
1. Right click on the editor and select “Binary Mode” from the context menu.
2. Right click on the editor and select “Text View Encoding” from the context menu.
3. “Change Encoding” dialog box will appear as shown.
4. Select the required encoding from the list available
5. The data will be changed according to the selected encoding.
7.30 Message Flow
Laying Out Message Flow
You can organize the activities added in the message flow using the button present
in the vertical tool bar of the message flow design area. If there are any overlapping
activities in the flow or any activity hidden by another activity they will be organized
correctly when the layout button is clicked. The layout button when used always
ensures that the links do not cross each other nor cut across any activity.
Adding Activities to Message Flow
The activities can also be added from the Explorer Tree pane, by dragging and
dropping the entity itself. Activity corresponding to the node dropped is created and
name in the activity is automatically filled.
For instance, when a flow is dropped in the Message Flow Editor, an invoke activity is
created. Similarly for every entity the corresponding activity is created. For few
entities like External/Internal Messages more than one activity is applicable. In such
case, all applicable activities are listed under Options popup box.
The Entities and the corresponding activities are listed below
Entity (Node in tree) Activity
External/Internal Message,
External/Internal Message Format
Parse, Serialize, Create, Phased Parse, Phased
Serialize, Batch Parse, Batch Serialize
Validation Node Validate
Mapping Mapping
Flow Invoke
Report Report
Persistence Designer, Database Table Design,
Database Table Mapping
Persist
Queries Query
Processing Rules Process
Function Definition Custom
Web Service Client Web Service
Automatic Variable creation
When dropping these activities press Ctrl key to create input and output variables for
the activity. Where possible, the Designer would either create or reuse existing
variable as input/output to the activity.
This option is not applicable for all the activities; activities such as Invoke and Many
to Many mapping activities which can have complex/multiple input and outputs do
not support this option. Note that, during drag and drop, the Ctrl key must be
pressed only when dropping the activity in the Message flow UI pane (and not while
dragging).
Automatic Links
When a new activity is created (by drag and drop from Palette or tree), the newly
created activity is linked to an existing activity, if one of its ports is close by (see
picture below). Normal links are created when the activities are placed next to the
output port. When the new activity is placed near the exception port, Exception link
is created. These links are created to the nearest port and only when the port is
close enough active for a connection.
Inserting Activity
When a new activity is inserted in between two activities by dropping it on the link,
the link is broken and reconnected as an incoming and outgoing link to the new
activity (see picture below). During insertion the activities are pushed down, thus
giving enough space for the newly added activity.
Deleting an Activity from the Message Flow Diagram
When an activity is deleted from the flow, the incoming and outgoing ports are
automatically connected by a link. That is, the activity preceding the activity that is
removed is connected to the next activity.
Defining Label for Activities
The text you type under the Label textbox is displayed as the label of the activity.
For activities that invoke other service elements (like Parse, Map etc), you can use
following macros in the label name.
%a
Expands to the name of activity (Parse, Map etc).
%s Expands to the name of the service element invoked (message name, mapping
etc.)
%n Expands to the name of the service element invoked. The name is split into
multiple words based on camel casing and special characters. Example,
“BankToCustomer” is split as “Bank To Customer”
When the name of the node that is invoked has multiple words (in camel case), the
%n macro splits the name into words. For instance, when the name is given as
‘OrderCSV’, when %n is used in the Label, then the given name appears as ‘Order
CSV’.
When the activity calls a node dynamically (node name is formula), then the activity
label is suffixed by the term 'Dynamic'. For instance, a Parse activity that calls a
Message dynamically with a complex Dynamic Name or a formula function, then the
name appears as ‘Parse Dynamic’.
Synthesize Label
Synthesize Label is to label an activity corresponding to the activity itself and the
invoked node. This is done using the macros %a %n. Hence every activity that calls
a node is labeled after a pattern: Activity name (%a) followed by the Node name
(%n). The Synthesize Label is applicable only for activity that calls an entity.
Synthesize Label is not applicable for activities that do not call any entity. Hence
they are labeled with their respective Activity's names. The Synthesize Label is
applicable even on Message flows that were previously created. The Synthesize Label
intends to label the activity from a user point of view, though it may not match the
user expectations in few cases.
7.31 Message Resources - Indexes
Message based resources are cached and loaded just once. Any modifications to the
fields of the returned object will be visible at other access points. All resources
should be treated as constants and the contents should not be modified.
Navigating the message resource using certain formula functions will be faster when
the message resources are indexed. Indexing the elements of a section based on a
particular field improves performance and makes the search quicker when you want
to find matching elements of that section based on the indexed field.
Let us consider a message where the field “CURRENCY CODE” is indexed as shown
below.
Indexing the field makes the function SecFindFieldwithValue() &
SecFindFirstFieldWithValue() quicker when you want to find the matching elements
based on the specified value of the indexed “CURRENCY CODE” field.
7.32 Service Directory
Service Directory is a SWIFT directory that lists bank details specific to the payment
services, such as the participant's name, ID, Institution Name and role within the
service. The Service Directory file is available as the part of the Bank Directory Plus
product. It cannot be ordered separately and it is embedded in the Bank Directory
Plus product.
7.33 Project Publisher
The ‘Project Publisher’ tool is used to generate docs in HTML formats for the Project
and its child design elements, based on the selected template into the specified
directory.
The docs are generated as multiple files with an index.html and an explorer as
shown below.
The explorer displays the contents of a project in the form of a tree structure just
like the Explorer window in Designer. The icon represents an expandable node
with child items and you can click on it to expand the node. Likewise, the icon
represents an already expanded node and you can click on it to collapse the node.
Clicking on the hyperlink of a node loads the corresponding details page on the right
window.
Follow the steps given below to generate HTML/PDF docs for the current project:
1. Change the ‘Project Publisher’ settings, if required.
2. From the Tool’s menu, select ‘Project Publisher’ menu item.
3. The ‘Project Publisher’ dialog will be displayed.
4. Select the template from the Template combo based on which HTML/PDF docs
has to be generated.
5. Select the Output format in which docs has to be generated from Output format
combo box, designer supports generating docs in HTML/PDF Output formats.
6. In the ‘Destination Directory’ text box, enter the directory in which the docs
should be generated.
7. Alternatively you can click on the ellipsis button next to the text box to bring up
the ‘File Open’ dialog and select the directory.
8. Check the ‘Open generated documentation in browser’ check box, to immediately
open HTML/PDF docs after generation.
9. Click OK to start generation of HTML/PDF docs.
7.34 Project Reference
Cartridge references allow you to refer from one cartridge to another cartridge so
that the entities defined in the referenced cartridge are accessible from the
referencing cartridge. In a project both referencing and reference cartridge are
accessible. A cartridge can be referenced by many cartridges. Despite that, a
cartridge will be loaded only once at any point of time across the project.
Since only one instance of a cartridge is loaded at any point. Any changes made to a
cartridge within a project are immediately reflected in all cartridges that refer this
cartridge. There is no need to use refresh references or reopening the referring
cartridge. This is referred to as Live Referencing in projects.
When opening a cartridge in the project, the latest copy of the cartridge is always
opened from the file system.
7.35 Analyze Project (beta)
The Analyze Project option in Tools menu enables to view the link between all
executable entities like Messages (Internal, External), Message Flows, Mappings,
Reports, Function definitions and Messages in Referenced Cartridges.
In the Analyze Project window, all the cartridges within the project are listed in the
explorer pane. Click a node and all the entities that calls (caller) and are called by
(callee) are shown in the UI pane.
7.36 New Swift Resources
Volante extends its support for Swift resources in BankDirectoryPlus, Holiday,
Holiday Service, Time Zone and SEPARoutingV3 apart from already supported
resources like currency codes, country codes, IBAN Structure, BIC Directory, SEPA
Routing and other resources like (BEI Subtypes, ERI cutoff dates, swift-field-
dictionary). For more details kindly refer Swift Resources document available at
%Designer_Installation%\docs\Java\SWIFT.
BankDirectoryPlus is a SWIFT directory that lists institution identifiers
recognized by the financial industry, for example, Bank Identifier Codes, CHIPS
UIDs, national clearing codes, and LEI codes. It also provides the names and
addresses of the corresponding entities.
Holiday resource lists out holidays for SWIFT operational countries.
Holiday Service lists out service holidays for SWIFT operational countries.
Time Zone contains information about the local time difference in relation to
GMT, and on the start and end dates for standard time and daylight saving time
(if applicable).
Volante supports a new version of SEPARouting (version 3) along with old
version. The support of new version is because of structural changes in
SEPARouting resource file from Swift. This resource lists out financial institutions
and the related BICs that are eligible for receiving SEPA payment instructions,
the institution's scheme(s) participation and the European Payments Council
(EPC) adherence status, and the list of payment channels through which the
institution is reachable.
7.37 XML - Allowed named groups to be flattened
This option provides a back-compatibility option which would restore the 4.x
behavior of allowing the named groups (groups that are provided a name in the XSD,
as opposed to anonymous groups that are not named in the XSD) to be flattened
(provided other pre-requisites were satisfied by the group).
Flattening named groups leads to other issues, since named groups can be
referenced/reused from multiple schema locations. When this option is disabled, the
message structure might change between Volante 4.x and Volante 5.0.x and hence
mapping will be broken. Though 4.x way of flattening has other problems and is not
recommended, the backward compatibility option would help migrate maps.
Note: This option is enabled by default when a message created in Volante Designer
4.x is imported in Volante Designer 5.0.3
Follow the below steps to enable 4.x compatibility option.
1. Import an XML message that was created in Volante Designer 5.x or 5.0.x.
2. Click on the Reconfigure Schema icon present in the external format UI tool bar.
3. Click Next until the Schema Import Options wizard appears as shown below
4. Enable the “Allow named groups to be flattened (check for 4.x compatibility)”
option and click Next until Finish.
5. Click on the “Finish” button and Update the field structure.
6. The message structure is now same as 4.x. That is the named groups are
flattened.
7.38 Variables in Generate Query SQL
The Query SQL that is populated when using Generate Query is editable. The
following parameters are editable in that SQL statement:
The boundary condition that is defined before the field variables
The tablename
The condition (which is also called the varclass).
The boundary limit in the above Query is defined as ‘LIMITS $start $end’. The
start and end variables are defined under parameters and the boundary values
are always prefixed by ‘LIMITS’.
The table name is PainMsgDB which can be edited to any name. This name can
be used anywhere throughout the table in the database.
The condition ‘PainMsgDB.InitiatingParty = $Party’ that is generated using
Generate Query button can also be edited. The varclass conditions can be
modified according to the Query's requirement.
7.39 Include Dependencies using targetDir
For ANT
The targetDir is to redirect the dependent jars for the executing cartridge to a
desired location. The targetDir is a string for which any desired location where the
jars are expected to get copied can be given. The jars that get copied depends upon
the includeDependencies attribute which is of Boolean type. For the jar files to be
copied to the targetDir, includeDependencies is to be “True”. For instance, the
dependent jars would be the cartridges’ jars, the plug-in jars and transformrt.jar.
When includeDependencies is “False” only the cartridges’ jars are redirected to the
targetDir, the plug-in jars and other dependents jars are not copied. This feature is
applicable also for projects. The attributes are defined as following in the build.xml
<CGTask platform="java" includeDependencies="True" targetDir="D:
\TargetLoc" cartridge="${cart.dir}./MessagesAndFlows.car"
home="${designer.home}"></CGTask>
For Maven
The targetDir is to redirect the dependent jars for the executing cartridge to a
desired location. The targetDir is a string for which any desired location where the
jars are expected to get copied can be given. The jars that get copied depends upon
the includeDependencies attribute which is of Boolean type. For the jar files to be
copied to the targetDir, includeDependencies is to be “True”. For instance, the
dependent jars would be the cartridges’ jars, the plug-in jars and transformrt.jar.
When includeDependencies is “False” only the cartridges’ jars are redirected to the
targetDir, the plug-in jars and other dependents jars are not copied. This feature is
applicable also for projects. The attributes are defined as following in the build.xml
<configuration>
<home>${designer.home}</home>
<targetDir>${basedir}\DepLoc</targetDir>
<includeDependencies>true</includeDependencies>
<cartridges>
<directory>${basedir}</directory>
</cartridges>
</configuration>
7.40 New toolbar actions
New icons to build and configure project is now available in the toolbar.
When only a project is opened,only the icons corresponding to project will be
enabled.
When only a cartridge is opened,only the icons corresponding to cartridge will be
enabled.
When both the project and cartridge within the project is opened, all the icons will be
enabled.
7.41 Switch Window
WindowSwitch Window option enables to switch between the opened cartridges,
projects, cartridges within the projects (opened in the current window or a new
window), simulator, pane(message pane, error pane, etc.,) in the same instance of
Volante designer.
The Switcher pop-up opens, that has the list of all the elements. The desired element
can be chosen from the switcher pop-up, using the arrow keys (up, down, right, left)
or also using the mouse. The cartridges within a project that are open and the
recently closed cartridges are also listed. The open cartridges are in active state
and the closed ones are greyed out.
7.42 Task Window
The WindowTask Window option enables to view the tasks executed in the Volante
designer’s background.
The status of the tasks are seen using a progress bar. The Task Window helps to
cancel the execution abruptly whenever required. Tasks like code generation, Find in
path can be viewed in the Task Window.
The Task Window can also be obtained using the Background Tasks button in the
status bar of Volante designer.
7.43 Resolve Cartridge References
‘Resolve Cartridge References’ identifies, updates the reference cartridge location in
main cartridge and then saves the changes, when there is any change in the
reference cartridge location.
The message will be displayed as shown below in the message window after using
the Resolve Cartridge Reference option .The ‘Resolve Cartridge References’ help to
reduce the time taken to build the prebuilt project.
7.44 OSGi options
OSGi options help to generate OSGi bundle or OSGi subsystem for the project.
The OSGi options provide a way for combining a number of bundles in a single
deployable file. This will be useful in applications that have a large number of
bundles. By combining the bundles, a single deployable file is created thereby
simplifying the process of deployment.
In the designer, the OSGi options are available in the Target Platform tab of Project
Code Generation Settings under the Build menu.
OSGi options are classified into three categories as shown below. Select the required
option and to include dependencies (plugin jar and core jars that include generalutils,
transformrt, volante-client, volante-osgirt and resourcemanager) check the Include
Dependencies check box.
None
This is the default option. When this option is used, on code generation no jar for the
whole project will be generated.
OSGi bundle
When this option is used, on code generation, a jar file for the entire project will be
generated. This single bundle can now be deployed in the OSGi framework.
OSGi Subsystem
When this option is used, on code generation, an esa file for the entire project will be
generated. This esa file can now be deployed in any Subsystem Implementation.
7.45 Service Bus option
Service Bus Options allows include or exclude dependencies in ALSB jar as required
Select “Service Bus” check box, if you require a merged ALSB jar that includes
(cartridge Jar(s), referenced cartridge Jar(s) and required standard Jar(s)) for
deployment under a Service Bus. If Service Bus is selected then it will generate
%Cartridge Name%-alsb.jar under alsb folder within java folder. Options button
allows to select Application jar and Dependencies jar. This can be done in both
cartridge and project level.
The Service Bus Options has,
1. Application Jar
2. Include Dependencies
By default both the options will be checked
Application jar
If a cartridge with ‘Application jar’ checked in ‘Service Bus Option’ is code generated
then it will have merged ‘Application jar’ and ‘Volante runtime jars’.
Include Dependencies jar
If cartridge with both ‘Application jar’ and ‘Include Dependencies’ checked in Service
Bus Option is code generated, then it will have merged (Application jar,
volante/runtime jars and cartridge jar, referenced cartridge Jar(s) and required
Dependencies Jars).
If a project has Service Bus option checked, then the generated merged application
jar will contain the jars of only those cartridges that have the Service bus option
checked in their code generation settings.
Note: This feature has been updated in 5.1.0 release. Refer to the updated Service
Bus/Generic Application.
7.46 Orphaned Maps
When fields in destination message are deleted then the mappings that are assigned
to the deleted field will be moved to orphaned maps. This is also applicable when
fields are renamed via XSD reimport or via message upgradation etc. If fields are
manually renamed, the mapping is not lost and hence this is not applicable.
Without clearing the entries present in orphaned maps dialog box, designer will not
code generate the cartridge. Instead, it will throw appropriate errors and these will
be shown in the error pane.
This will ensure that mappings are not lost due to change in destination message
structure.
Following are the options to clear the maps present in orphaned maps dialog box
‘Delete’ icon will remove the selected maps in orphaned Maps dialog box.
’Delete all’ icon will remove all the maps in orphaned maps dialog box and
allow to code generate the cartridge.
’Reapply mappings’ will allow the user to restore mapping if the
corresponding fields are present in destination message.
Orphaned Maps dialog allows renaming the source and destination field, if user
needs to reapply the mapping to another field in source or destination fields.
7.47 Message Resource
Message Resource option helps to create an object (with fields populated) of type
predefined internal message. This option is available in the Resource design element.
Designer supports two types of message resource.
Simple type
List type
Adding a simple message resource
When the List check box is unchecked, a simple internal message object can be
created. Once you have added a new message resource, you can edit the message
resource under the Value column. Double click on the Value column and clicking the
browse button opens the Enter Message window. The UI contains the exact
fields/sections as defined in the Internal Message to whom constants may be
provided as values.
For Example consider the below Message Resource in which the values are entered.
Here, the element “SalesDepartment” is a repeating section. On selecting the Add
New Element button, a new instance of the section “SalesDepartment” will be
created. Using the Up/Down arrow buttons one can switch between various instances
of the section. To delete the current instance of the section, Delete current element
button is used.
Once the values are entered and Ok is selected, an internal message object gets
created in the value column.
Adding a List type message resource
Collection of message resource can be entered when the list check box is enabled
while creating the message resource. When the list is enabled, Add New Element,
Delete current Element, Move Selection Up/Down arrow buttons appears near the
message name as shown below.
In the above example two instances of a message resource is created and values are
entered. The internal message object for List is as shown below.
Note that it is generally expected to use the UI to modify the value. But if the text is
changed manually in the object, whatever is correct is used and the rest is ignored.
If it is an ill formed XML, the behavior is unspecified. Hence, it is recommended that
these values are modified using the appropriate UI.
Using a message resource
Once the message resource is defined in the Resources UI, it is available globally.
This means it can be used from any design element of the cartridge just by using the
name of the resource item. The resource name is substituted with its value wherever
it is used.
To use a message resource item, for e.g. in formula, you can select it from the
‘Resources’ tab of the Edit Formula dialog and then click on the Insert button. If you
move the cursor over the resource item when CTRL is pressed, a tool tip will pop up
as shown below with its type and description.
In the above example, rsrcObj is an object of type Internal Message ‘intmsg’. This
can be used in any formula code as if the object is available locally. To access any
field inside it, the usual formula language rules apply. Hence, to access any child
field, use the ‘.’ operator. For example to access the field, ‘Organization’, specify
rsrcObj.Organization. To access a particular element of a section inside the resource
object, use the array index operator ‘[]’. For example, to access the field ‘Contact
Person’ in the second instance of ‘SalesDepartment’, specify
‘rsrcObj.SalesDepartment[1].ContactPerson’.
The resource rsrcObjList is a collection of objects. Each object is of type Internal
Message ‘intmsg’. To access any field inside, first the corresponding object has to be
accessed. Use the array index operator as described above for that purpose. For
example, rsrcObjList[1] accesses the second object in rsrcObjList. Then to access
any field inside the object, the rules described above have to be followed. For
example, rsrcList[1].HeadQuarters.
7.48 Message Integration Guide (MIG)
Message Integration Guide is a tool to generate message structure which includes
message elements, detail description and its validation rules. It is generated in HTML
Format. It is used to verify the message are according to the specification. MIG is
generated using Generate MIG Option present under Tools Menu (Tools->Generate
MIG…) and also it can be generated in Message level and Validation Level.
Message Details contains the overview of the message.
Message Implementation Guide helps the user to create a valid message to send &
receive. It simplifies the basic validations of each element. The validations entered
are identified as shown below,
Name Appears either in Validation
rule name column /Rules
column
Symbol & Color
Formula Rules column No symbol & Color
Comments Rules Column No symbol & Color
Action message Rules Column No symbol & Color
Mandatory
Validation rule name
Mandatory(applied for
optional field /section)
Validation rule name
Not Used
Validation rule name
Not Allowed
Validation rule name
Bilaterally Determined
Validation rule name
Guideline Rules column No symbol & Color
Enumeration Rules column No symbol & Color
Choice Field/Section Validation rule name Xor & No color
a. Select the External Message for which MIG need to be generated, Select Tools ->
Generate MIG.. from the menu to open generate MIG dialog box.
b. In Generate MIG dialog box select “Open generated documentation” check box to
open the generated MIG.
7.49 Enhancement in Search
Find Symbol
To search for an entity name (Cartridge name, MessageFlow name, Mapping name,
Function name and Message name) in the Project using select Search > Symbol
menu item
For this, you can alternately use the shortcut key Ctrl+Shift+Y to search the symbol.
Find Service Element
To search for an entity name (MessageFlow name, Mapping name and Message
name) in the Project using search > Service Element menu item or using the
shortcut key Ctrl+Shift+S.
Find Cartridge
To search for Cartridge name Project using Select Search > Cartridge menu item or
using the shortcut key Ctrl+Shift+C.
Find Function
To search for an Function name Project using Select Search > Function menu item or
using the shortcut key Ctrl+Shift+F
7.50 XML Parser option - xml.value.linefeed
Using xml.value.linefeed option you can specify the linefeed to be used for multi-line
values while parsing from XML. This applies to parsing XML plug-in messages and
normalized objects. Note that only “\r\n” or “\n” can be used as linefeed where “\n”
is the default linefeed. Using any other string will not be appropriate. Designer will
not validate the correctness/applicability of linefeed specified. This option can be set
in the Options tab of Parse Activity.
For example, consider a SWIFT message in serialized in xml format with multi-line
values separated by “\r\n”. When this message is parsed, line feeds within an
element value (\r\n) is normalized to \n as per the XML specification. Since SWIFT
requires that \r\n be used for separating multi-line values (and not \n), when this
message is serialized to SWIFT it would result in an error. To solve this, set the
xml.value.linefeed option as “\r\n”. The parsed object will be serialized successfully
as it contains “\r\n” as linefeed for multi-line values.
7.51 XML Serialize - 'namespace.prefix' option
The serialize option 'namespace.prefix' lets you control the prefix to be used for a
namespace during serialization. This option would override the prefixes specified (if
any) at Design time.
Syntax
<namespace1>=<prefix1>[;root],<namespace2>=<prefix2>[;root]
Where
namespace - The namespace for which prefix needs to be set. E.g.
‘http://www.any.com’
prefix - Preferred prefix for the namespace. Use ‘targetnamespace’ to refer to no
prefix option.
[;root] - set this option to make the serializer specify the prefix binding at the root of
xml. Otherwise it would be specified where the namespace is first used.
Example:
http://www.any.com=targetnamespace;root
Note:
The prefix specified in the options pane of the Serializer, overrides the prefixes
specified at Designer time. If no prefix is specified, the Serializer synthesizes prefixes
such as ns1, ns2 etc.
This option can be set in the Options tab of Serialize activity.
When to use:
Consider multiple batch messages embedded inside a single message. If we wish to
specify namespace prefix as “targetnamespace” for more than one message type, it
is not possible at Design time because only one of the message type can have the
“targetnamespace” as prefix. Since each prefix can be mapped to only one
namespace. In such case, the namespace can be specified during serialization using
the namespace.prefix option based on the message type.
7.52 SWIFT – User header tags
As per SWIFT specifications new tags are introduced for user header (block 3 of a
SWIFT message).
The fields that are marked in red are newly added optional fields.
User Header -> Balance checkpoint date and time
User Header -> Message Input Reference
User Header -> Related Reference
User Header -> Receiver Information
Field Name Tags Example
Balance checkpoint
date and time
423 {423:120601022745}
Message Input
Reference
106 {106:010605VNDZBET2AXXX0017000375}
Related Reference 424 {424:123456}
Receiver Information 433 {433:/NOK/ScreeningInformation}
Using the updated User Header
When you import a new SWIFT message from the message library to your
cartridge, the message would contain these additional tags in user header.
For existing messages (that have already been imported), you need to update
the header as shown below.
Updating Existing Message
The External Format - SWIFT (Header) UI shows the pre-defined fields as per the Header/Trailer
option chosen during creation of SWIFT message, the user has the option to choose SWIFT Input
/ SWIFT Output / SWIFT Input/Output / FICC Header (Custom Header) / None, when creating the
SWIFT external format.
When you choose SWIFT Input / SWIFT Output / SWIFT Input/Output option, the Header and
Trailer panel has the following fields for a SWIFT external message format and also Basic Header
User Header are the common section for all the above formats.
SWIFT Input – Basic Header, Application Header Input, User Header
SWIFT Input/Output - Basic Header, Application Header Input, Application Header Output,
User Header
SWIFT Output - Basic Header, Application Header Output, User Header.
7.53 Enhancements to Project
The following enhancements were made to project.
a. Error Pane
When a design element in the cartridges of project is validated, the validation
errors and warnings are listed in the Error pane and facilitates to Navigate to the
error elements in the cartridges of project from the Error pane.
b. Find
Searches for an item of interest in a design element of project based on the text
contained in it. Designer provides the search feature through its Find, Find Next
and Find in Path commands.
Find- Searches the required elements in the project node based on the search
settings that were specified in the Find dialog.
Find In Path - List the matching items of all nodes in the project, based on the
search settings that were specified in the Find in Path dialog.
c. Project Debug
Entire Project which contains one or more cartridges, Reference Cartridges, flows
and Mappings can be debugged.
Project Debug includes breakpoints, watch expressions, and the ability to step
through code/model one statement or one procedure at a time and display the
values of variables and properties.
‘Debug Info’ check box present in the ‘Build ---> Project Code Generation Settings
(Java/EJB)’ dialog, should be enabled before code generating the Project. If this
option is enabled, all the cartridges in the project will be built with debug info
included.
Note: You need to do a rebuild after applying this option for the first time.
d. Project Level Break points
In break point tab User can Add/Remove Breakpoints for one or more cartridges, an
activity in a message flow, line of code in functions, Messages, a validation rule or a
mapping in the Project at which Designer automatically suspends execution.
While executing a Project under Debugger, Break Point will stop the execution and
User can investigate the line of code in detail.
e. Project ChangeLog
Maintains the log, whenever changes made to any nodes in the project. To
add/edit/view the ‘Change Log’ window, click on the Change Log link displayed in the
‘Getting Started’ pane of Designer when a project is open.
7.54 Simplified procedure to enter Validation
Adding commonly used validations in Volante Designer such as making a
field/section mandatory or checking for null value or adding enumerations for a field
have been simplified.
a. Select the External Message, Right click on a section/Field, select Find ->
Validation from the context menu. Validation Rules UI will appear in grid view.
b. Right click on the particular field/section in the Validation Rules UI window and
select Validations option to view the list of validation types.
c. The below table details the usage of all Validation types.
d. Also, filter icon can be used to filter the fields for which validations are done.
Validation Type Applicable Description
Mandatory All fields and sections The particular field/section
should appear.
NotAllowed All fields and sections The presence of particular
field/section is not allowed.
NotUsed All fields and sections The field/section may or
may not appear, if it
appears it is not
considered.
Bilaterally Determined All fields and sections The field/section may/may
not appear, if it appears
client will decide how to
use it.
Guideline All fields and sections It is more of a
recommendation indicating
how to use the
field/section.
Enumeration All data types Set of values applicable for
the field.
8 Volante 5.1.2 - Supported Platforms
Servers Versions Supported Java Version
JBOSS 6 1.6
6.4 1.7
7 1.7
7.1.1 1.7
Orion 2 1.6
2.0.7 1.6
Apache-Tomcat 6.0.35 1.6
7.0.35 1.7
8.0.14 1.7
IBM-Websphere 7 1.6
8 1.6
8.5 1.6
ORACLE-Weblogic 11g(10.3.6) 1.6
12c(12.1.1) 1.6
OSB(Oracle Service Bus) 11g(11.1.1.3) 1.6
12c(12.1.3) 1.6
IBM-WMB(WebSphereMessageBroker)
7 1.6
Integration Bus 9 1.6
IBM-WebSphereMQ 7.0.1 1.6
7.5.0 1.7
8 1.7
Camel 2.10.1 1.7
2.10.6 1.7
2.11.1 1.7
2.13.2 1.7
2.14.0 1.7
2.15.0 1.7
2.16.0 1.7
2.16.2 1.7
Mule
mule-standalone 3.5.0 1.7
3.7.0 1.7
AnypointStudio 4.0.0 1.7
5.3.0 1.7
5.4.0 1.7
Spring
SpringSTS(SpringTool Suite) 3.6.0 1.7
Spring 4.0.4 1.7
OSGi - Equinox 3.7.2 1.7
3.8 1.7
3.8.2 1.7
3.10.1(Mars Nighty) 1.7
3.10.2 1.7
3.11.0 1.7
OSGi - Karaf 2.3.0 1.7
2.3.9 1.7
2.4.0 1.7
3.0.2 1.7
3.0.5 1.7
OSGi - Felix 4.0.2 1.7
5.4.0 1.7
OSGi- Knopflerfish 3.2.0 1.7
3.6.0 1.7
4.0.1 1.7
MongoDB driver 3.2.0 1.7
MongoDB Database 3.0.0 1.7
Build Tools Versions Supported Java Version
MAVEN 3.0.4 1.7
3.2.1 1.7
3.2.3 1.7
ANT 1.7.1 1.6
1.9.4 1.7
1.9.6 1.8
Operating Systems Version Tested (DesignTime & Runtime) Java Versions
MAC - OS/X 10.8 (Mountain X Lion) 1.6
10.10 (Yosemite) 1.8
Redhat LINUX 6.0 (Santiago) 1.7
1.8
Fedora 3.6.2 1.7
20 1.7
Solaris 10 1.7
11 1.7
Windows 8.1, 8.0, 7.0, Server 2012 Runtime : 1.5,1.6, 1.7, 1.8
Designer: 1.6, 1.7, 1.8