Common Configurations
This section illustrates the configurations that are common across most of the adapters. However, if there are any additional component-specific details that are not described here, such details can be found in the respective component help file.
Custom configuration can be performed in the Configuration Property Sheet (CPS) as well as the Properties panel; CPS having Component-specific configuration and Properties having Component Instance configuration.
For common configuration details of the Properties panel, refer to the Common Configurations section in the Fiorano documentation.
Configuration Property Sheet (CPS)
To view/customize the configuration attached to a component, use any one of the two options below in the Orchestrator:
- Double-click the component.
- Right-click the component and click Configure.
- CPS appears as a dialog box or wizard.
- Detailed information on properties involved in each component CPS is available in the Pre-built Microservices section.
Managed Connection Factory
Connection Properties
Use Connection details from input
The parameters to create the connection can be specified in the input message when this property is selected. If this property is selected the validation errors in the managed connection factory panel of the CPS are treated as warnings.
- You may bypass this step without giving valid configuration and complete the configuration of the component. If valid properties are not provided even in the input message, an exception will be thrown at runtime.
- If this option is chosen, an additional element "Connection Factory Settings" is added to the schema of the input port of component. Properties that are used to create the connection for a specific component are present under this element.
- For the components EJBAdapter and WebServiceConsumer, you cannot proceed with the configuration of the component by giving invalid configuration, even if this option is chosen.
Connection Pool Params
Defines the connection pool settings for the component. Creating a connection to external systems like Database or FTP Server or HTTP Server is typically a resource extensive and time-consuming process. Configuring a connection pool reduces the overhead of creating a connection on each request.
Click the ellipsis button to launch an editor to configure connection pool parameters as shown in the figure below.
Figure 27: Connection pool configurations
Enable Connection Pool
If this property is selected, the connections created are cached in a pool for subsequent use. When the connection pool is disabled it implies that the connection should not be cached and a new connection will be created for each request.
Enabling connection pool property will reduce the time spent in creating a new connection for every input request.
Properties Max Pool Size, Blocking Timeout, and Idle Timeout are enabled only when this property is selected.
Max Pool Size
The maximum number of connections that can be cached in the pool.
Blocking Timeout (in ms)
The time in milliseconds after which the call to fetch a connection from the pool will timeout if there is no unused connection available. A connection will not be created after the timeout.
Idle Timeout (in mins)
Specifies the maximum time (in minutes) that an idle (unallocated) connection can remain in the pool before being removed to free resources.
Proxy Settings
Configure the properties to define a Proxy Server. Click the Proxy Settings ellipses button to launch an editor to configure proxy configurations as shown below.
Figure 28: Proxy configurations
Use Proxy Server
Select this option if the connection has to be established using a proxy server. Properties Proxy Address, Port Number, Username, Password and SOCKS Proxy.
Proxy Address
The IP address or the host name of the machine where the proxy server is running.
Port Number
Port number on which the proxy server is running.
Username
The user name to log into the proxy server.
Password
Password for the user name provided.
SOCKS Proxy
Enable this property to use SOCKS protocol to connect to the proxy server.
When the property Use Connection details from input is chosen, an element ProxySettings will be added to the schema of the input port of the component as shown in the figure below to provide the proxy details in the input message.
Figure 29: Schema changes for proxy settings when Use Connection details from input is set
SSL Security
Click the SSL Security ellipsis button to launch the editor to set SSL configurations.
Figure 30: SSL configurations
Enable SSL
Select this option to enable SSL Settings. Rest of the properties in this editor are enabled and configurable only when this property is checked.
SSL Settings
Property | Description |
---|---|
Trust Store Location | Location of the trust store file. TrustStore is a file where digital certificates of trusted sites are stored and retrieved for authentication during an SSL connection. TrustStore is used to authenticate a server in SSL authentication. |
Trust Store Password | Password of the specified trust store. |
Key Store Location | Location of the key store file. The KeyStore is used by the component for client authentication. |
Key Store Password | Password to access the private key from the keystore file. Accept Server Certificate and Ignore Hostname Mismatch properties are useful only in consumer type components like HTTPAdapters, WebServiceConsumer etc. |
Key Store Type | Type of the Key Store whose location is specified by Key Store Location. For Java keystore file format, this property has the value jks (or JKS). You do not normally specify this property, because its default value is already jks . |
Trust Store Type | Type of Trust Store whose location is specified by property Trust Store Location. For Java keystore file format, this property has the value jks (or JKS). You do not normally specify this property, because its default value is already jks . This value is optional. |
Trust Manager Factory Type | Algorithm for the Trust Manager Factory. |
Key Manager Factory Type | Algorithm for the Key Manager Factory. |
Security Provider Class | Determines Security provider class. |
Security Protocol | Determines Security protocol. |
Key Store Client Key | Determines Key Store Client Key. |
- For more information on SSL Configurations, refer sections: SSL Configuration – Client perspective and Using Keystore and Truststore in an SSL Application.
- When the property Use Connection details from input is chosen, an element SSL Settings will be added to the schema of the input port of the component to provide the SSL details in the input message.
Figure 31: Schema changes for SSL settings when Use Connection details from input is set
Alternatively, SSL Security can be managed by configuring the system property (JVM) instead of overwriting SSL socket creation in the CPS. For example, to use TLS 1.1 protocol, change the default value (TLSv1.0) of the '-Dsecurity.protocol' system property to "TLSv1.1". Hence, SSL can be managed without configuring it in the CPS.
Interaction Configurations
The properties explained below fall under Expert Property; enable Show Expert Properties check box on the upper-left part of the CPS to work on these properties.
Use these properties with caution as these configurations are meant for advanced users.
Pre/Post Processing XSL Configuration
Figure 32: Pre/Post Processing XSL Configuration properties
Pre Processing XSL Configuration: Pre Processing XSL configuration can be used to transform request message before processing it.
Post Processing XSL Configuration: Post Processing XSL configuration can be used to transform response message before sending it to the output port.
Click the small button against the properties to configure these in the XSL Configuration dialog box.
As this is an Expert Property, enable Show Expert Properties check box on the upper-left part of the CPS to display this property.
Use this property with caution as Expert Property configuration is meant for advanced users.
XSL Configuration
Properties under XSL Configuration are described in the following sections.
Provide XSL
Provide XSL to be applied on the message for transformation.
XSLT Engine
When this property is chosen as 'other' along with Transformer factory class property, it determines the transformer implementation that should be used to perform the transformation.
Figure 33: XSLT Engine properties
Xalan (2.7.0) and Saxon (8.4) transformer implementations are bundled with Fiorano environment for performing transformations.
Xalan
Xalan implementation (org.apache.xalan.processor.TransformerFactoryImpl) is used to perform transformation.Xalan(2.7.0) does not support XSLT 2.0
Saxon
Saxon implementation (net.sf.saxon.TransformerFactoryImpl) is used to perform transformation.Saxon implementation does not support custom functions
- Other
This option should be used when a custom transformer implementation has to be used. Selecting this option shows property Transformer factory class which can be used to provide the transformation factory implementation that should be used.
Transformation Source Data
This property is used to apply transformation source to a particular part of the input message.
Figure 34: Transformation source data properties
- Body: Select if the transformation is to be applied on the Body of the input message.
- Context: Select if the transformation is to be applied on the Application Context of the input message.
Body-Context: Select if the transformation is to be applied on the both Body and Application Context of the input message.
In this case, XML instance of application context is treated as primary source.
Elements in primary source can be referenced directly in XSL, whereas elements of other structure should be referenced as document (StructureName)/ElementName.
Set Transformation result as
This property is used to set transformation result to a particular part of the output message.
Figure 35: Set transformation result as properties
- Body: Select if the transformation result is to be set to the Body of the output message.
- Context: Select if the transformation result is to be set to the Application Context of the output message.
Process Message Based On a Property
The property helps components to skip certain messages from processing.
Figure 36: Process Message Based On a Property settings
As this is an Expert Property, enable Show Expert Properties check box on the upper-left part of the CPS to display this property.
Use this property with caution as Expert Property configuration is meant for advanced users.
Enable this property If the component needs to process a message based on a condition which will be validated based on its properties. The conditions can be specified using the properties described below.
Message Property Name
Property name of the message from where the value needs to be fetched to evaluate.
Message Property Value
Value of the message property.
For a given message, the condition is met only if the property specified in "Message Property Name" has the value specified in "Message Property Value". If the incoming message does not satisfy the condition, then the component indiscriminately forwards the message to its output port without processing it.
This property will be useful when sequencing has to be maintained between heterogeneous messages.
Example
In an Event Process that is configured to listen for multiple types of HL7 messages using WSStub microservice, which forwards them using different protocols based on the HL7 message type and inserts it into database, only the forward action is successful. Generally, parallel flows are defined for each HL7 message type, route selectors used to identify the flow and thereby message is sent out of the parallel flow to the DB component.
Figure 37: Event Process composed as a normal parallel flow
It is difficult to maintain order at the DB component input port in above flow. To maintain the order, process all the messages sequentially as shown in the figure below and configure the Process Message Based on Property based on the HL7 message type; only the required components will process, others just forward the message to its output port.
Figure 38: Event Process composed with the property enabled in the HL7 microservice
Validate Input
Figure 39: Common configurations in Interaction Spec panel
This property determines whether the input message has to be validated against the schema defined on the input ports.
- If enabled, input messages are validated against the schema defined on the input port on which the message is received.
- If disabled, input messages are not validated.
Use this property with caution as Expert Property configuration is meant for advanced users.
Cleanup resources (excluding connection) after each document
A component creates various objects to process business logic. Some of these objects are connection objects or are related to connection where as other objects are not related to connection but are required to process business logic. Holding these objects in-memory all the time will make lesser memory available that can be freed and deleting these objects to free up space results in higher processing time as the objects have to be recreated. Hence, the objects related to business logic can be removed from time to time.
- If enabled, objects that are not connection-related are not destroyed and are reused for each request.
- If disabled, objects that are not connection-related are destroyed and recreated for each request. When a connection object is destroyed, all objects are recreated on subsequent request.
Use this property with caution as Expert Property configuration is meant for advanced users.
Target Namespace
Two or more XML schema having same namespace will cause problems if there are elements which are defined with same name. Schema set on the input and output ports of the component are in some created by the component. To avoid the clash of elements from different schema, the schema generated by the component use the value provided for this property to compute the namespace for input or output schema.
Use this property with caution as Expert Property configuration is meant for advanced users.
Monitoring Configuration
When monitoring is enabled for a component, it publishes USER_EVENTs containing the following statistics, which are sent to FPS_USER_EVENTS_TOPIC at the configured intervals of time:
- Minimum execution time: The minimum amount of time taken to process any message during the last publish interval.
- Maximum execution time: The maximum amount of time taken to process any message during the last publish interval.
- Count: Number of messages processed during the last publish interval.
- Throughput: Rate at which messages are processed during the last publish interval.
Click the ellipsis button to launch an editor to configure Monitoring configuration.
Figure 40: Monitoring configurations in Interaction Spec panel
Use this property with caution as Expert Property configuration is meant for advanced users.
Enable Monitoring
Select the check box to enable monitoring for request execution time.
Publish Interval
The time interval after which monitoring statistics are computed and sent.
Enabling ListenForUserEvents parameter for Monitoring Performance
To display the monitoring statistics in Dashboard, apart from enabling Monitoring in the CPS, the parameter ListenForUserEvents in FES profile needs to be enabled which can be done from eStuido or the Dashboard as illustrated in the following sections. This property decides whether or not the Enterprise Server listens to the monitoring events published by component instances.
eStudio
- Open Profile Management and go to FES under Profiles.
- Navigate to FES > Fiorano > Esb > Events.
- Click FESEventsManager to open the Properties of FESEventsManager window on the right side.
Under ComponentInstance Configuration section, select the ListenForUserEvents checkbox.
Ensure that the Server is stopped to make the above changes.
Figure 41: Enabling Dashboard Monitoring option through eStudio
Dashboard
- Go to Advanced Properties property under Advanced Properties tab present in the Navigation Panel.
- In the Configure Advanced Property window, expand Enterprise Server>Events Manager.
- Under Action column, click the Change button corresponding to the Attribute Name: ListenForUserEvents.
- Change the value to "true" from the ListenForUserEvents drop-down and click OK.
- Click Save Configuration button in the Save Changes dialog box and notice the change in the Attribute Value parameter.
- Restart Server to bring the changes into effect.
Figure 42: Enabling Dashboard Monitoring option through Dashboard
Refer the Monitoring Performance section to see how performance is monitored in the Dashboard.
Threadpool Configuration
This property is used when there is a need to process messages in parallel within the component, still maintaining the sequence from the external perspective.
- This needs to be used only in such circumstances.
- If sequential processing is not required, please use sessions on the input port.
Click the Threadpool Configuration ellipses button to configure the Threadpool Configuration properties.
Figure 43: Threadpool Configuration properties
Enable Thread Pool
Enable this option to configure the properties that appear as below.
Pool Size
The number of requests to be processed in parallel within the component. Default value is '1'.
Batch Eviction Interval (in ms)
Time in milliseconds after which the threads are evicted in case of inactivity. New threads are created in place of evicted threads when new requests are received. Default value is '1000'.
Scheduler Configurations
A component can be scheduled to execute a specific request at configured intervals of time. When the component is configured to run in Scheduler mode, the component will not have input port (separate input need not be sent to the component in order to send message). However, messaging properties that are usually configured on the input port can be configured in Transport Configurations panel.
Figure 44: Scheduler configurations panel
Scheduler Configurations tab
Enable Scheduling
Select the check box to run the component in the scheduling mode.
Repeat Interval
Specifies time interval between successive requests.
The units of time available are:
- milli seconds
- seconds
- minutes
- hours
- days
Repeat forever
If this option is enabled, then the number of times the input request is executed will be infinite.
Repeat only
Specifies the number of times the input request is executed.
This property appears only if Repeat forever option is enabled.
Start time
The polling start time. If the specified start time is earlier than the component start time, the first schedule will happen at the next scheduled time. For example, start time is 08:00:00, poll interval is 30 minutes, and component starts at 8:10:00, the first schedule will happen at 08:30:00.
Start date
The polling start date. If the specified start date is earlier than the component start date, then it will be ignored and input messages are sent at next scheduled date.
Input Message
Figure 45: Input Message tab in the Scheduler Configurations panel
Use specified Input
Select the check box to configure input that is repeatedly executed.
- Validate: Validates the specified input against the structure specified on the input port.
- Generate Sample Input: Generates the sample input for the structure specified on the input port.
Advanced Configuration
Advanced scheduling information can be configured in the Scheduler Configuration panel.
Figure 46: Advanced Scheduling configuration
Enable Advanced Scheduling
This option can be chosen if advanced scheduling options like scheduling on specific days, dates and during certain time periods needs to be done.
Schedule Type
The scheduling type can be chosen depending on the way the scheduling of messages needs to be controlled.
The different scheduling types and their working are as below.
- DAILY: The message is sent every day between the start and end time as defined in the sessions table. The times have to be in hh:mm:ss format.
- WEEKLY: The message is sent on predefined days of a week. The days in week can be chosen on clicking the ellipsis against the property Scheduled Days in Week. The messages are sent only during the intervals defined by the sessions panel.
- MONTHLY: The message is sent on predefined dates in a month. The days in week can be chosen on clicking the ellipsis against the property Scheduled Dates in Month. The messages are sent only during the intervals defined by the sessions panel.
Scheduled Dates In Month (Schedule Type - MONTHLY)
Click the button against the property to specify the dates in the Editor. Dates moved to the Included Entries section are considered as the scheduled dates.
Figure 47: Editor to provide Scheduled Dates In Month
Scheduled days in week (Schedule Type - WEEKLY)
Figure 48: Editor to provide Scheduled days in week
Start Time
Provide the Start Time and End Time by clicking Add button and then entering the timings.
Use End Date
When this option is chosen, the scheduling will stop on the date as defined against End Date. The date has to be in MM/dd/yyyy HH:mm:ss format.
When finite repeat count and end date are both used, the scheduling will stop based on which event happens earlier.
Transport Configurations
Transport Configurations panel is used to configure messaging properties when the component is configured in Scheduling mode.
After selecting the Enable Scheduling check box in the Scheduler Configuration panel, click Next to configure Transport properties in Transport Configurations panel.
Figure 49: Transport configurations panel
Transacted
For information on this property, refer to section Transacted in Input Port Properties.
Acknowledgement Mode
The Acknowledge modes available are:
- AUTO ACKNOWLEDGE
- CLIENT ACKNOWLEDGE
- DUPS OK ACKNOWLEDGE
For information on acknowledgement modes, refer to section Acknowledgement Mode in Input Port Properties.
Transaction Size
For information on this property, refer to section Transaction Size in Input Port Properties.
When the component is not in scheduling mode, properties are configured on the Input Port Properties.
Error Handling
Errors that occur in the component are classified into five categories – JMS Error, Response Generation Error, Request Processing Error, Connection Error and Invalid Request Error. Actions that have to be taken when an error occurs are defined in the Error Handling panel.
Some of the panels or actions are not available for some components and hence are not visible in those components.
Figure 50: Error handling
Connection Error
This property in Error Handling Panel will be visible only if the Managed Connection Factory panel is present. Presence of Managed Connection Factory implies that the component makes a connection to external system.
Example: Components like FileReader and FileWriter do not create any connections and hence they do not have this property in the CPS.
Errors that occur because of the connection to an external system cannot be made or because the connection to an external system is lost are categorized under the category
Connection Error
Example: Trying to connect to an external web site when the network connection is not active.
Figure 51: Available actions for Connection Error category
Remedial Actions
Actions that can be taken when a Connection Error occurs are as explained below.
- Send To Error Port: When an invalid input is given to the component, it sends the error on the ON_EXCEPTION output port of the component. By default, ON_EXCEPTION port is present in all components that support error handling. If this option is unchecked, then the Retries before sending error property in Advanced Settings group is disabled.
- Try reconnection: The component will re-execute the input request with a new connection, if this action is enabled. The number of times it should try and the time interval between two successive retries can be configured in Advanced Setting Panel of this panel. Configuring for retries is explained in Retry Configuration section.
Discard Connection: The component removes the connection from the connection pool as soon as a connection error occurs. If the processing of input request fails due to connection error then component will discard that connection object. The component will try with another connection object from the connection pool, if there are no connections in the connection pool then the component will create a new connection, and this connection is used to process the input request.
If the Try reconnection property is not set, then this property will be ignored.
Stop Service: The component is stopped when an error occurs if this action is enabled.
JMS Error
Errors that occur in transport (JMS)
Figure 52: Available actions for JMS Error category
Remedial Actions
Actions that can be taken when a JMS Error occurs are as explained below:
- Log to error logs: Logs the exception and trace to error logs.
- Stop service: The component is stopped when an error occurs if this action is enabled.
Response Generation Error
Errors that occur while building a response for the processed request.
Figure 53: Available actions for Response Generation Error category
Remedial Actions
Actions that can be taken when a Response Generation Error occurs are as explained below:
- Log to error logs: Logs the exception and trace to error logs.
Send to error port: when an invalid input is given to the component, it sends the error on the ON_EXCEPTION output port of the component if this action is enabled. By default, ON_EXCEPTION port is present in all components that support error handling.
Retries before sending error property in Advanced Settings group is disabled if this option is unchecked.
Request Processing Error
Request Processing Errors are categorized based on the following conditions:
- The error occurs after input message is successfully parsed and understood.
- The error is not a result of connection problems.
Example: In case of FTPGet, a Request Processing Error occurs when the specified file (to be downloaded) in the input request is not present in FTP Server.
Figure 54: Available actions for Request Processing Error category
Remedial Actions
Actions that can be taken when a Request Processing Error occurs are as explained below:.
- Log to error logs: Logs the exception and trace to error logs.
- Re-execute Request: The component will re-execute the input request if this action is enabled. Configuring for retries is explained in section Retry Configuration section. This action should be enabled only for errors that may be rectified over time.
Example: Error in file reader because a file is not found. If the required file should be placed by another process, then the file not found error can be rectified over time and hence can be retried.
- Send To Error Port: When an invalid input is given to the component, it sends the error on the ON_EXCEPTION output port of the component. By default, ON_EXCEPTION port is present in all components that support error handling. Retries before sending error property in Advanced Settings group is disabled if this option is unchecked.
- Stop Service: The component is stopped when an error occurs if this action is enabled.
- Throw fault on warnings: In some cases, a problem in the component which is not severe is treated as a warning. Such warnings are just logged by default. The component will treat such warnings as errors, if this property is enabled.
Example: When the FileReader is configured to read files with a particular pattern for file names, a warning is logged if there are no files whose names match the pattern configured. If the FileReader is polling a directory, then it is an inherent assumption that files are not always present and hence treating it as warning is appropriate. But if the file reader is not in scheduler mode, then absence of files has to be treated as an error.
Invalid Request Error
Errors that occur when parsing the input request are categorized under Invalid Request Error. Remedial actions are different for EDBC and BC components.
Figure 55: Available actions for Invalid Request Error category
EDBC Components
Remedial Actions
- Log to error logs: Logs the exception and trace to error logs.
- Process invalid request: Do not stop processing in case request is invalid. Continue Processing.
- Send To Error Port: When an invalid input is given to the component, it sends the error to the ON_EXCEPTION output port of the component. By default, ON_EXCEPTION port is present in all components that support error handling. If this option is unchecked, then the Retries before sending error property in Advanced Settings group is disabled.
- Stop service: The component is stopped when an error occurs if this action is enabled.
BC Components
Remedial Actions
Actions that can be taken when an Invalid Request Error occurs.
- Send To Error Port: When an invalid input is given to the adapter, it sends the error on the ON_EXCEPTION output port of the component. By default, ON_EXCEPTION port is present in all components that support error handling. Retries before sending error property in Advanced Settings group is disabled if this option is unchecked.
- Do not stop service: If this property is not checked, when an invalid input is sent to the component, the component will be stopped immediately. This property is checked by default.
Example: In case of SMTP, if the input message is not valid according to the schema set on its IN_PORT, an exception occurs and the component will be stopped only if this property is unchecked.
Retry Configuration
When Re-execute Request is enabled for Request Processing Error or when Try Reconnection is enabled for Connection Error, the Advanced Settings group containing configurations for retries is visible.
- Time between retries(ms): The time interval between two successive retries.
- Number of retries: The number of times the component should retry the request. This property is enabled only if Infinite check box is unselected.
- Infinite: If the check box is selected, the component will continuously retry the request until the request is process successfully. when this option is selected, the property Number of retries is disabled and its value is ignored.
- Retries before sending error: This property is enabled only if Send To Error Port action is enabled. If Send To Error Port action is enabled and if the value for this component is a number n, then the component sends an error on the ON_EXCEPTION port after every n retries.
Schema Editor
Figure 56: Schema Editor
Schema Editor is used to configure schemas that are required for the functionality of a component.
In general,
- XSDs and DTDs can both be provided in the schema editor. Some components allow only XSDs.
- Only one root element can be selected. Some components allow selecting multiple root elements.
- When a DTD is provided in the schema editor, the External XSDs tab is disabled.
XSD
Schema
Schemas that are present on the file system can be loaded by clicking on Load button or the XSD/DTD can be provided in the text area in the schema tab shown in figure 48. This opens a file browser which enables navigation to the required schema on the file system. The file type can be chosen as XSD or DTD in the filechooser.
Root element can be selected by clicking on Select Root Element button . A list containing all the elements present in the schema will be displayed as shown in Figure 49. A root element (multiple root elements, in some cases) should be selected from that list of elements. The selected root element(s) will be displayed in the schema editor next to Select Root Element text.
Figure 57: Selection of root element
Structure
The structure tab displays a tree structure of the schema provided as shown below. The structure depends on root element.
Figure 58: Structure of the schema when no Root Element is chosen
Figure 59: Structure of the schema when Bookstore is chosen as Root Element
The structure of the entire schema is displayed if none of the root element is selected. If root element is selected (as 'Bookstore' in the figure above), the structure of that element is displayed.
External XSDs
If there are any imported schemas in the schema provided in XSD-Schema tab, they can be resolved by adding them as the external XSDs here. Any number of external schemas can be added here.
Imported schemas can also be resolved by adding the schemas in Schema Repository.
Schemas provided as external XSDs must have target namespace defined.
Click the Add button to add the external schema. Select an option from Manual or Load from File.
Figure 60: Adding external schema
- Manual - The text editor on the right is editable only when Manual option is selected. The schema has to be provided manually in the text editor.
- Load from File - Opens a File Chooser to browse the required external schema.
After loading the schema in the text editor, click the Save button to save the schema. The schema will be added to the list of external XSDs only when it is saved.
To remove a schema, select the corresponding namespace and click Remove button .
To view a schema, select the corresponding namespace and the schema can be viewed in the text editor.
Figure 61: Configuring external schema
Clear
On clicking Clear button, the schema, external schemas, root element and structure present in the schema editor will be cleared.
Fetch from Connected Source
Figure 62: List of connected ports from which schema should be fetched
On clicking Fetch from Connected Source button, a list of ports (which have schema set on them) of the components connected to this component are displayed. Application Context of the event process is also listed, if defined. On selecting one of the ports or application context, the schema present will be set as schema in the schema editor.
Schema Repository
Schema Repository is used to store schemas that are imported in schemas used by different components/event processes. The imported schemas referred from anywhere in an Event Process/component can be stored here so that they are resolved even when they are not added explicitly. Hence, schemas which are imported across multiple event processes/components can be stored in the schema repository.
Adding Schema
To add schemas to the Schema Repository, perform the following steps.
- In Studio, navigate to Tools > Schema Repository. This opens a Schema Repository editor using which schemas can be added to schema repository.
Figure 63: Schema repository editor - Click the Add Button to add schemas to the repository, Customize Add... editor.
Figure 64: Adding XSD to the schema repository - Click the ellipsis button to browse the required XSD.
- Select an XSD and click OK
The values URI, Location, schema name will be automatically updated.- The URI value should not be an empty field. In case, if the schema has a target namespace, URI should be same as the target namespace of the XSD.
- The Location field displays the absolute path of the schema file.
- If the schema is to be copied and saved in the location <FIORANO_HOME>/xml-catalog/user, select the field Save to Catalog folder with name and specify a name with which the file has to be saved.
- If Save to Catalog folder with name is not selected, the file is not copied to the location <FIORANO_HOME>/xml-catalog/user and will be referred from its original location.
- Click OK to close Customize Add editor.
A new row specifying the URI and Location of the XSD will be added in the table.- To remove a schema from the schema repository, select a row from the table and click Remove.
Figure 65: Removing XSD from the schema repository - The option 'Delete schema file' specifies whether to delete the file from the system or just to remove the schema from xml-catalog. Select the check box to remove the file completely.
- In case, if the file is not copied to <FIORANO_HOME>/xml-catalog/user, the file will be deleted from its original location if this option is selected.
- To remove a schema from the schema repository, select a row from the table and click Remove.
XPath Editor
Figure 66: XPath Editor
XPath Editor can be used for specifying path expressions to identify nodes in an XML document and for specifying conditions. The list of elements from schema provided are shown in the left panel of the editor. An XPath Editor with sample schema is shown below.
Figure 67: Adding a constant in XPath Editor
An element can be selected by simple drag and drop onto the right panel. An XPath expression may consist of different constant values, functions or/and operators. These can be added easily by right clicking on the right panel and selecting the option based on the requirement.
Adding a Function
A function can be added either by right clicking on the right hand side panel --> Add Function or by selecting from the list available in the palette tab which is present in the left panel as shown below.
Figure 68: XPath Editor – Palette containing different XPath functions
A string function matches which takes two arguments and returns a boolean value is shown in the above figure.
Adding a Constant value
Supported types of constants are String, Boolean, Numeric, Date-Time, and Duration.
Example: Addition of a boolean value can be done as described below
- Right-click the right panel. Select Add Constant > Boolean Value.
- Select the value as shown below.
Figure 69: Adding a boolean constant
Addition an Operator
Figure 70: Adding an operator
- Right-click the right panel. Click the Add Operator button.
- Select the operator as shown in the above figure.
Figure 71: Add operator
The figure above illustrates a sample Xpath expression using a '+' operator. It contains two numeric constant values which are passed as arguments to the operator.
Named Configurations in CPS
Named Configurations may be used in eStudio CPS of components. Configurations can either be loaded from or saved to the repository from CPS itself.
If named configuration is not to be used in the CPS, the text box against Named Configuration shown in the below figures should be left blank and no Named Configuration will be used.
Load Named Configuration
Named Configurations which are created earlier either from the Configuration Repository view or from the CPS itself can be re-used in other service instances.
To view all the named configurations of a particular service or resource type, use the drop-down in named configurations editor present in the CPS. A list of all configurations of similar type present in the repository is shown. Select a configuration name from the list to use that named configuration in a given service instance.
Figure 72: Load Named Configuration
After selecting the named configuration from drop down, the UI will be disabled and will not be able to edit the configuration.
Figure 73: UI disabled after loading Named Configuration
Save Named Configuration
To save a new Named Configuration to the repository, specify a name against Named Configuration, which is not present in the drop-down list and provide the configuration details that need to be saved.
The UI gets enabled to edit the configuration on typing a new name, while it will be in editable state by default if no configuration is present in the drop-down, that is, if there is no stored configuration present.
Click Save and Close button or Finish button in the CPS to save the named configuration to the repository.
Figure 74: Save Named Configuration
Encrypt Decrypt Configuration
XML Messages received by and sent from components in event processes can be encrypted and/or decrypted so that sensitive data will be more secure and be protected from being accessible to everyone, and hence enable authorized usage.
This can be done by providing a global encryption key and selecting the elements in XML messages that are to be encrypted/decrypted in component configuration.
XML Message Encryption and Decryption
The first step in securing XML messages is to define an encryption key to be used across all event processes.
Adding Encryption Key
- In eStudio, navigate to Configuration Repository View and right-click the Resource button. Select Add Configuration to open the window for adding new Resource Configuration. Select the Resource type as MessageEncryptionConfiguration as shown in the figure below and click Next.
Figure 75: Add Resource Configuration - Provide the encryption key password (any string) and XML Block Encryption Algorithm as below and click Finish. Supported XML Block Encryption Algorithms are AES128, AES256, TRIPLEDES.
Figure 76: Provide Encryption Key and Algorithm
Only one MessageEncryptionConfiguration can be created in one instance of Fiorano Enterprise Server (FES) and the same will be used across all event processes in this FES.
Configuring Components for Message Encryption
When enabled, in general, components will send messages coming out on OUT_PORT in encrypted form and those received on IN_PORT will be decrypted. However, some components which send messages to other servers after receiving them on IN_PORT, like WebServiceConsumer, can encrypt the message received on IN_PORT before sending it to the server and decrypt the message after receiving from the server before sending to OUT_PORT.
The components that support both encryption and decryption on both input and output ports are WSStub, WebServiceConsumer:5.0, WebServiceConsumer:4.0, SalesForce, HTTPAdapters:5.0, HTTPAdapters:4.0 and HttpReceive.
Selecting XML elements to encrypt
In the component CPS, which have single input and output ports, the configuration will be as below.
Figure 77: Encrypt/Decrypt properties in CPS
Enable Show Expert Properties to see properties Input Elements to Encrypt/Decrypt and Output Elements to Encrypt/Decrypt. Both have similar configurations.
Open the Property Editor by clicking on ellipsis button to select XML elements.
Figure 78: Select elements to encrypt/decrypt
Encrypt: Select this option if the message coming on to this port should be encrypted. Otherwise, the component assumes the message is already encrypted and so will be decrypted.
Select elements to encrypt/decrypt: The message will be either encrypted or decrypted only if there are any XML elements in Selected elements list.
Under Select elements to encrypt/decrypt, the schema structure of the input/output port is shown.
The encryption mechanism does not encrypt/decrypt the XML message as a whole but only the individual XML elements.
Select the elements which are to be encrypted or decrypted by clicking button.
There is no need to select child elements if a parent element is selected. The parent element is encrypted as a whole.
Add elements to encrypt/decrypt: Some components may not have schema on ports. In that case, semi colon separated XPaths, similar to the one in Selected elements list, can be provided here.
Namespace Prefixes: A map of prefix versus namespace used in XPaths can be configured here.
In components with multiple ports, the configuration is similar to single port components except that the above configuration can be done for each individual port.
Navigate to Encrypt/Decrypt Configuration and click Refresh to populate the ports of the component.
Figure 79: Components with multiple ports
Select the required port to populate schema structure. The rest of the configuration is the same as above.
Figure 80: Select elements for each port
Sample Event Process demonstrating Message Encryption
- Create an Event Process with Feeder and Display.
- Configure Feeder with a schema. In the next page, select Encrypt Configuration tab and select XML elements to encrypt as described above.
- Adding MessageEncryptionConfiguration in Configuration Repository view is mandatory before launching the component.
- Launch the event process and send a message from Feeder to Display.
- A sample message received by Display where OutPart1 element is encrypted can be as below.
Figure 81: Sample encrypted message
Password Encryption
Adding KeyStore Configuration
- In eStudio, open Configuration Repository panel and right-click Resource. Click Add Configuration to add new Resource Configuration. Select the Resource type as "Keystore" as shown below.
Figure 80: Adding Resource Configuration - Click Next to get the add AES Encryption Key. Enter any String of your choice (recommended minimum of 6 characters for better security) and click Finish to save the keystore which will be used as the key for encryption/decryption of data.
Figure 82: Adding Encryption Key
Custom Encryption of Passwords
Components in Fiorano Event Processes contain passwords of External Systems like Databases, FTP Servers as part of their configuration. Using this feature, users can use their own keys and algorithms to encrypt passwords.
Figure 83: DB Configuration dialog box
Password Encryption Configuration
Use Custom Encryption
This feature enables you to use your own keys and algorithms to encrypt passwords. On selecting this check box, two prompts appear, asking for CustomClass and whether to get Password from vault.
Custom Encryption Class
Java Class which implements ICustomEncryptor has to given in Custom Class text box. You have to override methods encrypt(String) and decrypt(String), for encrypting and decrypting passwords respectively.
Get Password From Vault
If this check box is selected, you have to enter key instead of password in password field(s). getPasswdFromVault(String key) method from CustomClass (which is implementor of IcustomEncryptor) gets the passwords by taking keys as params.
Below is the sample class that reverses the password(s) and saves password(s) in configuration. Follow the below steps for testing:
- Compile the java file with including fiorano-utilj4 jar in classpath.This jar is at location {FIORANO_HOME}/framework/lib/fiorano-utilj4.jar
- After compiling, add the class to resources of that component.
- Right-click the component in Service Palette and click Edit.
- Under Deployement tab, add class file/jar(with compiled class) to resources; the input request gets executed.
Sample Class
import com.fiorano.util.crypto.ICustomEncryptor;
import com.fiorano.util.crypto.StringEncrypter;
import java.util.HashMap;
public class MyCustomEncryptor implements ICustomEncryptor {
private static HashMap<String,String> passwordMap = new HashMap<String, String>();
public MyCustomEncryptor() {
}
static {
passwordMap.put("ftppasswd","fiorano13");
passwordMap.put("dbpasswd","fiorano13");
passwordMap.put("HttpAuthPasswd","fiorano13");
}
public String getPasswdFromVault(String key){
String passwd = passwordMap.get(key);
if(passwd == null)
passwd = key;
return passwd;
}
/**
* returns encrypted string
*
* @param unencryptedString Unencrypted String
* @return encrypted string
* @throws StringEncrypter.EncryptionException EncryptionException
*/
public String encrypt(String unencryptedString) throws StringEncrypter.EncryptionException {
String cipher = "";
char[] c = unencryptedString.toCharArray();
for(int i=c.length;i>0;i-- ){
cipher += c[i-1];
}
return cipher;
}
/**
* Returns decrypted string for an encrypted String
*
* @param encryptedString Encrypted String
* @return Decrypted String
* @throws StringEncrypter.EncryptionException EncryptionException
*/
public String decrypt(String encryptedString) throws StringEncrypter.EncryptionException {
String password = "";
char[] c = encryptedString.toCharArray();
for(int i=c.length;i>0;i-- ){
password += c[i-1];
}
return password;
}
}
public String getEncryptionKey() {
return null;
}
public void setEncryptionKey(String encryptionKey) {
}
public String getEncryptionScheme() {
return null;
}
public void setEncryptionScheme(String encryptionScheme) {
}
}
External CPS Error with Solaris (solution)
To make External CPS (components like RESTStub, RestConsumer, XMLSplitter, Aggregator etc) work in Solaris operating system, make changes in java.security (location: $JAVA_HOME/jre/lib/security) as mentioned in the following link: http://ccortezsv.blogspot.in/2014/03/sunsecuritypkcs11configurationexception.html
Configurations will not be saved in CPS unless the above exercise is performed.