<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://gvwiki.greenvulcano.com/gvwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D.franco</id>
	<title>GreenVulcano Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://gvwiki.greenvulcano.com/gvwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D.franco"/>
	<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Special:Contributions/D.franco"/>
	<updated>2026-04-13T04:38:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.7</generator>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Imap-manage-call&amp;diff=4505</id>
		<title>Imap-manage-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Imap-manage-call&amp;diff=4505"/>
		<updated>2016-03-11T18:09:09Z</updated>

		<summary type="html">&lt;p&gt;D.franco: Created page with &amp;quot;==Description==  {{GVESB}} plugin for managing emails through IMAP protocol.  The message on wich operate is identified by its InternetMessageId contained into the '''MESSAGE_ID'...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
{{GVESB}} plugin for managing emails through IMAP protocol.&lt;br /&gt;
&lt;br /&gt;
The message on wich operate is identified by its InternetMessageId contained into the '''MESSAGE_ID''' property of the input GVBuffer.&lt;br /&gt;
&lt;br /&gt;
The property '''MANAGED_MESSAGE_COUNT''' in the output [[GVBuffer]] contains the number:&lt;br /&gt;
* 0 : no message processed&lt;br /&gt;
* 1 : message &amp;lt;MESSAGE_ID&amp;gt; processed&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The imap-manage-call Element is used by [[Channel]], [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.imap.ManageEmailCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|-&lt;br /&gt;
| jndi-name || optional || JNDI name of the mail Session configured in the application server.&lt;br /&gt;
|-&lt;br /&gt;
| folderFrom || optional || Folder from wich read email. Default to Inbox.&lt;br /&gt;
|-&lt;br /&gt;
| folderTo || optional || Folder on wich copy/move email.&lt;br /&gt;
|-&lt;br /&gt;
| action || required || Action to execute on message:&lt;br /&gt;
* copy&lt;br /&gt;
* move&lt;br /&gt;
* delete&lt;br /&gt;
* set-read&lt;br /&gt;
* set-unread&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It has the following sub-elements:&lt;br /&gt;
* [[Description]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Imap-call&amp;diff=4504</id>
		<title>Imap-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Imap-call&amp;diff=4504"/>
		<updated>2016-03-11T17:32:06Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
Use this {{GVESB}} plugin if you want to receive an email using IMAP protocol.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
{{GVESB}} allows you to receive emails using the imap-call plugin. Received messages are translated into an XML document that describes the content of the message and its attachments if presents. &lt;br /&gt;
&lt;br /&gt;
The imap-call element is used by [[Channel]] and [[routed-call]] and has the following attributes:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.imap.IMAPCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the 'Flow' section to associate workflow nodes to VCL operations.&lt;br /&gt;
|-&lt;br /&gt;
| jndi-name || required || JNDI name of the mail Session configured in the application server.&lt;br /&gt;
The mail Sessions can be configured using the file ''mail-service.xml'' present into the folder //GV_HOME/application/deploy&lt;br /&gt;
|-&lt;br /&gt;
| override-protocol-host || optional || Corresponds to the property mail.protocol.host and overwrites the value of property mail.host specified in the configuration of the mail Session.&lt;br /&gt;
|-&lt;br /&gt;
| override-protocol-user || optional || Corresponds to the property mail.protocol.user and overwrites the value of property mail.user specified in the configuration of the mail Session.&lt;br /&gt;
|-&lt;br /&gt;
| delete-messages || optional || Mark a processed message as DELETED. Default false.&lt;br /&gt;
|-&lt;br /&gt;
| expunge || optional || Expunge (permanently remove) messages marked DELETED. Default false.&lt;br /&gt;
|-&lt;br /&gt;
| email-rx-cleaner || optional || RegExp pattern for email address cleaning. &amp;lt;br/&amp;gt; Default &amp;quot;[A-z][A-z0-9_]*([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| export-EML || optional || Also export a message in EML format. Default false.&lt;br /&gt;
|-&lt;br /&gt;
| max-read-messages || optional || Maximum number of emails to be read. Default 10, a value of -1 means read all.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The imap-call configuration node may contain the following sub-elements&lt;br /&gt;
&lt;br /&gt;
* Description&lt;br /&gt;
* [[JNDIHelper]]&lt;br /&gt;
* [[mail-properties]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Imap-call&amp;diff=4503</id>
		<title>Imap-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Imap-call&amp;diff=4503"/>
		<updated>2016-03-11T17:15:05Z</updated>

		<summary type="html">&lt;p&gt;D.franco: Created page with &amp;quot;==Description== Use this {{GVESB}} plugin if you want to receive an email using IMAP protocol.  =={{VULCON}} / {{GVCONSOLE}} Configuration==  {{GVESB}} allows you to receive emai...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
Use this {{GVESB}} plugin if you want to receive an email using IMAP protocol.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
{{GVESB}} allows you to receive emails using the pop-call plugin. Received messages are translated into an XML document that describes the content of the message and its attachments if presents. &lt;br /&gt;
&lt;br /&gt;
The pop-call element is used by [[Channel]] and [[routed-call]] and has the following attributes:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.imap.IMAPCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the 'Flow' section to associate workflow nodes to VCL operations.&lt;br /&gt;
|-&lt;br /&gt;
| jndi-name || required || JNDI name of the mail Session configured in the application server.&lt;br /&gt;
The mail Sessions can be configured using the file ''mail-service.xml'' present into the folder //GV_HOME/application/deploy&lt;br /&gt;
|-&lt;br /&gt;
| override-protocol-host || optional || Corresponds to the property mail.protocol.host and overwrites the value of property mail.host specified in the configuration of the mail Session.&lt;br /&gt;
|-&lt;br /&gt;
| override-protocol-user || optional || Corresponds to the property mail.protocol.user and overwrites the value of property mail.user specified in the configuration of the mail Session.&lt;br /&gt;
|-&lt;br /&gt;
| delete-messages || optional || Mark a processed message as DELETED. Default false.&lt;br /&gt;
|-&lt;br /&gt;
| expunge || optional || Expunge (permanently remove) messages marked DELETED. Default false.&lt;br /&gt;
|-&lt;br /&gt;
| email-rx-cleaner || optional || RegExp pattern for email address cleaning. &amp;lt;br/&amp;gt; Default &amp;quot;[A-z][A-z0-9_]*([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| export-EML || optional || Also export a message in EML format. Default false.&lt;br /&gt;
|-&lt;br /&gt;
| max-read-messages || optional || Maximum number of emails to be read. Default 10, a value of -1 means read all.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The imap-call configuration node may contain the following sub-elements&lt;br /&gt;
&lt;br /&gt;
* Description&lt;br /&gt;
* [[JNDIHelper]]&lt;br /&gt;
* [[mail-properties]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=FieldFormatters&amp;diff=4495</id>
		<title>FieldFormatters</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=FieldFormatters&amp;diff=4495"/>
		<updated>2016-02-05T17:40:05Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{GVESB}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The FieldFormatters Element is used by: &lt;br /&gt;
* [[DBOFlatSelect]]&lt;br /&gt;
* [[DBOMultiFlatSelect]]&lt;br /&gt;
* [[DBOSelect]]&lt;br /&gt;
* [[DBOThreadSelect]]&lt;br /&gt;
&lt;br /&gt;
The following table shows its attributes:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| id || required || Must match the @id of the statement on which output apply the formatters.&lt;br /&gt;
The attribute's value cannot be null.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Might contain the sub-elements:&lt;br /&gt;
* [[Description]] &lt;br /&gt;
* [[#FieldFormatter|FieldFormatter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===FieldFormatter===&lt;br /&gt;
&lt;br /&gt;
The FieldFormatter element is used to force the Database table fields formatting.&lt;br /&gt;
&lt;br /&gt;
It is used by: [[FieldFormatters]].&lt;br /&gt;
&lt;br /&gt;
The following table shows the FieldFormatter element's attributes:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''field-formatter'''.&lt;br /&gt;
|-&lt;br /&gt;
| field-id || optional || Comma-separated list of 0-based positions of fields on which the formatter applies&lt;br /&gt;
|-&lt;br /&gt;
| field-name || optional || Comma-separated list of names of fields on which the formatter applies&lt;br /&gt;
|-&lt;br /&gt;
| number-format || optional || Default to &amp;quot;#,##0.###&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| decimal-separator || optional || Default to &amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| grouping-separator || optional || Default to &amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| date-format || optional || Default to &amp;quot;yyyyMMdd HH:mm:ss&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| field-length || optional || Default to &amp;quot;64&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| filler-char || optional || Default to &amp;quot; &amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| terminator-char || optional || Default to &amp;quot;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| trim (none&amp;amp;#124;both&amp;amp;#124;right&amp;amp;#124;left) || optional || Default to &amp;quot;none&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| padding || optional || Default to &amp;quot;none&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Might contain the sub-element:&lt;br /&gt;
* [[Description]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4247</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4247"/>
		<updated>2014-06-02T22:06:56Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* {{GVCONSOLE}} Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allow to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be set as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the file GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# From the Service list select CCardQuery&lt;br /&gt;
# From the System list select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property set to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4246</id>
		<title>GVExample CCardQuery</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4246"/>
		<updated>2014-06-02T22:06:47Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* {{GVCONSOLE}} Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the scope of showing how {{GVESB}} uses [[DataHandler]] for quering a DB and implements a [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardQuery Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardQuery service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardQuery&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOSelect]] || name=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;1&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;select&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
 select p.NAME, cc.CNUMBER, cc.CREDIT, cc.ENABLED&lt;br /&gt;
 from PERSON p, CREDIT_CARD cc&lt;br /&gt;
 where p.ID = cc.ID_OWNER&lt;br /&gt;
 and cc.CNUMBER = &amp;lt;nowiki&amp;gt;@{{CNUMBER}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allow to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardQuery&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardQuery.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now control that the [[ws-call]] element attributes and subelements defined into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT will be set as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;QueryExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Query&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::QueryWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardQueryFlow.jpg|thumb|CCardQuery flow]] In order to define the CCardQuery service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;search_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;search_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardQuery&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;setDBService&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;search_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;QueryExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;QueryExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;QueryExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardQuery a new view will be open containing the file GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# From the Service list select CCardQuery&lt;br /&gt;
# From the System list select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to test&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property set to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about owner, credit and state of the credit card number &amp;quot;1234123415555666&amp;quot; as passed in input.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.02.15 at 11:46:26 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardQuery&lt;br /&gt;
	id       = 7F0001014F3B87B900021429&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: class org.apache.xerces.dom.DocumentImpl&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;QueryResponse xmlns=&amp;quot;http://www.credit.com/services&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;MARIO BIANCHI&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;cnumber&amp;gt;1234123415555666&amp;lt;/cnumber&amp;gt;&lt;br /&gt;
     &amp;lt;credit&amp;gt;300.00000&amp;lt;/credit&amp;gt;&lt;br /&gt;
     &amp;lt;active&amp;gt;true&amp;lt;/active&amp;gt;&lt;br /&gt;
  &amp;lt;/QueryResponse&amp;gt;&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 0&lt;br /&gt;
	REC_UPDATE = 0&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 1&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4245</id>
		<title>GVExample CCardQuery</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4245"/>
		<updated>2014-06-02T21:48:44Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Flow implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the scope of showing how {{GVESB}} uses [[DataHandler]] for quering a DB and implements a [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardQuery Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardQuery service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardQuery&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOSelect]] || name=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;1&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;select&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
 select p.NAME, cc.CNUMBER, cc.CREDIT, cc.ENABLED&lt;br /&gt;
 from PERSON p, CREDIT_CARD cc&lt;br /&gt;
 where p.ID = cc.ID_OWNER&lt;br /&gt;
 and cc.CNUMBER = &amp;lt;nowiki&amp;gt;@{{CNUMBER}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allow to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardQuery&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardQuery.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now control that the [[ws-call]] element attributes and subelements defined into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT will be set as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;QueryExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Query&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::QueryWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardQueryFlow.jpg|thumb|CCardQuery flow]] In order to define the CCardQuery service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;search_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;search_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardQuery&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;setDBService&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;search_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;QueryExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;QueryExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;QueryExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardQuery a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardQuery&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to test&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property set to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about owner, credit and state of the credit card number &amp;quot;1234123415555666&amp;quot; as passed in input.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.02.15 at 11:46:26 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardQuery&lt;br /&gt;
	id       = 7F0001014F3B87B900021429&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: class org.apache.xerces.dom.DocumentImpl&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;QueryResponse xmlns=&amp;quot;http://www.credit.com/services&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;MARIO BIANCHI&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;cnumber&amp;gt;1234123415555666&amp;lt;/cnumber&amp;gt;&lt;br /&gt;
     &amp;lt;credit&amp;gt;300.00000&amp;lt;/credit&amp;gt;&lt;br /&gt;
     &amp;lt;active&amp;gt;true&amp;lt;/active&amp;gt;&lt;br /&gt;
  &amp;lt;/QueryResponse&amp;gt;&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 0&lt;br /&gt;
	REC_UPDATE = 0&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 1&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4244</id>
		<title>GVExample CCardQuery</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4244"/>
		<updated>2014-06-02T21:21:49Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Systems, Channels, Operations and XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the scope of showing how {{GVESB}} uses [[DataHandler]] for quering a DB and implements a [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardQuery Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardQuery service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardQuery&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOSelect]] || name=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;1&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;select&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
 select p.NAME, cc.CNUMBER, cc.CREDIT, cc.ENABLED&lt;br /&gt;
 from PERSON p, CREDIT_CARD cc&lt;br /&gt;
 where p.ID = cc.ID_OWNER&lt;br /&gt;
 and cc.CNUMBER = &amp;lt;nowiki&amp;gt;@{{CNUMBER}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allow to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardQuery&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardQuery.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now control that the [[ws-call]] element attributes and subelements defined into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT will be set as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;QueryExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Query&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::QueryWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardQueryFlow.jpg|thumb|CCardQuery flow]] In order to define the CCardQuery service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using Data Handler, otherwise forwards the request to an external system using Web Service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/GVBufferCondition || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt; Property:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&lt;br /&gt;
: type=&amp;quot;gvbuffer-field&amp;quot;&lt;br /&gt;
: value=&amp;quot;true&amp;quot;&lt;br /&gt;
: value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot; &amp;lt;br/&amp;gt;PropertyDef:&lt;br /&gt;
: name=&amp;quot;CNUMBER&amp;quot;&lt;br /&gt;
: &amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
PropertyDef:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot;&lt;br /&gt;
: value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where number=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;search_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;search_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;search_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;QueryExternal&amp;quot;  &amp;lt;br/&amp;gt;InputServices:&lt;br /&gt;
: gvdte-service&lt;br /&gt;
: crtical=&amp;quot;yes&amp;quot;, internal=&amp;quot;yes&amp;quot;&lt;br /&gt;
: remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
: map-name-param:name=&amp;quot;map-name&amp;quot; type=&amp;quot;param&amp;quot;&lt;br /&gt;
: value=&amp;quot;QueryExternalInput”&lt;br /&gt;
: name=&amp;quot;QueryExternalInput&lt;br /&gt;
OutputServices:&lt;br /&gt;
: gvdte-service:&lt;br /&gt;
: critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&lt;br /&gt;
: remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
: map-name-param:&lt;br /&gt;
: name=&amp;quot;map-name&amp;quot; type=&amp;quot;param&amp;quot;&lt;br /&gt;
: value=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
: name=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardQuery a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardQuery&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to test&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property set to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about owner, credit and state of the credit card number &amp;quot;1234123415555666&amp;quot; as passed in input.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.02.15 at 11:46:26 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardQuery&lt;br /&gt;
	id       = 7F0001014F3B87B900021429&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: class org.apache.xerces.dom.DocumentImpl&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;QueryResponse xmlns=&amp;quot;http://www.credit.com/services&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;MARIO BIANCHI&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;cnumber&amp;gt;1234123415555666&amp;lt;/cnumber&amp;gt;&lt;br /&gt;
     &amp;lt;credit&amp;gt;300.00000&amp;lt;/credit&amp;gt;&lt;br /&gt;
     &amp;lt;active&amp;gt;true&amp;lt;/active&amp;gt;&lt;br /&gt;
  &amp;lt;/QueryResponse&amp;gt;&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 0&lt;br /&gt;
	REC_UPDATE = 0&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 1&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4243</id>
		<title>GVExample CCardQuery</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardQuery&amp;diff=4243"/>
		<updated>2014-05-30T16:19:00Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the scope of showing how {{GVESB}} uses [[DataHandler]] for quering a DB and implements a [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardQuery Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardQuery service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardQuery&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOSelect]] || name=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardQuery&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;1&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;select&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
 select p.NAME, cc.CNUMBER, cc.CREDIT, cc.ENABLED&lt;br /&gt;
 from PERSON p, CREDIT_CARD cc&lt;br /&gt;
 where p.ID = cc.ID_OWNER&lt;br /&gt;
 and cc.CNUMBER = &amp;lt;nowiki&amp;gt;@{{CNUMBER}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allow to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardQuery&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardQuery.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;QueryExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[QueryExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now control that the [[ws-call]] element attributes and subelements defined into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT will be set as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;QueryExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Query&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::QueryWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardQueryFlow.jpg|thumb|CCardQuery flow]] In order to define the CCardQuery service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using Data Handler, otherwise forwards the request to an external system using Web Service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/GVBufferCondition || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt; Property:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&lt;br /&gt;
: type=&amp;quot;gvbuffer-field&amp;quot;&lt;br /&gt;
: value=&amp;quot;true&amp;quot;&lt;br /&gt;
: value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot; &amp;lt;br/&amp;gt;PropertyDef:&lt;br /&gt;
: name=&amp;quot;CNUMBER&amp;quot;&lt;br /&gt;
: &amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
PropertyDef:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot;&lt;br /&gt;
: value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where number=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;search_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;search_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;search_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;QueryExternal&amp;quot;  &amp;lt;br/&amp;gt;InputServices:&lt;br /&gt;
: gvdte-service&lt;br /&gt;
: crtical=&amp;quot;yes&amp;quot;, internal=&amp;quot;yes&amp;quot;&lt;br /&gt;
: remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
: map-name-param:name=&amp;quot;map-name&amp;quot; type=&amp;quot;param&amp;quot;&lt;br /&gt;
: value=&amp;quot;QueryExternalInput”&lt;br /&gt;
: name=&amp;quot;QueryExternalInput&lt;br /&gt;
OutputServices:&lt;br /&gt;
: gvdte-service:&lt;br /&gt;
: critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&lt;br /&gt;
: remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
: map-name-param:&lt;br /&gt;
: name=&amp;quot;map-name&amp;quot; type=&amp;quot;param&amp;quot;&lt;br /&gt;
: value=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
: name=&amp;quot;QueryExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardQuery a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardQuery&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to test&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property set to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about owner, credit and state of the credit card number &amp;quot;1234123415555666&amp;quot; as passed in input.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.02.15 at 11:46:26 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardQuery&lt;br /&gt;
	id       = 7F0001014F3B87B900021429&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: class org.apache.xerces.dom.DocumentImpl&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;QueryResponse xmlns=&amp;quot;http://www.credit.com/services&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;MARIO BIANCHI&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;cnumber&amp;gt;1234123415555666&amp;lt;/cnumber&amp;gt;&lt;br /&gt;
     &amp;lt;credit&amp;gt;300.00000&amp;lt;/credit&amp;gt;&lt;br /&gt;
     &amp;lt;active&amp;gt;true&amp;lt;/active&amp;gt;&lt;br /&gt;
  &amp;lt;/QueryResponse&amp;gt;&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 0&lt;br /&gt;
	REC_UPDATE = 0&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 1&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4242</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4242"/>
		<updated>2014-05-30T15:59:44Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Systems, Channels, Operations and XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allow to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be set as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4241</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4241"/>
		<updated>2014-05-30T15:43:40Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Systems, Channels, Operations and XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allow to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4240</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4240"/>
		<updated>2014-05-30T14:20:31Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Systems, Channels, Operations and XPath */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/BasicHttpAuth || user=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.user}}&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;password=&amp;quot;xmlp&amp;lt;nowiki&amp;gt;{{ws.auth.password}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4239</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4239"/>
		<updated>2014-05-30T13:38:09Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Systems, Channels and Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels, Operations and XPath===&lt;br /&gt;
&lt;br /&gt;
For this exercise, you need first of all to define an XPath for querying web services. This can be made in {{VULCON}} core view, simply by right-clicking on the element '''GVHpath/XPath''' and then selecting Insert after (or Insert before) -&amp;gt; XPathNamespace. Then fill the ampty field as in the following table.&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| XPathNamespace || namespace=&amp;quot;http://www.credit.com/services&amp;quot;&amp;lt;br/&amp;gt;prefix=&amp;quot;cred&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.gv_test&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4238</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4238"/>
		<updated>2014-05-30T11:11:31Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Flow implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseObject_S(object.getObject(),false,true); XMLUtils.get_S(doc,'//cred:cnumber')}}&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.gv_test::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4237</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4237"/>
		<updated>2014-05-30T10:31:21Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* {{GVCONSOLE}} Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload.&lt;br /&gt;
# Confirm the operation.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously set (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4236</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4236"/>
		<updated>2014-05-30T09:04:40Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Flow implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service || critical=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/dh-selector-service/dh-selector-call || DH_SERVICE_NAME=&amp;quot;CCardPay&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4235</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4235"/>
		<updated>2014-05-30T08:59:43Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Systems, Channels and Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4234</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4234"/>
		<updated>2014-05-30T08:35:58Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Flow implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CREDIT::CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]] || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/[[ChangeGVBuffer]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4233</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4233"/>
		<updated>2014-05-29T17:22:46Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* {{GVCONSOLE}} Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CREDIT::CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;PayExternal&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;PayExternal&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follow these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse... and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4232</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4232"/>
		<updated>2014-05-29T17:10:02Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Flow implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CREDIT::CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;PayExternal&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;PayExternal&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4231</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4231"/>
		<updated>2014-05-29T16:52:22Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Flow implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CREDIT::CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;PayExternal&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4230</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4230"/>
		<updated>2014-05-29T16:46:17Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Flow implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CREDIT::CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]] || condition=&amp;quot;isInternalCCard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/[[GVBufferCondition]]/Property || name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]]/PropertyDef || name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4229</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4229"/>
		<updated>2014-05-29T16:19:02Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Systems, Channels and Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
Two new Services, Pay and Query, and two [[ws-call]] operations, pay and query, will be created into the System CREDIT, channel CREDIT_EXTERNAL. We change those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now is possible to modify the workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]] || name=&amp;quot;DataHandler&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]] || name=&amp;quot;CREDIT::CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DHVariables]]/[[DHVariables#DHVariable|DHVariable]] || name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]] || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/[[DBOBuilder]]/[[DBOUpdate]]/[[statement]] || id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Transformations/[[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| [[ws-call]] || name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]]/WSDLInfo || type=&amp;quot;wsdlinfo&amp;quot;&amp;lt;br/&amp;gt;wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field/Expression || type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/GVBufferCondition || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt; Property:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot; &amp;lt;br/&amp;gt;PropertyDef:&lt;br /&gt;
: name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
PropertyDef:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where &lt;br /&gt;
:: cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4228</id>
		<title>GVExample CCardPay</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_CCardPay&amp;diff=4228"/>
		<updated>2014-05-29T14:27:48Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This service has the purpose of showing how {{GVESB}} uses [[DataHandler]] to query a DB and implement [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
CCardPay Service executes the following operations:&lt;br /&gt;
# Receives a [[Web Services|Web Service]] request from client, with a credit card number to be controlled.&lt;br /&gt;
# If this card is locally managed, reads the data from DB using [[DataHandler]]. &lt;br /&gt;
# If this card is managed by an external system, forwards a Web Service request to that system.&lt;br /&gt;
# Returns the response to the client&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
To configure CCardPay service follow these steps:&lt;br /&gt;
# Define [[System|Systems]], [[Channel|Channels]] and [[Operation|Operations]]&lt;br /&gt;
# Define the [[Service|Services]]&lt;br /&gt;
# Implement the [[Flow|flows]].&lt;br /&gt;
&lt;br /&gt;
===Defining Systems, Channels and Operations===&lt;br /&gt;
&lt;br /&gt;
In order to define a System, go to {{VULCON}} core view and insert the System CREDIT. Inside of it create the Channel CHANNEL_CREDIT_WS in order to create an &amp;quot;internal&amp;quot; [[Participant]]. We also create the System CREDIT_EXTERNAL with the Channel CHANNEL_CREDIT_EXT corresponding to an &amp;quot;external&amp;quot; [[Participant]]. &lt;br /&gt;
&lt;br /&gt;
Note that the easiest way to configure a [[Web Services|Web service]] with {{L_VULCON}} is using the Wizard. We start from a [http://en.wikipedia.org/wiki/Web_service Web Service] WSDL, that describes a withdrawal operation on a credit card.&lt;br /&gt;
&lt;br /&gt;
From the Core view of {{L_VULCON}}, right clicking the Services element, launch the [[Wizard Call Web Service]] and, after selecting the WSDL file -in this example we use [[ExternalCreditService.wsdl]] present in folder &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl-, choose the parameters to create the {{GVESB}} service.&lt;br /&gt;
&lt;br /&gt;
A two new Services, Pay and Query, and two [[ws-call]] operations, pay and query will be created into the System CREDIT, channel CREDIT_EXTERNAL.  We changed those names to CCardPay and CCardQuery for the services, PayExternal and QueryExternal for the [[ws-call]] operations respectively. Now you can modify your workflow.&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, element System &amp;quot;CREDIT&amp;quot; -&amp;gt; Channel &amp;quot;CHANNEL_CREDIT_WS&amp;quot;, insert a [[dh-call]] operation and set its attributes and sub-elements as follow:&lt;br /&gt;
&lt;br /&gt;
* [[dh-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| name || DataHandler&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/DBOBuilder || name=&amp;quot;CREDIT::CCardPay&amp;quot; &amp;lt;br/&amp;gt; jdbc-connection-name=&amp;quot;ds.test_gv&amp;quot; &amp;lt;br/&amp;gt; &lt;br /&gt;
DHVariables:&lt;br /&gt;
: name=&amp;quot;decimal-separator&amp;quot; value=&amp;quot;.&amp;quot;&lt;br /&gt;
: name=&amp;quot;grouping-separator&amp;quot; value=&amp;quot;,&amp;quot;&lt;br /&gt;
: name=&amp;quot;format&amp;quot; value=&amp;quot;#0.00&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[dh-call]]/DBOBuilder/DBOUpdate || name=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; transformation=&amp;quot;CCardPay&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;dbo&amp;quot; &amp;lt;br/&amp;gt;statement:&lt;br /&gt;
: id=&amp;quot;0&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;update&amp;quot;&lt;br /&gt;
 update CREDIT_CARD  set CREDIT= CREDIT - ?&lt;br /&gt;
 where CNUMBER=?&lt;br /&gt;
    and ENABLED='Y'&lt;br /&gt;
    and CREDIT &amp;gt;= ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The operation defined in the DataHandler makes use of the ''data-transformation'' module for the data transformations that allows to have data in XML format. So, you need to define the following parameters into the [[GVDataTransformation]] section:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#DataSourceSet|DataSourceSet]]/[[GVDataTransformation#LocalFSDataSource|LocalFSDataSource]] || formatHandled=&amp;quot;xsl&amp;quot; name=&amp;quot;XSLDataSource&amp;quot; &amp;lt;br/&amp;gt; repositoryHome=&amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/gvdte/datasource/xsl&amp;quot;&amp;lt;/nowiki&amp;gt; &amp;lt;br/&amp;gt; type=&amp;quot;datasource&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;CCardPay&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot;  &amp;lt;br/&amp;gt; XSLMapName=&amp;quot;DataHandler/CREDIT/[[CCardPay.xsl]]&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalInput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[PayExternalInput.xsl]]&amp;quot;  &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVDataTransformation#XSLTransformation|XSLTransformation]] || name=&amp;quot;PayExternalOutput&amp;quot; DataSourceSet=&amp;quot;Default&amp;quot; &amp;lt;br/&amp;gt; XSLMapName=&amp;quot; CREDIT_EXTERNAL/[[PayExternalOutput.xsl]]&amp;quot; &amp;lt;br/&amp;gt; type=&amp;quot;transformation&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now define a [[ws-call]] operation into [[System]] CREDIT_EXTERNAL -&amp;gt; [[Channel]] CHANNEL_CREDIT_EXT. Its attributes and sub-elements defined will be setted as:&lt;br /&gt;
* [[ws-call]]:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| Name || PayExternal&lt;br /&gt;
|-&lt;br /&gt;
| [[Ws-call#AxisWebServiceInvoker|ws-call/AxisWebServiceInvoker]] || operation=&amp;quot;Pay&amp;quot; &amp;lt;br/&amp;gt; ref-dp=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&amp;lt;br/&amp;gt; returnType=&amp;quot;body-element&amp;quot;&amp;lt;br/&amp;gt; type=&amp;quot;invoker&amp;quot; &amp;lt;br/&amp;gt; WSDLInfo:&lt;br /&gt;
: type=&amp;quot;wsdlinfo&amp;quot;&lt;br /&gt;
: wsdl=&amp;quot;file://&amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/xmlconfig/wsdl/[[ExternalCreditService.wsdl]]&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ws-call operation already defined makes use of the [[Data provider]] module. So, you need to define the following parameters into the [[GVDataProviderManager]] section, present in the Adapter Core View of {{L_VULCON}}:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Element !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]] || name=&amp;quot;EXTERNAL::PayWSDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Axis2MessageContextDataProvider]]/Field || direction=&amp;quot;OUT&amp;quot; key=&amp;quot;message&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
Expression&lt;br /&gt;
: type=&amp;quot;ognl&amp;quot;&lt;br /&gt;
  envelope.body.addChild(@org.apache.axis2.util.XMLUtils&lt;br /&gt;
    @toOM(#input.object.getDocumentElement()))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flow implementation===&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesCCardPayFlow.jpg|thumb|CCardPay flow]] In order to define the CCardPay service [[Flow]] design it as shown in the picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The service receives a Web Service request from a client with a credit card number. If this card is managed locally, reads its data using [[DataHandler]], otherwise forwards the request to an external system using [[Web Services]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for each Flow node:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Value &lt;br /&gt;
|-&lt;br /&gt;
| first-node || Prepare&lt;br /&gt;
|-&lt;br /&gt;
| [[Conditions]]/GVBufferCondition || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt; Property:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot; operator=&amp;quot;equal&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;gvbuffer-field&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;true&amp;quot;&amp;lt;br/&amp;gt;value-type=&amp;quot;text&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || dump-in-out=&amp;quot;true&amp;quot; &amp;lt;br/&amp;gt;id=&amp;quot;prepare&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_internal&amp;quot; &amp;lt;br/&amp;gt;clear-data=&amp;quot;false&amp;quot; &amp;lt;br/&amp;gt;PropertyDef:&lt;br /&gt;
: name=&amp;quot;CNUMBER&amp;quot;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;value=&amp;quot;js{{gvesb::var doc=XMLUtils.parseDOM_S(new java.lang.String(object.getObject()),false,true); XMLConfig.get(doc,'//cred:cnumber')}}&amp;quot; &amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
PropertyDef:&lt;br /&gt;
: name=&amp;quot;IS_INTERNAL&amp;quot;&amp;lt;br/&amp;gt;value=&amp;quot;sql{{ds.test_gv::select decode(count(*), 1, 'true', 'false') from credit_card where &lt;br /&gt;
:: cnumber=ognl{{#object.getProperty('CNUMBER')}}}}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;pay_external&amp;quot;&amp;lt;br/&amp;gt; id=&amp;quot;check_internal&amp;quot;&amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;on-exception-id=&amp;quot;end&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]]/GVRouting || condition=&amp;quot;isInternalCCard&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;pay_internal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;pay_internal&amp;quot; &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot; &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot; &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot; &amp;lt;br/&amp;gt;operation-name=&amp;quot;DataHandler&amp;quot; &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || dump-in-out=&amp;quot;false&amp;quot;  &amp;lt;br/&amp;gt; id=&amp;quot;pay_external&amp;quot;  &amp;lt;br/&amp;gt;id-system=&amp;quot;CREDIT_EXTERNAL&amp;quot;  &amp;lt;br/&amp;gt; input=&amp;quot;input&amp;quot;  &amp;lt;br/&amp;gt;next-node-id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;call&amp;quot;  &amp;lt;br/&amp;gt;operation-name=&amp;quot;PayExternal&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/InputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalInput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service || critical=&amp;quot;yes&amp;quot; internal=&amp;quot;yes&amp;quot;&amp;lt;br/&amp;gt;remove-fields=&amp;quot;yes&amp;quot; type=&amp;quot;service&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/map-name-param || name=&amp;quot;map-name&amp;quot; value=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]]/OutputServices/gvdte-service/gvdte-context-call || name=&amp;quot;PayExternalOutput&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;yes&amp;quot;  &amp;lt;br/&amp;gt;id=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;  &amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=={{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
It is time to deploy and test your new Service. To do that follows these steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} Configuration file as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Sfoglia... (Browse) and select the file where you have saved the {{L_VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service CCardPay a new view will be open containing the files GVCore.xml present in local and in server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. Saving you return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{L_GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapters.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{L_GVCONSOLE}} section [[Testing]]. In this section you can finally test your new services:&lt;br /&gt;
# Into the Service voice select CCardPay&lt;br /&gt;
# Into the System voice select CREDIT_EXTERNAL&lt;br /&gt;
# Select the Payload on input containing the credit card number you want to use and the amount to reduce from.&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
The Testing View will be expanded and it is also possible to view the GVBuffer Output panel where there are present some properties, among these the REC_READ property setted to 1, representing the number of record read from DB. &lt;br /&gt;
&lt;br /&gt;
The file TestOutput.txt will be generated in the directory &amp;lt;nowiki&amp;gt;${{gv.app.home}}&amp;lt;/nowiki&amp;gt;/log as previously setted (see [[Testing]] area) containing information about the credit card numbers you passed in input and the number of records founded and updated.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----------- TEST N. 0 2012.03.02 at 14:11:38 -----------&lt;br /&gt;
Standard Field:&lt;br /&gt;
	system   = CREDIT_EXTERNAL&lt;br /&gt;
	service  = CCardPay&lt;br /&gt;
	id       = 7F0001014F50AFC600014063&lt;br /&gt;
	retCode  = 0&lt;br /&gt;
GVBuffer: NULL&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
	REC_DISCARD = 0&lt;br /&gt;
	IS_INTERNAL = true&lt;br /&gt;
	REC_TOTAL = 1&lt;br /&gt;
	REC_UPDATE = 1&lt;br /&gt;
	REC_INSERT = 0&lt;br /&gt;
	REC_READ = 0&lt;br /&gt;
	CNUMBER = 1234123415555666&lt;br /&gt;
	REC_DISCARD_CAUSE = &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4227</id>
		<title>GVExample TOUPPER A</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4227"/>
		<updated>2014-05-29T13:35:33Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Workflow Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This simple example shows how to configure an asynchronous service with a [[GVForwards|JMS Forward]] . &lt;br /&gt;
The Service TOUPPER_A is composed of three workflows that define the Client/ESB/Server interaction:&lt;br /&gt;
# the Client invokes the ''Request'' workflow to enqueue the input data into a request queue&lt;br /&gt;
# the [[GVForwards|JMS Forward]] (a {{GVESB}} component), listening on the request queue, extracts the JMS message and invokes the ''FWD_TOUPPER_A'' workflow that converts the payload to uppercase (simulate a Server invocation) then enqueues the new payload into a response queue&lt;br /&gt;
# the Client invokes the ''getReply'' workflow to dequeue the output data from a response queue&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
&lt;br /&gt;
The preferred mode for creating a Service (at least its skeleton) is through the Service Wizard. Before using it you must first configure the JMS Queue and the VCL plugins to interact with the JMS queue and execute the uppercase conversion. So let's define a new Group, System and Channel, if you do not want to use those already present, and then start the Wizard. &lt;br /&gt;
&lt;br /&gt;
===Configuring JMS queues in JBoss===&lt;br /&gt;
&lt;br /&gt;
The JMS queues are configured in JBoss by an XML file, ''gvesb-mq-destinations-service.xml'' present in &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/application/deploy.&lt;br /&gt;
&lt;br /&gt;
A queue has:&lt;br /&gt;
* A name that serves to identify it to JBoss.&lt;br /&gt;
* A JNDI Name used by a client to connect to the queue.&lt;br /&gt;
* MaxDeliveryAttempts (optional), to indicate how many times a message is put back into the queue for processing if the application does not confirm its reading.&lt;br /&gt;
* RedeliveryDelay (optional), to indicate the delay (in ms) after a message will be put back into the queue if the application does not confirm its reading.&lt;br /&gt;
&lt;br /&gt;
The JndiName can be checked using the JBoss's jmx-console to find the MBean &amp;quot;service=JNDIView&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
In this example we use 2 queues:&lt;br /&gt;
* ''TOUPPER_A_Request_Queue''&lt;br /&gt;
* ''TOUPPER_A_Response_Queue''&lt;br /&gt;
&lt;br /&gt;
To configure both queues go to the configuration file and insert the following MBean definitions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Defining Group, System and Channel===&lt;br /&gt;
&lt;br /&gt;
From the core view:&lt;br /&gt;
# Right click the element Groups -&amp;gt; Insert after (or Insert before) -&amp;gt; Group. A new element Group will be created. &lt;br /&gt;
# Click on the Group new element and set the attribute ''id-group'' from the Properties View. We named it DEFAULT_GRP&lt;br /&gt;
# Expand the GVSystems item.&lt;br /&gt;
# Right clicking on Systems, insert-after -&amp;gt; System. A new element System will be created.&lt;br /&gt;
# Set the [[System]] parameters in the [[VulCon_perspective|Properties panel]]. We named it GVESB_TEST&lt;br /&gt;
# You can insert a new [[Channel]] right clicking the new [[System]] element -&amp;gt; Insert after (or Insert before) -&amp;gt; Channel*. A new Channel element will be created&lt;br /&gt;
# Click on this new Channel element and set the property ''id_channel''. We named it TEST_CHANNEL_A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Defining Workflow Operations===&lt;br /&gt;
&lt;br /&gt;
Once you have created the [[Channel]], insert into the operations you need for the workflow. In this case:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Plugin !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&amp;lt;br/&amp;gt;(You can find XAHelper section by adding it on the queue)&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;lt;br/&amp;gt; receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[test-service-call]] || name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ''WriteString_JMSBytesMessageDataProvider'' creates a JMS BytesMessage and write in its body the expected input java.lang.String converted to byte[].&amp;lt;br/&amp;gt;&lt;br /&gt;
The ''ReadString_JMSBytesMessageDataProvider'' extract the input JMS BytesMessage body as byte[] and convert it into a java.lang.String.&amp;lt;br/&amp;gt;&lt;br /&gt;
Check that [[Data provider|Data Providers]] ''WriteString_JMSBytesMessageDataProvider'' and ''ReadString_JMSBytesMessageDataProvider'' are present in the element DataProviders (JMSBytesMessageDataProvider and StringDataProvider respectively), visualized from the {{VULCON}} Adapter view. If don't, you can add it setting their attributes as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Data Provider !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]] || name=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/[[Field]] || direction=&amp;quot;OUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;output&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;writeBytes(#input.object.getBytes('UTF-8'))&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]] || name=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/[[Field]] || direction=&amp;quot;INOUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;buffer&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;#bArr = new byte[object.getBodyLength()], object.reset(), object.readBytes(#bArr), new java.lang.String(#bArr, 'UTF-8')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:NewServiceWizard.jpg|thumb|New {{GVESB}} Service Wizard]]Now we are able to use the Wizard.&lt;br /&gt;
# From the Core View of {{VULCON}}. Right click the element Services -&amp;gt; Wizard New Service&lt;br /&gt;
# A new windows will be open where you can set the name of the Service you want to create, in this case we named TOUPPER_A, and your Group, we used DEFAULT_GRP. You can also select the paradigm, for this example will be [[Paradigms_of_communication#asynchronous-synchronous|asynchronous-synchronous]]. Click next.&lt;br /&gt;
# Set System as GVESB_TEST and Channel as TEST_CHANNEL_A. Then chose as Request Operation ''JMSEnqueueTo::TOUPPER_A_Req'', and the response Operation ''toupper_call''. Then finish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER_AEditor.jpg |thumb |TOUPPER_A flow]]As you can see from the core view, inside the Services element, a new Service named TOUPPER_A has been created.&amp;lt;br/&amp;gt;This service contains three Operations (Workflows)&lt;br /&gt;
We setted the first one as a Request (to enqueue), and the second as a GetReply (to dequeue).&lt;br /&gt;
Nodes will be setted as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Node !! Request !! GetReply&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;[[Op-type#DequeueFilter|DequeueFilter]]:&lt;br /&gt;
: [[Op-type#IDFilter|IDFilter]]&lt;br /&gt;
:: enabled=&amp;quot;yes&amp;quot; use-input=&amp;quot;yes&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVNodeCheck]] || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot; || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Operation FWD_TOUPPER_A will be configured as follow:&lt;br /&gt;
Attributes: name=&amp;quot;Forward&amp;quot; operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Nodes/Subelements !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;input&amp;quot;&amp;lt;br/&amp;gt; next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&amp;lt;br/&amp;gt;  operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVOperationNode]] || id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt; operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[GVEndNode]] || end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot; &amp;lt;br/&amp;gt; ChangeGVBuffer: clear-data=&amp;quot;true&amp;quot;&lt;br /&gt;
|}                      &lt;br /&gt;
&lt;br /&gt;
The GVCore.xml configuration file will be changed as follow:&lt;br /&gt;
* Into ''GVForwards'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ForwardConfiguration dump-message=&amp;quot;true&amp;quot; enabled=&amp;quot;true&amp;quot;&lt;br /&gt;
                      forwardName=&amp;quot;FWD_TOUPPER_A&amp;quot; name=&amp;quot;ToupperA&amp;quot;&lt;br /&gt;
                      ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ForwardDeployment connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot; reconnect-interval-sec=&amp;quot;10&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;true&amp;quot; transaction-timeout-sec=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ForwardDeployment&amp;gt;&lt;br /&gt;
&amp;lt;/ForwardConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''Services'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Service group-name=&amp;quot;DEFAULT_GRP&amp;quot; id-service=&amp;quot;TOUPPER_A&amp;quot;&lt;br /&gt;
         service-activation=&amp;quot;on&amp;quot; statistics=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Operation name=&amp;quot;Request&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
               out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                           default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                           input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                           on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                           point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Flow&amp;gt;&lt;br /&gt;
     &amp;lt;/Operation&amp;gt;&lt;br /&gt;
     &amp;lt;Operation name=&amp;quot;GetReply&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
                out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                              id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                              input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&lt;br /&gt;
                              operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;DequeueFilter&amp;gt;&lt;br /&gt;
                            &amp;lt;IDFilter enabled=&amp;quot;yes&amp;quot; name=&amp;quot;IDFilter&amp;quot; type=&amp;quot;filter&amp;quot;&lt;br /&gt;
                                      use-input=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/DequeueFilter&amp;gt;&lt;br /&gt;
             &amp;lt;/GVOperationNode&amp;gt;&lt;br /&gt;
             &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                          default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                          input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
                          on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                          point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot; &lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
    &amp;lt;Operation forward-name=&amp;quot;FWD_TOUPPER_A&amp;quot; name=&amp;quot;Forward&amp;quot;&lt;br /&gt;
               operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
               type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;call_server&amp;quot; point-x=&amp;quot;20&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;call_server&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot; input=&amp;quot;input&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;147&amp;quot; point-y=&amp;quot;148&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&lt;br /&gt;
                               op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output&amp;quot; point-x=&amp;quot;319&amp;quot; point-y=&amp;quot;152&amp;quot;&lt;br /&gt;
                               type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output&amp;quot; point-x=&amp;quot;532&amp;quot; point-y=&amp;quot;149&amp;quot;&lt;br /&gt;
                         type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ChangeGVBuffer clear-data=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/GVEndNode&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
&amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''System'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Channel id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-dequeue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSDequeueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                       receive-timeout-overridable=&amp;quot;false&amp;quot;&lt;br /&gt;
                       receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;dequeue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
           &amp;lt;/jms-dequeue&amp;gt;&lt;br /&gt;
           &amp;lt;test-service-call class=&amp;quot;it.greenvulcano.gvesb.virtual.internal.TestServiceCall&amp;quot;&lt;br /&gt;
                              name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot; type=&amp;quot;call&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Channel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are able to test your first {{VULCON}} service from the {{L_GVCONSOLE}}. But first you need to export the configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER5.jpg|thumb|Exporting configuration]]Once the flow is correctly configured, the user can export the configuration and pass it to the {{GVESB}} import tool, in order to add into the {{GVESB}} the service just created.&lt;br /&gt;
&lt;br /&gt;
# The Export function is available in the view &amp;quot;Project&amp;quot;. Expand the project&lt;br /&gt;
# Before you proceed press F5 to refresh the file list.&lt;br /&gt;
# Right click the ''conf'' folder. It will open a drop-down list. &lt;br /&gt;
# Export your project as a compressed file.&lt;br /&gt;
&lt;br /&gt;
===Testing with {{GVCONSOLE}}===&lt;br /&gt;
&lt;br /&gt;
It is finally the time to test your project. To do that execute the following steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} project as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse and select the file where you saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Selecting the TOUPPER_A service a new view will be shown. In this view is the contents of the file GVCore.xml in the local version and the one on the server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. By saving you will return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapter.xml, then Reload.&lt;br /&gt;
# Finally confirm the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new service. Remember that Service TOUPPER_A is composed by three independent Operations:&lt;br /&gt;
&lt;br /&gt;
*'''Request'''&lt;br /&gt;
# Into the Service field select TOUPPER_A&lt;br /&gt;
# Into the System field select GVESB_TEST&lt;br /&gt;
# Into the Payload area insert the text to convert in uppercase&lt;br /&gt;
# Click Request&lt;br /&gt;
&lt;br /&gt;
*'''FWD_TOUPPER_A''', executed by {{GVESB}} [[GVForwards|JMS Forward]].&lt;br /&gt;
&lt;br /&gt;
*'''getReply'''&lt;br /&gt;
# Clear the Payload area&lt;br /&gt;
# Click getReply&lt;br /&gt;
&lt;br /&gt;
When each test completes, the Testing view will be expanded for containing the GVBUFFER OUTPUT. In this case no properties have been defined, thus only main informations about the process (System, Service, Id, etc.) are shown. To view the service payload output click on ''Show as Text'' button. Standard fields and the detailed GVBuffer are described in the [[Testing#Data_input|Output File Name]] (the default location is &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/TestOutput.txt). &lt;br /&gt;
&lt;br /&gt;
In case of error or exceptions you can review the logs file in the &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/ folder.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4226</id>
		<title>GVExample TOUPPER A</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4226"/>
		<updated>2014-05-29T11:02:59Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Testing with {{GVCONSOLE}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This simple example shows how to configure an asynchronous service with a [[GVForwards|JMS Forward]] . &lt;br /&gt;
The Service TOUPPER_A is composed of three workflows that define the Client/ESB/Server interaction:&lt;br /&gt;
# the Client invokes the ''Request'' workflow to enqueue the input data into a request queue&lt;br /&gt;
# the [[GVForwards|JMS Forward]] (a {{GVESB}} component), listening on the request queue, extracts the JMS message and invokes the ''FWD_TOUPPER_A'' workflow that converts the payload to uppercase (simulate a Server invocation) then enqueues the new payload into a response queue&lt;br /&gt;
# the Client invokes the ''getReply'' workflow to dequeue the output data from a response queue&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
&lt;br /&gt;
The preferred mode for creating a Service (at least its skeleton) is through the Service Wizard. Before using it you must first configure the JMS Queue and the VCL plugins to interact with the JMS queue and execute the uppercase conversion. So let's define a new Group, System and Channel, if you do not want to use those already present, and then start the Wizard. &lt;br /&gt;
&lt;br /&gt;
===Configuring JMS queues in JBoss===&lt;br /&gt;
&lt;br /&gt;
The JMS queues are configured in JBoss by an XML file, ''gvesb-mq-destinations-service.xml'' present in &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/application/deploy.&lt;br /&gt;
&lt;br /&gt;
A queue has:&lt;br /&gt;
* A name that serves to identify it to JBoss.&lt;br /&gt;
* A JNDI Name used by a client to connect to the queue.&lt;br /&gt;
* MaxDeliveryAttempts (optional), to indicate how many times a message is put back into the queue for processing if the application does not confirm its reading.&lt;br /&gt;
* RedeliveryDelay (optional), to indicate the delay (in ms) after a message will be put back into the queue if the application does not confirm its reading.&lt;br /&gt;
&lt;br /&gt;
The JndiName can be checked using the JBoss's jmx-console to find the MBean &amp;quot;service=JNDIView&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
In this example we use 2 queues:&lt;br /&gt;
* ''TOUPPER_A_Request_Queue''&lt;br /&gt;
* ''TOUPPER_A_Response_Queue''&lt;br /&gt;
&lt;br /&gt;
To configure both queues go to the configuration file and insert the following MBean definitions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Defining Group, System and Channel===&lt;br /&gt;
&lt;br /&gt;
From the core view:&lt;br /&gt;
# Right click the element Groups -&amp;gt; Insert after (or Insert before) -&amp;gt; Group. A new element Group will be created. &lt;br /&gt;
# Click on the Group new element and set the attribute ''id-group'' from the Properties View. We named it DEFAULT_GRP&lt;br /&gt;
# Expand the GVSystems item.&lt;br /&gt;
# Right clicking on Systems, insert-after -&amp;gt; System. A new element System will be created.&lt;br /&gt;
# Set the [[System]] parameters in the [[VulCon_perspective|Properties panel]]. We named it GVESB_TEST&lt;br /&gt;
# You can insert a new [[Channel]] right clicking the new [[System]] element -&amp;gt; Insert after (or Insert before) -&amp;gt; Channel*. A new Channel element will be created&lt;br /&gt;
# Click on this new Channel element and set the property ''id_channel''. We named it TEST_CHANNEL_A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Defining Workflow Operations===&lt;br /&gt;
&lt;br /&gt;
Once you have created the [[Channel]], insert into the operations you need for the workflow. In this case:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Plugin !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&amp;lt;br/&amp;gt;(You can find XAHelper section by adding it on the queue)&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;lt;br/&amp;gt; receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[test-service-call]] || name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ''WriteString_JMSBytesMessageDataProvider'' creates a JMS BytesMessage and write in its body the expected input java.lang.String converted to byte[].&amp;lt;br/&amp;gt;&lt;br /&gt;
The ''ReadString_JMSBytesMessageDataProvider'' extract the input JMS BytesMessage body as byte[] and convert it into a java.lang.String.&amp;lt;br/&amp;gt;&lt;br /&gt;
Check that [[Data provider|Data Providers]] ''WriteString_JMSBytesMessageDataProvider'' and ''ReadString_JMSBytesMessageDataProvider'' are present in the element DataProviders (JMSBytesMessageDataProvider and StringDataProvider respectively), visualized from the {{VULCON}} Adapter view. If don't, you can add it setting their attributes as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Data Provider !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]] || name=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/[[Field]] || direction=&amp;quot;OUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;output&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;writeBytes(#input.object.getBytes('UTF-8'))&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]] || name=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/[[Field]] || direction=&amp;quot;INOUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;buffer&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;#bArr = new byte[object.getBodyLength()], object.reset(), object.readBytes(#bArr), new java.lang.String(#bArr, 'UTF-8')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:NewServiceWizard.jpg|thumb|New {{GVESB}} Service Wizard]]Now we are able to use the Wizard.&lt;br /&gt;
# From the Core View of {{VULCON}}. Right click the element Services -&amp;gt; Wizard New Service&lt;br /&gt;
# A new windows will be open where you can set the name of the Service you want to create, in this case we named TOUPPER_A, and your Group, we used DEFAULT_GRP. You can also select the paradigm, for this example will be [[Paradigms_of_communication#asynchronous-synchronous|asynchronous-synchronous]]. Click next.&lt;br /&gt;
# Set System as GVESB_TEST and Channel as TEST_CHANNEL_A. Then chose as Request Operation ''JMSEnqueueTo::TOUPPER_A_Req'', and the response Operation ''toupper_call''. Then finish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER_AEditor.jpg |thumb |TOUPPER_A flow]]As you can see from the core view, inside the Services element, a new Service named TOUPPER_A has been created.&amp;lt;br/&amp;gt;This service contains three Operations (Workflows)&lt;br /&gt;
We setted the first one as a Request (to enqueue), and the second as a GetReply (to dequeue).&lt;br /&gt;
Nodes will be setted as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Node !! Request !! GetReply&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;DequeueFilter:&lt;br /&gt;
: IDFilter&lt;br /&gt;
:: enabled=&amp;quot;yes&amp;quot; use-input=&amp;quot;yes&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVNodeCheck || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot; || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Operation FWD_TOUPPER_A will be configured as follow:&lt;br /&gt;
Attributes: name=&amp;quot;Forward&amp;quot; operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Nodes/Subelements !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;input&amp;quot;&amp;lt;br/&amp;gt; next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&amp;lt;br/&amp;gt;  operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt; operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot; &amp;lt;br/&amp;gt; ChangeGVBuffer: clear-data=&amp;quot;true&amp;quot;&lt;br /&gt;
|}                      &lt;br /&gt;
&lt;br /&gt;
The GVCore.xml configuration file will be changed as follow:&lt;br /&gt;
* Into ''GVForwards'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ForwardConfiguration dump-message=&amp;quot;true&amp;quot; enabled=&amp;quot;true&amp;quot;&lt;br /&gt;
                      forwardName=&amp;quot;FWD_TOUPPER_A&amp;quot;&lt;br /&gt;
                      ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ForwardDeployment connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot; reconnect-interval-sec=&amp;quot;10&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;true&amp;quot; transaction-timeout-sec=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ForwardDeployment&amp;gt;&lt;br /&gt;
&amp;lt;/ForwardConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''Services'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Service group-name=&amp;quot;DEFAULT_GRP&amp;quot; id-service=&amp;quot;TOUPPER_A&amp;quot;&lt;br /&gt;
         service-activation=&amp;quot;on&amp;quot; statistics=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Operation name=&amp;quot;Request&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
               out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                           default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                           input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                           on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                           point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Flow&amp;gt;&lt;br /&gt;
     &amp;lt;/Operation&amp;gt;&lt;br /&gt;
     &amp;lt;Operation name=&amp;quot;GetReply&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
                out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                              id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                              input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&lt;br /&gt;
                              operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;DequeueFilter&amp;gt;&lt;br /&gt;
                            &amp;lt;IDFilter enabled=&amp;quot;yes&amp;quot; name=&amp;quot;IDFilter&amp;quot; type=&amp;quot;filter&amp;quot;&lt;br /&gt;
                                      use-input=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/DequeueFilter&amp;gt;&lt;br /&gt;
             &amp;lt;/GVOperationNode&amp;gt;&lt;br /&gt;
             &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                          default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                          input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
                          on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                          point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot; &lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
    &amp;lt;Operation forward-name=&amp;quot;FWD_TOUPPER_A&amp;quot; name=&amp;quot;Forward&amp;quot;&lt;br /&gt;
               operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
               type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;call_server&amp;quot; point-x=&amp;quot;20&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;call_server&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot; input=&amp;quot;input&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;147&amp;quot; point-y=&amp;quot;148&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&lt;br /&gt;
                               op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output&amp;quot; point-x=&amp;quot;319&amp;quot; point-y=&amp;quot;152&amp;quot;&lt;br /&gt;
                               type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output&amp;quot; point-x=&amp;quot;532&amp;quot; point-y=&amp;quot;149&amp;quot;&lt;br /&gt;
                         type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ChangeGVBuffer clear-data=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/GVEndNode&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
&amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''System'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Channel id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-dequeue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSDequeueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                       receive-timeout-overridable=&amp;quot;false&amp;quot;&lt;br /&gt;
                       receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;dequeue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
           &amp;lt;/jms-dequeue&amp;gt;&lt;br /&gt;
           &amp;lt;test-service-call class=&amp;quot;it.greenvulcano.gvesb.virtual.internal.TestServiceCall&amp;quot;&lt;br /&gt;
                              name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot; type=&amp;quot;call&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Channel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are able to test your first {{VULCON}} service from the {{L_GVCONSOLE}}. But first you need to export the configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER5.jpg|thumb|Exporting configuration]]Once the flow is correctly configured, the user can export the configuration and pass it to the {{GVESB}} import tool, in order to add into the {{GVESB}} the service just created.&lt;br /&gt;
&lt;br /&gt;
# The Export function is available in the view &amp;quot;Project&amp;quot;. Expand the project&lt;br /&gt;
# Before you proceed press F5 to refresh the file list.&lt;br /&gt;
# Right click the ''conf'' folder. It will open a drop-down list. &lt;br /&gt;
# Export your project as a compressed file.&lt;br /&gt;
&lt;br /&gt;
===Testing with {{GVCONSOLE}}===&lt;br /&gt;
&lt;br /&gt;
It is finally the time to test your project. To do that execute the following steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} project as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse and select the file where you saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Selecting the TOUPPER_A service a new view will be shown. In this view is the contents of the file GVCore.xml in the local version and the one on the server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. By saving you will return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapter.xml, then Reload.&lt;br /&gt;
# Finally confirm the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new service. Remember that Service TOUPPER_A is composed by three independent Operations:&lt;br /&gt;
&lt;br /&gt;
*'''Request'''&lt;br /&gt;
# Into the Service field select TOUPPER_A&lt;br /&gt;
# Into the System field select GVESB_TEST&lt;br /&gt;
# Into the Payload area insert the text to convert in uppercase&lt;br /&gt;
# Click Request&lt;br /&gt;
&lt;br /&gt;
*'''FWD_TOUPPER_A''', executed by {{GVESB}} [[GVForwards|JMS Forward]].&lt;br /&gt;
&lt;br /&gt;
*'''getReply'''&lt;br /&gt;
# Clear the Payload area&lt;br /&gt;
# Click getReply&lt;br /&gt;
&lt;br /&gt;
When each test completes, the Testing view will be expanded for containing the GVBUFFER OUTPUT. In this case no properties have been defined, thus only main informations about the process (System, Service, Id, etc.) are shown. To view the service payload output click on ''Show as Text'' button. Standard fields and the detailed GVBuffer are described in the [[Testing#Data_input|Output File Name]] (the default location is &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/TestOutput.txt). &lt;br /&gt;
&lt;br /&gt;
In case of error or exceptions you can review the logs file in the &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/ folder.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4225</id>
		<title>GVExample TOUPPER A</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4225"/>
		<updated>2014-05-29T10:58:30Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Testing with {{GVCONSOLE}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This simple example shows how to configure an asynchronous service with a [[GVForwards|JMS Forward]] . &lt;br /&gt;
The Service TOUPPER_A is composed of three workflows that define the Client/ESB/Server interaction:&lt;br /&gt;
# the Client invokes the ''Request'' workflow to enqueue the input data into a request queue&lt;br /&gt;
# the [[GVForwards|JMS Forward]] (a {{GVESB}} component), listening on the request queue, extracts the JMS message and invokes the ''FWD_TOUPPER_A'' workflow that converts the payload to uppercase (simulate a Server invocation) then enqueues the new payload into a response queue&lt;br /&gt;
# the Client invokes the ''getReply'' workflow to dequeue the output data from a response queue&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
&lt;br /&gt;
The preferred mode for creating a Service (at least its skeleton) is through the Service Wizard. Before using it you must first configure the JMS Queue and the VCL plugins to interact with the JMS queue and execute the uppercase conversion. So let's define a new Group, System and Channel, if you do not want to use those already present, and then start the Wizard. &lt;br /&gt;
&lt;br /&gt;
===Configuring JMS queues in JBoss===&lt;br /&gt;
&lt;br /&gt;
The JMS queues are configured in JBoss by an XML file, ''gvesb-mq-destinations-service.xml'' present in &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/application/deploy.&lt;br /&gt;
&lt;br /&gt;
A queue has:&lt;br /&gt;
* A name that serves to identify it to JBoss.&lt;br /&gt;
* A JNDI Name used by a client to connect to the queue.&lt;br /&gt;
* MaxDeliveryAttempts (optional), to indicate how many times a message is put back into the queue for processing if the application does not confirm its reading.&lt;br /&gt;
* RedeliveryDelay (optional), to indicate the delay (in ms) after a message will be put back into the queue if the application does not confirm its reading.&lt;br /&gt;
&lt;br /&gt;
The JndiName can be checked using the JBoss's jmx-console to find the MBean &amp;quot;service=JNDIView&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
In this example we use 2 queues:&lt;br /&gt;
* ''TOUPPER_A_Request_Queue''&lt;br /&gt;
* ''TOUPPER_A_Response_Queue''&lt;br /&gt;
&lt;br /&gt;
To configure both queues go to the configuration file and insert the following MBean definitions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Defining Group, System and Channel===&lt;br /&gt;
&lt;br /&gt;
From the core view:&lt;br /&gt;
# Right click the element Groups -&amp;gt; Insert after (or Insert before) -&amp;gt; Group. A new element Group will be created. &lt;br /&gt;
# Click on the Group new element and set the attribute ''id-group'' from the Properties View. We named it DEFAULT_GRP&lt;br /&gt;
# Expand the GVSystems item.&lt;br /&gt;
# Right clicking on Systems, insert-after -&amp;gt; System. A new element System will be created.&lt;br /&gt;
# Set the [[System]] parameters in the [[VulCon_perspective|Properties panel]]. We named it GVESB_TEST&lt;br /&gt;
# You can insert a new [[Channel]] right clicking the new [[System]] element -&amp;gt; Insert after (or Insert before) -&amp;gt; Channel*. A new Channel element will be created&lt;br /&gt;
# Click on this new Channel element and set the property ''id_channel''. We named it TEST_CHANNEL_A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Defining Workflow Operations===&lt;br /&gt;
&lt;br /&gt;
Once you have created the [[Channel]], insert into the operations you need for the workflow. In this case:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Plugin !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&amp;lt;br/&amp;gt;(You can find XAHelper section by adding it on the queue)&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;lt;br/&amp;gt; receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[test-service-call]] || name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ''WriteString_JMSBytesMessageDataProvider'' creates a JMS BytesMessage and write in its body the expected input java.lang.String converted to byte[].&amp;lt;br/&amp;gt;&lt;br /&gt;
The ''ReadString_JMSBytesMessageDataProvider'' extract the input JMS BytesMessage body as byte[] and convert it into a java.lang.String.&amp;lt;br/&amp;gt;&lt;br /&gt;
Check that [[Data provider|Data Providers]] ''WriteString_JMSBytesMessageDataProvider'' and ''ReadString_JMSBytesMessageDataProvider'' are present in the element DataProviders (JMSBytesMessageDataProvider and StringDataProvider respectively), visualized from the {{VULCON}} Adapter view. If don't, you can add it setting their attributes as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Data Provider !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]] || name=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/[[Field]] || direction=&amp;quot;OUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;output&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;writeBytes(#input.object.getBytes('UTF-8'))&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]] || name=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/[[Field]] || direction=&amp;quot;INOUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;buffer&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;#bArr = new byte[object.getBodyLength()], object.reset(), object.readBytes(#bArr), new java.lang.String(#bArr, 'UTF-8')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:NewServiceWizard.jpg|thumb|New {{GVESB}} Service Wizard]]Now we are able to use the Wizard.&lt;br /&gt;
# From the Core View of {{VULCON}}. Right click the element Services -&amp;gt; Wizard New Service&lt;br /&gt;
# A new windows will be open where you can set the name of the Service you want to create, in this case we named TOUPPER_A, and your Group, we used DEFAULT_GRP. You can also select the paradigm, for this example will be [[Paradigms_of_communication#asynchronous-synchronous|asynchronous-synchronous]]. Click next.&lt;br /&gt;
# Set System as GVESB_TEST and Channel as TEST_CHANNEL_A. Then chose as Request Operation ''JMSEnqueueTo::TOUPPER_A_Req'', and the response Operation ''toupper_call''. Then finish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER_AEditor.jpg |thumb |TOUPPER_A flow]]As you can see from the core view, inside the Services element, a new Service named TOUPPER_A has been created.&amp;lt;br/&amp;gt;This service contains three Operations (Workflows)&lt;br /&gt;
We setted the first one as a Request (to enqueue), and the second as a GetReply (to dequeue).&lt;br /&gt;
Nodes will be setted as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Node !! Request !! GetReply&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;DequeueFilter:&lt;br /&gt;
: IDFilter&lt;br /&gt;
:: enabled=&amp;quot;yes&amp;quot; use-input=&amp;quot;yes&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVNodeCheck || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot; || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Operation FWD_TOUPPER_A will be configured as follow:&lt;br /&gt;
Attributes: name=&amp;quot;Forward&amp;quot; operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Nodes/Subelements !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;input&amp;quot;&amp;lt;br/&amp;gt; next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&amp;lt;br/&amp;gt;  operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt; operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot; &amp;lt;br/&amp;gt; ChangeGVBuffer: clear-data=&amp;quot;true&amp;quot;&lt;br /&gt;
|}                      &lt;br /&gt;
&lt;br /&gt;
The GVCore.xml configuration file will be changed as follow:&lt;br /&gt;
* Into ''GVForwards'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ForwardConfiguration dump-message=&amp;quot;true&amp;quot; enabled=&amp;quot;true&amp;quot;&lt;br /&gt;
                      forwardName=&amp;quot;FWD_TOUPPER_A&amp;quot;&lt;br /&gt;
                      ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ForwardDeployment connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot; reconnect-interval-sec=&amp;quot;10&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;true&amp;quot; transaction-timeout-sec=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ForwardDeployment&amp;gt;&lt;br /&gt;
&amp;lt;/ForwardConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''Services'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Service group-name=&amp;quot;DEFAULT_GRP&amp;quot; id-service=&amp;quot;TOUPPER_A&amp;quot;&lt;br /&gt;
         service-activation=&amp;quot;on&amp;quot; statistics=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Operation name=&amp;quot;Request&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
               out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                           default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                           input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                           on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                           point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Flow&amp;gt;&lt;br /&gt;
     &amp;lt;/Operation&amp;gt;&lt;br /&gt;
     &amp;lt;Operation name=&amp;quot;GetReply&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
                out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                              id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                              input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&lt;br /&gt;
                              operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;DequeueFilter&amp;gt;&lt;br /&gt;
                            &amp;lt;IDFilter enabled=&amp;quot;yes&amp;quot; name=&amp;quot;IDFilter&amp;quot; type=&amp;quot;filter&amp;quot;&lt;br /&gt;
                                      use-input=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/DequeueFilter&amp;gt;&lt;br /&gt;
             &amp;lt;/GVOperationNode&amp;gt;&lt;br /&gt;
             &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                          default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                          input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
                          on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                          point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot; &lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
    &amp;lt;Operation forward-name=&amp;quot;FWD_TOUPPER_A&amp;quot; name=&amp;quot;Forward&amp;quot;&lt;br /&gt;
               operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
               type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;call_server&amp;quot; point-x=&amp;quot;20&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;call_server&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot; input=&amp;quot;input&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;147&amp;quot; point-y=&amp;quot;148&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&lt;br /&gt;
                               op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output&amp;quot; point-x=&amp;quot;319&amp;quot; point-y=&amp;quot;152&amp;quot;&lt;br /&gt;
                               type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output&amp;quot; point-x=&amp;quot;532&amp;quot; point-y=&amp;quot;149&amp;quot;&lt;br /&gt;
                         type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ChangeGVBuffer clear-data=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/GVEndNode&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
&amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''System'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Channel id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-dequeue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSDequeueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                       receive-timeout-overridable=&amp;quot;false&amp;quot;&lt;br /&gt;
                       receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;dequeue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
           &amp;lt;/jms-dequeue&amp;gt;&lt;br /&gt;
           &amp;lt;test-service-call class=&amp;quot;it.greenvulcano.gvesb.virtual.internal.TestServiceCall&amp;quot;&lt;br /&gt;
                              name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot; type=&amp;quot;call&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Channel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are able to test your first {{VULCON}} service from the {{L_GVCONSOLE}}. But first you need to export the configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER5.jpg|thumb|Exporting configuration]]Once the flow is correctly configured, the user can export the configuration and pass it to the {{GVESB}} import tool, in order to add into the {{GVESB}} the service just created.&lt;br /&gt;
&lt;br /&gt;
# The Export function is available in the view &amp;quot;Project&amp;quot;. Expand the project&lt;br /&gt;
# Before you proceed press F5 to refresh the file list.&lt;br /&gt;
# Right click the ''conf'' folder. It will open a drop-down list. &lt;br /&gt;
# Export your project as a compressed file.&lt;br /&gt;
&lt;br /&gt;
===Testing with {{GVCONSOLE}}===&lt;br /&gt;
&lt;br /&gt;
It is finally the time to test your project. To do that execute the following steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} project as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse and select the file where you saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Selecting the TOUPPER_A service a new view will be shown. In this view is the contents of the file GVCore.xml in the local version and the one on the server.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. By saving you will return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapter.xml, then Reload.&lt;br /&gt;
# Finally confirm the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new service. Remember that Service TOUPPER_A is composed by three independent Operations:&lt;br /&gt;
&lt;br /&gt;
'''Request'''&lt;br /&gt;
# Into the Service field select TOUPPER_A&lt;br /&gt;
# Into the System field select GVESB_TEST&lt;br /&gt;
# Into the Payload area insert the text to convert in uppercase&lt;br /&gt;
# Click Request&lt;br /&gt;
&lt;br /&gt;
The '''FWD_TOUPPER_A''' is executed by {{GVESB}} [[GVForwards|JMS Forward]].&lt;br /&gt;
&lt;br /&gt;
'''getReply'''&lt;br /&gt;
# Clear the Payload area&lt;br /&gt;
# Click getReply&lt;br /&gt;
&lt;br /&gt;
When each test completes, the Testing view will be expanded for containing the GVBUFFER OUTPUT. In this case no properties have been defined, thus only main informations about the process (System, Service, Id, etc.) are shown. To view the service payload output click on ''Show as Text'' button. Standard fields and the detailed GVBuffer are described in the [[Testing#Data_input|Output File Name]] (the default location is &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/TestOutput.txt). &lt;br /&gt;
&lt;br /&gt;
In case of error or exceptions you can review the logs file in the &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/ folder.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4224</id>
		<title>GVExample TOUPPER A</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4224"/>
		<updated>2014-05-29T10:18:51Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This simple example shows how to configure an asynchronous service with a [[GVForwards|JMS Forward]] . &lt;br /&gt;
The Service TOUPPER_A is composed of three workflows that define the Client/ESB/Server interaction:&lt;br /&gt;
# the Client invokes the ''Request'' workflow to enqueue the input data into a request queue&lt;br /&gt;
# the [[GVForwards|JMS Forward]] (a {{GVESB}} component), listening on the request queue, extracts the JMS message and invokes the ''FWD_TOUPPER_A'' workflow that converts the payload to uppercase (simulate a Server invocation) then enqueues the new payload into a response queue&lt;br /&gt;
# the Client invokes the ''getReply'' workflow to dequeue the output data from a response queue&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
&lt;br /&gt;
The preferred mode for creating a Service (at least its skeleton) is through the Service Wizard. Before using it you must first configure the JMS Queue and the VCL plugins to interact with the JMS queue and execute the uppercase conversion. So let's define a new Group, System and Channel, if you do not want to use those already present, and then start the Wizard. &lt;br /&gt;
&lt;br /&gt;
===Configuring JMS queues in JBoss===&lt;br /&gt;
&lt;br /&gt;
The JMS queues are configured in JBoss by an XML file, ''gvesb-mq-destinations-service.xml'' present in &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/application/deploy.&lt;br /&gt;
&lt;br /&gt;
A queue has:&lt;br /&gt;
* A name that serves to identify it to JBoss.&lt;br /&gt;
* A JNDI Name used by a client to connect to the queue.&lt;br /&gt;
* MaxDeliveryAttempts (optional), to indicate how many times a message is put back into the queue for processing if the application does not confirm its reading.&lt;br /&gt;
* RedeliveryDelay (optional), to indicate the delay (in ms) after a message will be put back into the queue if the application does not confirm its reading.&lt;br /&gt;
&lt;br /&gt;
The JndiName can be checked using the JBoss's jmx-console to find the MBean &amp;quot;service=JNDIView&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
In this example we use 2 queues:&lt;br /&gt;
* ''TOUPPER_A_Request_Queue''&lt;br /&gt;
* ''TOUPPER_A_Response_Queue''&lt;br /&gt;
&lt;br /&gt;
To configure both queues go to the configuration file and insert the following MBean definitions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Defining Group, System and Channel===&lt;br /&gt;
&lt;br /&gt;
From the core view:&lt;br /&gt;
# Right click the element Groups -&amp;gt; Insert after (or Insert before) -&amp;gt; Group. A new element Group will be created. &lt;br /&gt;
# Click on the Group new element and set the attribute ''id-group'' from the Properties View. We named it DEFAULT_GRP&lt;br /&gt;
# Expand the GVSystems item.&lt;br /&gt;
# Right clicking on Systems, insert-after -&amp;gt; System. A new element System will be created.&lt;br /&gt;
# Set the [[System]] parameters in the [[VulCon_perspective|Properties panel]]. We named it GVESB_TEST&lt;br /&gt;
# You can insert a new [[Channel]] right clicking the new [[System]] element -&amp;gt; Insert after (or Insert before) -&amp;gt; Channel*. A new Channel element will be created&lt;br /&gt;
# Click on this new Channel element and set the property ''id_channel''. We named it TEST_CHANNEL_A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Defining Workflow Operations===&lt;br /&gt;
&lt;br /&gt;
Once you have created the [[Channel]], insert into the operations you need for the workflow. In this case:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Plugin !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&amp;lt;br/&amp;gt;(You can find XAHelper section by adding it on the queue)&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;lt;br/&amp;gt; receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[test-service-call]] || name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ''WriteString_JMSBytesMessageDataProvider'' creates a JMS BytesMessage and write in its body the expected input java.lang.String converted to byte[].&amp;lt;br/&amp;gt;&lt;br /&gt;
The ''ReadString_JMSBytesMessageDataProvider'' extract the input JMS BytesMessage body as byte[] and convert it into a java.lang.String.&amp;lt;br/&amp;gt;&lt;br /&gt;
Check that [[Data provider|Data Providers]] ''WriteString_JMSBytesMessageDataProvider'' and ''ReadString_JMSBytesMessageDataProvider'' are present in the element DataProviders (JMSBytesMessageDataProvider and StringDataProvider respectively), visualized from the {{VULCON}} Adapter view. If don't, you can add it setting their attributes as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Data Provider !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]] || name=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/[[Field]] || direction=&amp;quot;OUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;output&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;writeBytes(#input.object.getBytes('UTF-8'))&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]] || name=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/[[Field]] || direction=&amp;quot;INOUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;buffer&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;#bArr = new byte[object.getBodyLength()], object.reset(), object.readBytes(#bArr), new java.lang.String(#bArr, 'UTF-8')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:NewServiceWizard.jpg|thumb|New {{GVESB}} Service Wizard]]Now we are able to use the Wizard.&lt;br /&gt;
# From the Core View of {{VULCON}}. Right click the element Services -&amp;gt; Wizard New Service&lt;br /&gt;
# A new windows will be open where you can set the name of the Service you want to create, in this case we named TOUPPER_A, and your Group, we used DEFAULT_GRP. You can also select the paradigm, for this example will be [[Paradigms_of_communication#asynchronous-synchronous|asynchronous-synchronous]]. Click next.&lt;br /&gt;
# Set System as GVESB_TEST and Channel as TEST_CHANNEL_A. Then chose as Request Operation ''JMSEnqueueTo::TOUPPER_A_Req'', and the response Operation ''toupper_call''. Then finish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER_AEditor.jpg |thumb |TOUPPER_A flow]]As you can see from the core view, inside the Services element, a new Service named TOUPPER_A has been created.&amp;lt;br/&amp;gt;This service contains three Operations (Workflows)&lt;br /&gt;
We setted the first one as a Request (to enqueue), and the second as a GetReply (to dequeue).&lt;br /&gt;
Nodes will be setted as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Node !! Request !! GetReply&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;DequeueFilter:&lt;br /&gt;
: IDFilter&lt;br /&gt;
:: enabled=&amp;quot;yes&amp;quot; use-input=&amp;quot;yes&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVNodeCheck || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot; || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Operation FWD_TOUPPER_A will be configured as follow:&lt;br /&gt;
Attributes: name=&amp;quot;Forward&amp;quot; operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Nodes/Subelements !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;input&amp;quot;&amp;lt;br/&amp;gt; next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&amp;lt;br/&amp;gt;  operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt; operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot; &amp;lt;br/&amp;gt; ChangeGVBuffer: clear-data=&amp;quot;true&amp;quot;&lt;br /&gt;
|}                      &lt;br /&gt;
&lt;br /&gt;
The GVCore.xml configuration file will be changed as follow:&lt;br /&gt;
* Into ''GVForwards'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ForwardConfiguration dump-message=&amp;quot;true&amp;quot; enabled=&amp;quot;true&amp;quot;&lt;br /&gt;
                      forwardName=&amp;quot;FWD_TOUPPER_A&amp;quot;&lt;br /&gt;
                      ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ForwardDeployment connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot; reconnect-interval-sec=&amp;quot;10&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;true&amp;quot; transaction-timeout-sec=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ForwardDeployment&amp;gt;&lt;br /&gt;
&amp;lt;/ForwardConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''Services'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Service group-name=&amp;quot;DEFAULT_GRP&amp;quot; id-service=&amp;quot;TOUPPER_A&amp;quot;&lt;br /&gt;
         service-activation=&amp;quot;on&amp;quot; statistics=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Operation name=&amp;quot;Request&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
               out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                           default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                           input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                           on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                           point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Flow&amp;gt;&lt;br /&gt;
     &amp;lt;/Operation&amp;gt;&lt;br /&gt;
     &amp;lt;Operation name=&amp;quot;GetReply&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
                out-check-type=&amp;quot;sys-svc-id&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                              id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                              input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&lt;br /&gt;
                              operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;DequeueFilter&amp;gt;&lt;br /&gt;
                            &amp;lt;IDFilter enabled=&amp;quot;yes&amp;quot; name=&amp;quot;IDFilter&amp;quot; type=&amp;quot;filter&amp;quot;&lt;br /&gt;
                                      use-input=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/DequeueFilter&amp;gt;&lt;br /&gt;
             &amp;lt;/GVOperationNode&amp;gt;&lt;br /&gt;
             &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                          default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                          input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
                          on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                          point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot; &lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
    &amp;lt;Operation forward-name=&amp;quot;FWD_TOUPPER_A&amp;quot; name=&amp;quot;Forward&amp;quot;&lt;br /&gt;
               operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
               type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;call_server&amp;quot; point-x=&amp;quot;20&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;call_server&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot; input=&amp;quot;input&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;147&amp;quot; point-y=&amp;quot;148&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&lt;br /&gt;
                               op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output&amp;quot; point-x=&amp;quot;319&amp;quot; point-y=&amp;quot;152&amp;quot;&lt;br /&gt;
                               type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output&amp;quot; point-x=&amp;quot;532&amp;quot; point-y=&amp;quot;149&amp;quot;&lt;br /&gt;
                         type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ChangeGVBuffer clear-data=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/GVEndNode&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
&amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''System'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Channel id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-dequeue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSDequeueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                       receive-timeout-overridable=&amp;quot;false&amp;quot;&lt;br /&gt;
                       receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;dequeue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
           &amp;lt;/jms-dequeue&amp;gt;&lt;br /&gt;
           &amp;lt;test-service-call class=&amp;quot;it.greenvulcano.gvesb.virtual.internal.TestServiceCall&amp;quot;&lt;br /&gt;
                              name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot; type=&amp;quot;call&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Channel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are able to test your first {{VULCON}} service from the {{L_GVCONSOLE}}. But first you need to export the configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER5.jpg|thumb|Exporting configuration]]Once the flow is correctly configured, the user can export the configuration and pass it to the {{GVESB}} import tool, in order to add into the {{GVESB}} the service just created.&lt;br /&gt;
&lt;br /&gt;
# The Export function is available in the view &amp;quot;Project&amp;quot;. Expand the project&lt;br /&gt;
# Before you proceed press F5 to refresh the file list.&lt;br /&gt;
# Right click the ''conf'' folder. It will open a drop-down list. &lt;br /&gt;
# Export your project as a compressed file.&lt;br /&gt;
&lt;br /&gt;
===Testing with {{GVCONSOLE}}===&lt;br /&gt;
&lt;br /&gt;
It is finally the time to test your project. To do that execute the following steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} project as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse and select the file where you saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service TOUPPER_A a new view will be showed containing the files GVCore.xml present in local and on server side.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. By saving you will return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapter.xml, then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new service. Remember that Service TOUPPER_A is composed by three independent Operations:&lt;br /&gt;
&lt;br /&gt;
'''Request'''&lt;br /&gt;
# Into the Service field select TOUPPER_A&lt;br /&gt;
# Into the System field select GVESB_TEST&lt;br /&gt;
# Into the Payload area insert the text to convert in uppercase&lt;br /&gt;
# Click Request&lt;br /&gt;
&lt;br /&gt;
The '''FWD_TOUPPER_A''' is executed by {{GVESB}} [[GVForwards|JMS Forward]].&lt;br /&gt;
&lt;br /&gt;
'''getReply'''&lt;br /&gt;
# Clear the Payload area&lt;br /&gt;
# Click getReply&lt;br /&gt;
&lt;br /&gt;
When each test completes, the Testing view will be expanded for containing the GVBUFFER OUTPUT. In this case no properties have been defined so there are only be presents the main informations about the process (System, Service, Id, etc.). To view the service payload output click on ''Show as Text'' button. Standard fields and the detailed GVBuffer are described in the [[Testing#Data_input|Output File Name]] (the default location is &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/TestOutput.txt). &lt;br /&gt;
&lt;br /&gt;
In case of error or exceptions you can review the logs file present in the folder &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4223</id>
		<title>GVExample TOUPPER A</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER_A&amp;diff=4223"/>
		<updated>2014-05-28T16:38:07Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Defining Workflow Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This simple example shows how to configure an asynchronous service with a [[GVForwards|JMS Forward]] . &lt;br /&gt;
The Service TOUPPER_A is composed of three workflows that define the Client/ESB/Server interaction:&lt;br /&gt;
# the Client invokes the ''Request'' workflow to enqueue the input data into a request queue&lt;br /&gt;
# the [[GVForwards|JMS Forward]] (a {{GVESB}} component), listening on the request queue, extracts the JMS message and invokes the ''FWD_TOUPPER_A'' workflow that converts the payload to uppercase (simulate a Server invocation) then enqueues the new payload into a response queue&lt;br /&gt;
# the Client invokes the ''getReply'' workflow to dequeue the output data from a response queue&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
&lt;br /&gt;
The preferred mode for creating a Service (at least its skeleton) is through the Service Wizard. Before using it you must first configure the JMS Queue and the VCL plugins to interact with the JMS queue and execute the uppercase conversion. So let's define a new Group, System and Channel, if you do not want to use those already present, and then start the Wizard. &lt;br /&gt;
&lt;br /&gt;
===Configuring JMS queues in JBoss===&lt;br /&gt;
&lt;br /&gt;
The JMS queues are configured in JBoss by an XML file, ''gvesb-mq-destinations-service.xml'' present in &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/application/deploy.&lt;br /&gt;
&lt;br /&gt;
A queue has:&lt;br /&gt;
* A name that serves to identify it to JBoss.&lt;br /&gt;
* A JNDI Name used by a client to connect to the queue.&lt;br /&gt;
* MaxDeliveryAttempts (optional), to indicate how many times a message is put back into the queue for processing if the application does not confirm its reading.&lt;br /&gt;
* RedeliveryDelay (optional), to indicate the delay (in ms) after a message will be put back into the queue if the application does not confirm its reading.&lt;br /&gt;
&lt;br /&gt;
The JndiName can be checked using the JBoss's jmx-console to find the MBean &amp;quot;service=JNDIView&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
In this example we use 2 queues:&lt;br /&gt;
* ''TOUPPER_A_Request_Queue''&lt;br /&gt;
* ''TOUPPER_A_Response_Queue''&lt;br /&gt;
&lt;br /&gt;
To configure both queues go to the configuration file and insert the following MBean definitions:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;mbean code=&amp;quot;org.jboss.jms.server.destination.QueueService&amp;quot;&lt;br /&gt;
           name=&amp;quot;jboss.messaging.destination:service=Queue,name=TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
           xmbean-dd=&amp;quot;xmdesc/Queue-xmbean.xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;depends optional-attribute-name=&amp;quot;ServerPeer&amp;quot;&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;JNDIName&amp;quot;&amp;gt;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;RedeliveryDelay&amp;quot;&amp;gt;60000&amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;attribute name=&amp;quot;MaxDeliveryAttempts&amp;quot;&amp;gt;100&amp;lt;/attribute&amp;gt;&lt;br /&gt;
&amp;lt;/mbean&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Defining Group, System and Channel===&lt;br /&gt;
&lt;br /&gt;
From the core view:&lt;br /&gt;
# Right click the element Groups -&amp;gt; Insert after (or Insert before) -&amp;gt; Group. A new element Group will be created. &lt;br /&gt;
# Click on the Group new element and set the attribute ''id-group'' from the Properties View. We named it DEFAULT_GRP&lt;br /&gt;
# Expand the GVSystems item.&lt;br /&gt;
# Right clicking on Systems, insert-after -&amp;gt; System. A new element System will be created.&lt;br /&gt;
# Set the [[System]] parameters in the [[VulCon_perspective|Properties panel]]. We named it GVESB_TEST&lt;br /&gt;
# You can insert a new [[Channel]] right clicking the new [[System]] element -&amp;gt; Insert after (or Insert before) -&amp;gt; Channel*. A new Channel element will be created&lt;br /&gt;
# Click on this new Channel element and set the property ''id_channel''. We named it TEST_CHANNEL_A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Defining Workflow Operations===&lt;br /&gt;
&lt;br /&gt;
Once you have created the [[Channel]], insert into the operations you need for the workflow. In this case:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Plugin !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&amp;lt;br/&amp;gt;(You can find XAHelper section by adding it on the queue)&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;delivery-mode=&amp;quot;persistent&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-enqueue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]] || connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&amp;lt;br/&amp;gt;destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&amp;lt;br/&amp;gt;name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;                            ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;lt;br/&amp;gt; receive-type=&amp;quot;timeout&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[jms-dequeue]]/[[XAHelper]] || auto-enlist=&amp;quot;false&amp;quot;&amp;lt;br/&amp;gt;transaction-status=&amp;quot;TMSUCCESS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[test-service-call]] || name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ''WriteString_JMSBytesMessageDataProvider'' creates a JMS BytesMessage and write in its body the expected input java.lang.String converted to byte[].&amp;lt;br/&amp;gt;&lt;br /&gt;
The ''ReadString_JMSBytesMessageDataProvider'' extract the input JMS BytesMessage body as byte[] and convert it into a java.lang.String.&amp;lt;br/&amp;gt;&lt;br /&gt;
Check that [[Data provider|Data Providers]] ''WriteString_JMSBytesMessageDataProvider'' and ''ReadString_JMSBytesMessageDataProvider'' are present in the element DataProviders (JMSBytesMessageDataProvider and StringDataProvider respectively), visualized from the {{VULCON}} Adapter view. If don't, you can add it setting their attributes as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Data Provider !! Value&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]] || name=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/[[Field]] || direction=&amp;quot;OUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;output&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|JMSBytesMessageDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;writeBytes(#input.object.getBytes('UTF-8'))&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]] || name=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/[[Field]] || direction=&amp;quot;INOUT&amp;quot;&amp;lt;br/&amp;gt;key=&amp;quot;buffer&amp;quot;&amp;lt;br/&amp;gt;type=&amp;quot;field&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Data provider|StringDataProvider]]/Expression || type=&amp;quot;ognl&amp;quot;&amp;lt;br/&amp;gt;#bArr = new byte[object.getBodyLength()], object.reset(), object.readBytes(#bArr), new java.lang.String(#bArr, 'UTF-8')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:NewServiceWizard.jpg|thumb|New {{GVESB}} Service Wizard]]Now we are able to use the Wizard.&lt;br /&gt;
# From the Core View of {{VULCON}}. Right click the element Services -&amp;gt; Wizard New Service&lt;br /&gt;
# A new windows will be open where you can set the name of the Service you want to create, in this case we named TOUPPER_A, and your Group, we used DEFAULT_GRP. You can also select the paradigm, for this example will be [[Paradigms_of_communication#asynchronous-synchronous|asynchronous-synchronous]]. Click next.&lt;br /&gt;
# Set System as GVESB_TEST and Channel as TEST_CHANNEL_A. Then chose as Request Operation ''JMSEnqueueTo::TOUPPER_A_Req'', and the response Operation ''toupper_call''. Then finish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER_AEditor.jpg |thumb |TOUPPER_A flow]]As you can see from the core view, inside the Services element, a new Service named TOUPPER_A has been created.&amp;lt;br/&amp;gt;This service contains three Operations (Workflows)&lt;br /&gt;
We setted the first one as a Request (to enqueue), and the second as a GetReply (to dequeue).&lt;br /&gt;
Nodes will be setted as seen in the following table:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Node !! Request !! GetReply&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || output: output_JMSEnqueueTo::TOUPPER_A_Req&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || output: &amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;request&amp;quot;&amp;lt;br/&amp;gt;id-system=&amp;quot;GVESB_TEST&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&amp;lt;br/&amp;gt;operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;DequeueFilter:&lt;br /&gt;
: IDFilter&lt;br /&gt;
:: enabled=&amp;quot;yes&amp;quot; use-input=&amp;quot;yes&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVNodeCheck || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot; || default-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;id=&amp;quot;check_status&amp;quot;&amp;lt;br/&amp;gt;input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;on-exception-id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot; || id=&amp;quot;return_error&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Operation FWD_TOUPPER_A will be configured as follow:&lt;br /&gt;
Attributes: name=&amp;quot;Forward&amp;quot; operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Nodes/Subelements !! Attributes&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id-system=&amp;quot;GVESB&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;input&amp;quot;&amp;lt;br/&amp;gt; next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&amp;lt;br/&amp;gt;  operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVOperationNode || id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB&amp;quot;&amp;lt;br/&amp;gt;  input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt; op-type=&amp;quot;enqueue&amp;quot;&amp;lt;br/&amp;gt; operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&amp;lt;br/&amp;gt;  output=&amp;quot;output&amp;quot; &amp;lt;br/&amp;gt; ChangeGVBuffer: clear-data=&amp;quot;true&amp;quot;&lt;br /&gt;
|}                      &lt;br /&gt;
&lt;br /&gt;
The GVCore.xml configuration file will be changed as follow:&lt;br /&gt;
* Into ''GVForwards'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ForwardConfiguration dump-message=&amp;quot;true&amp;quot; enabled=&amp;quot;true&amp;quot;&lt;br /&gt;
                      forwardName=&amp;quot;FWD_TOUPPER_A&amp;quot;&lt;br /&gt;
                      ref-dp=&amp;quot;ReadString_JMSBytesMessageDataProvider&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ForwardDeployment connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot; reconnect-interval-sec=&amp;quot;10&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;true&amp;quot; transaction-timeout-sec=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ForwardDeployment&amp;gt;&lt;br /&gt;
&amp;lt;/ForwardConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''Services'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Service group-name=&amp;quot;DEFAULT_GRP&amp;quot; id-service=&amp;quot;TOUPPER_A&amp;quot;&lt;br /&gt;
         service-activation=&amp;quot;on&amp;quot; statistics=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Operation name=&amp;quot;Request&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
               out-check-type=&amp;quot;sys-svc-tid&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                               input=&amp;quot;input_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                           default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                           input=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                           on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                           point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output_JMSEnqueueTo::TOUPPER_A_Req&amp;quot;&lt;br /&gt;
                         point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Flow&amp;gt;&lt;br /&gt;
     &amp;lt;/Operation&amp;gt;&lt;br /&gt;
     &amp;lt;Operation name=&amp;quot;GetReply&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
                out-check-type=&amp;quot;sys-svc-tid&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                              id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                              input=&amp;quot;input_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              next-node-id=&amp;quot;check_status&amp;quot; op-type=&amp;quot;dequeue&amp;quot;&lt;br /&gt;
                              operation-name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                              point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;DequeueFilter&amp;gt;&lt;br /&gt;
                            &amp;lt;IDFilter enabled=&amp;quot;yes&amp;quot; name=&amp;quot;IDFilter&amp;quot; type=&amp;quot;filter&amp;quot;&lt;br /&gt;
                                      use-input=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/DequeueFilter&amp;gt;&lt;br /&gt;
             &amp;lt;/GVOperationNode&amp;gt;&lt;br /&gt;
             &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                          default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                          input=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot; &lt;br /&gt;
                          on-exception-id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;check&amp;quot;&lt;br /&gt;
                          point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot; output=&amp;quot;output_null&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;150&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                        id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                        output=&amp;quot;output_JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                        point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;300&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
    &amp;lt;Operation forward-name=&amp;quot;FWD_TOUPPER_A&amp;quot; name=&amp;quot;Forward&amp;quot;&lt;br /&gt;
               operation-activation=&amp;quot;on&amp;quot; out-check-type=&amp;quot;none&amp;quot;&lt;br /&gt;
               type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot; id-system=&amp;quot;GVESB&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;call_server&amp;quot; point-x=&amp;quot;20&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;call_server&amp;quot; id-system=&amp;quot;GVESB&amp;quot; input=&amp;quot;input&amp;quot;&lt;br /&gt;
                               next-node-id=&amp;quot;enqueue_response&amp;quot; op-type=&amp;quot;call&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;toupper_call&amp;quot; output=&amp;quot;output&amp;quot;&lt;br /&gt;
                               point-x=&amp;quot;147&amp;quot; point-y=&amp;quot;148&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                               id=&amp;quot;enqueue_response&amp;quot; id-system=&amp;quot;GVESB&amp;quot;&lt;br /&gt;
                               input=&amp;quot;output&amp;quot; next-node-id=&amp;quot;end&amp;quot;&lt;br /&gt;
                               op-type=&amp;quot;enqueue&amp;quot;&lt;br /&gt;
                               operation-name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                               output=&amp;quot;output&amp;quot; point-x=&amp;quot;319&amp;quot; point-y=&amp;quot;152&amp;quot;&lt;br /&gt;
                               type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                         end-business-process=&amp;quot;no&amp;quot; id=&amp;quot;end&amp;quot; op-type=&amp;quot;end&amp;quot;&lt;br /&gt;
                         output=&amp;quot;output&amp;quot; point-x=&amp;quot;532&amp;quot; point-y=&amp;quot;149&amp;quot;&lt;br /&gt;
                         type=&amp;quot;flow-node&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ChangeGVBuffer clear-data=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;/GVEndNode&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
    &amp;lt;/Operation&amp;gt;&lt;br /&gt;
&amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''System'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Channel id-channel=&amp;quot;TEST_CHANNEL_A&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Request_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Req&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       ref-dp=&amp;quot;WriteString_JMSBytesMessageDataProvider&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-enqueue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSEnqueueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       delivery-mode=&amp;quot;persistent&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSEnqueueTo::TOUPPER_A_Resp&amp;quot; priority=&amp;quot;4&amp;quot;&lt;br /&gt;
                       transacted=&amp;quot;false&amp;quot; type=&amp;quot;enqueue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/jms-enqueue&amp;gt;&lt;br /&gt;
          &amp;lt;jms-dequeue acknowledge-type=&amp;quot;auto-acknowledge&amp;quot;&lt;br /&gt;
                       class=&amp;quot;it.greenvulcano.gvesb.virtual.j2ee.JMSDequeueOperation&amp;quot;&lt;br /&gt;
                       connection-factory=&amp;quot;java:/XAConnectionFactory&amp;quot;&lt;br /&gt;
                       destination-name=&amp;quot;gvesb/jms/queue/TOUPPER_A_Response_Queue&amp;quot;&lt;br /&gt;
                       destination-type=&amp;quot;queue&amp;quot;&lt;br /&gt;
                       name=&amp;quot;JMSDequeueTo::TOUPPER_A_Resp&amp;quot;&lt;br /&gt;
                       receive-timeout-overridable=&amp;quot;false&amp;quot;&lt;br /&gt;
                       receive-type=&amp;quot;timeout&amp;quot; transacted=&amp;quot;false&amp;quot; type=&amp;quot;dequeue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;XAHelper auto-enlist=&amp;quot;false&amp;quot; transaction-status=&amp;quot;TMSUCCESS&amp;quot;/&amp;gt;&lt;br /&gt;
           &amp;lt;/jms-dequeue&amp;gt;&lt;br /&gt;
           &amp;lt;test-service-call class=&amp;quot;it.greenvulcano.gvesb.virtual.internal.TestServiceCall&amp;quot;&lt;br /&gt;
                              name=&amp;quot;toupper_call&amp;quot; service=&amp;quot;toupper&amp;quot; type=&amp;quot;call&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Channel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are able to test your first {{VULCON}} service from the {{L_GVCONSOLE}}. But first you need to export the configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER5.jpg|thumb|Exporting configuration]]Once the flow is correctly configured, the user can export the configuration and pass it to the {{GVESB}} import tool, in order to add into the {{GVESB}} the service just created.&lt;br /&gt;
&lt;br /&gt;
# The Export function is available in the view &amp;quot;Project&amp;quot;. Expand the project&lt;br /&gt;
# Before you proceed press F5 to refresh the file list.&lt;br /&gt;
# Right click the ''conf'' folder. It will open a drop-down list. &lt;br /&gt;
# Export your project as a compressed file.&lt;br /&gt;
&lt;br /&gt;
===Testing with {{GVCONSOLE}}===&lt;br /&gt;
&lt;br /&gt;
It is finally the time to test your project. To do that execute the following steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} project as &amp;lt;nowiki&amp;gt;&amp;quot;${{gv.app.home}}/TEST/REPG1.zip&amp;quot;&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse and select the file where you saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service TOUPPER_A a new view will be showed containing the files GVCore.xml present in local and on server side.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. By saving you will return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and GVAdapter.xml, then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new service. Remember that Service TOUPPER_A is composed by three independent Operations:&lt;br /&gt;
&lt;br /&gt;
'''Request'''&lt;br /&gt;
# Into the Service field select TOUPPER_A&lt;br /&gt;
# Into the System field select GVESB_TEST&lt;br /&gt;
# Into the Payload area insert the text to convert in uppercase&lt;br /&gt;
# Click Request&lt;br /&gt;
&lt;br /&gt;
The '''FWD_TOUPPER_A''' is executed by {{GVESB}} [[GVForwards|JMS Forward]].&lt;br /&gt;
&lt;br /&gt;
'''getReply'''&lt;br /&gt;
# Clear the Payload area&lt;br /&gt;
# Click getReply&lt;br /&gt;
&lt;br /&gt;
When each test completes, the Testing view will be expanded for containing the GVBUFFER OUTPUT. In this case no properties have been defined so there are only be presents the main informations about the process (System, Service, Id, etc.). To view the service payload output click on ''Show as Text'' button. Standard fields and the detailed GVBuffer are described in the [[Testing#Data_input|Output File Name]] (the default location is &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/TestOutput.txt). &lt;br /&gt;
&lt;br /&gt;
In case of error or exceptions you can review the logs file present in the folder &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER&amp;diff=4222</id>
		<title>GVExample TOUPPER</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TOUPPER&amp;diff=4222"/>
		<updated>2014-05-28T15:28:40Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* Testing with {{GVCONSOLE}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
This example shows a simple [[Paradigms_of_communication|synchronous service]] and its configuration.&lt;br /&gt;
The service accepts a string as input, then returns it converted to uppercase.&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
&lt;br /&gt;
[[File:NewVulconProject.jpg|thumb| New Vulcon Project]]As this might be our first example, the first step will be the creation of a new {{VULCON}} Project.&lt;br /&gt;
# From the Menu panel of Eclipse click File -&amp;gt; New -&amp;gt; Project. A new windows will be open containing the projects type.&lt;br /&gt;
# Select Vulcon -&amp;gt; &amp;quot;New Vulcon Project&amp;quot; item. Then click Next&lt;br /&gt;
# Set the project name and Location. We named the project GVEXAMPLE and choose a Location of your choice. Then click finish. The new {{VULCON}} project GVEXAMPLE has been created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The preferred mode for creating a [[Service]] (at least its skeleton) is through the Service Wizard. Before using it you must first configure the test VCL plugin tho execute the uppercase conversion. So let's define a new [[Group]], [[System]] and [[Channel]], if you do not want to use those already present, and then start the Wizard.&lt;br /&gt;
&lt;br /&gt;
From the core view:&lt;br /&gt;
# Right click the element Groups -&amp;gt; Insert after (or Insert before) -&amp;gt; Group. A new element Group will be created. &lt;br /&gt;
# Click on the Group new element and set the attribute ''id-group'' from the Properties View. We named it TEST_GROUP.&lt;br /&gt;
# Expand the GVSystems item.&lt;br /&gt;
# Right clicking on Systems, insert-after -&amp;gt; System. A new element System will be created.&lt;br /&gt;
# Set the [[System]] parameters in the [[VulCon_perspective|Properties panel]]. We named it GVESB_TEST&lt;br /&gt;
# You can insert a new [[Channel]] right clicking the new [[System]] element -&amp;gt; Insert after (or Insert before) -&amp;gt; Channel*. A new Channel element will be created&lt;br /&gt;
# Click on this new Channel element and set the property ''id_channel''. We named it TEST_CHANNEL&lt;br /&gt;
# Finally, insert the operation you need for the workflow. In this case a ''test-service-call''. Right clicking Channel -&amp;gt; Insert after -&amp;gt; [[test-service-call]]. A new element ''test-service-call'' will be created.&lt;br /&gt;
# Set the [[test-service-call]] attributes. From the properties view set the ''name'' attribute as ''test'' and the ''service'' attribute as ''toupper''.&lt;br /&gt;
&lt;br /&gt;
[[File:NewServiceWizard.jpg|thumb|New {{GVESB}} Service Wizard]]Now we are able to use the Wizard.&lt;br /&gt;
# From the Core View of {{VULCON}}. Right click the element Services -&amp;gt; Wizard New Service&lt;br /&gt;
# A new window will be open where you can set the name of the Service you want to create, in this case we name it TOUPPER, and as Group, we use TEST_GROUP. You can also select the communication paradigm, for this example it will be [[Paradigms_of_communication#synchronous-synchronous|synchronous-synchronous]]. Click next.&lt;br /&gt;
# Set System as GVESB_TEST and Channel as TEST_CHANNEL. Then choose the Operation, in this case ''test''. Then finish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:TOUPPEREditor.jpg |thumb |TOUPPER flow]]As you can see from the core view, inside the Services element, a new Service named TOUPPER has been created. The editor will be opened automatically, showing the nodes involved in our [[Flow]].&lt;br /&gt;
* The [[Main_nodes|Start node]] sets the flow first node. In this case ''request''&lt;br /&gt;
* The [[Operations |Operation node]] ''request'' calls the ''test-service-call'' operation '''test''' and executes it.&lt;br /&gt;
* A [[Main_nodes|Check node]] named ''check_status'' is also inserted for controlling the success of the preceding node.&lt;br /&gt;
* If ''success'' flow passes to the [[Main_nodes|End node]] ''return_status''&lt;br /&gt;
* In case of Error, flow goes to the [[Main_nodes|End node]] ''return_error''. The difference with ''return_status'' is signed by the [[Palette|Connection]] with ''check_status'' Check node. In this case an [[Palette|Error Connection]] (the Red arrow) have been used. &lt;br /&gt;
* Save clicking the ''Save'' icon from the Core View&lt;br /&gt;
&lt;br /&gt;
The GVCore.xml configuration file will be changed as follows:&lt;br /&gt;
* Into ''Groups'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Group group-activation=&amp;quot;on&amp;quot; id-group=&amp;quot;TEST_GROUP&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''Services'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Service group-name=&amp;quot;TEST_GROUP&amp;quot; id-service=&amp;quot;TOUPPER&amp;quot; service-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
                     statistics=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Operation name=&amp;quot;RequestReply&amp;quot; operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
                           out-check-type=&amp;quot;sys-svc-tid&amp;quot; type=&amp;quot;operation&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Description&amp;gt;VulCon generated Operation&amp;lt;/Description&amp;gt;&lt;br /&gt;
         &amp;lt;Participant id-channel=&amp;quot;TEST_CHANNEL&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;Flow first-node=&amp;quot;request&amp;quot; point-x=&amp;quot;50&amp;quot; point-y=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;GVOperationNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVOperationNode&amp;quot;&lt;br /&gt;
                   id=&amp;quot;request&amp;quot; id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
                   input=&amp;quot;input_test&amp;quot; next-node-id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                   op-type=&amp;quot;call&amp;quot; operation-name=&amp;quot;test&amp;quot;&lt;br /&gt;
                   output=&amp;quot;output_test&amp;quot; point-x=&amp;quot;200&amp;quot; point-y=&amp;quot;150&amp;quot;&lt;br /&gt;
                   type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVNodeCheck class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVNodeCheck&amp;quot;&lt;br /&gt;
                   default-id=&amp;quot;return_status&amp;quot; id=&amp;quot;check_status&amp;quot;&lt;br /&gt;
                   input=&amp;quot;output_test&amp;quot; on-exception-id=&amp;quot;return_error&amp;quot;&lt;br /&gt;
                   op-type=&amp;quot;check&amp;quot; point-x=&amp;quot;350&amp;quot; point-y=&amp;quot;150&amp;quot;&lt;br /&gt;
                   type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                   id=&amp;quot;return_status&amp;quot; op-type=&amp;quot;end&amp;quot; output=&amp;quot;output_test&amp;quot;&lt;br /&gt;
                   point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;50&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;GVEndNode class=&amp;quot;it.greenvulcano.gvesb.core.flow.GVEndNode&amp;quot;&lt;br /&gt;
                   id=&amp;quot;return_error&amp;quot; op-type=&amp;quot;end&amp;quot; output=&amp;quot;output_test&amp;quot;&lt;br /&gt;
                   point-x=&amp;quot;700&amp;quot; point-y=&amp;quot;250&amp;quot; type=&amp;quot;flow-node&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;/Flow&amp;gt;&lt;br /&gt;
     &amp;lt;/Operation&amp;gt;&lt;br /&gt;
&amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Into ''Systems'' element will be added the tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;System id-system=&amp;quot;GVESB_TEST&amp;quot; system-activation=&amp;quot;on&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Channel id-channel=&amp;quot;TEST_CHANNEL&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;test-service-call class=&amp;quot;it.greenvulcano.gvesb.virtual.internal.TestServiceCall&amp;quot;&lt;br /&gt;
                name=&amp;quot;test&amp;quot; service=&amp;quot;toupper&amp;quot; type=&amp;quot;call&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/Channel&amp;gt;&lt;br /&gt;
&amp;lt;/System&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you are able to test your first {{VULCON}} Service from the {{L_GVCONSOLE}}. But first you need to export the configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER5.jpg|thumb|Exporting configuration]]Once the flow is correctly configured, the user can export the configuration and pass it to the {{GVESB}} import tool, in order to add into the {{GVESB}} the service just created.&lt;br /&gt;
# The Export function is available in the view &amp;quot;Project&amp;quot;. Expand the project&lt;br /&gt;
# Before you proceed press F5 to refresh the file list.&lt;br /&gt;
# Right click the ''conf'' folder. It will open a drop-down list. &lt;br /&gt;
# Export your project as a VulCon project file (.zip).&lt;br /&gt;
&lt;br /&gt;
===Testing with {{GVCONSOLE}}===&lt;br /&gt;
&lt;br /&gt;
It is finally the time to test your project. To do that execute the following steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]Suppose you have saved the {{VULCON}} project as &amp;lt;nowiki&amp;gt;REPG1.zip&amp;lt;/nowiki&amp;gt;. To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse and select the file where you saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service TOUPPER a new view will be showed containing the file ''GVCore.xml'' present in local and on server side.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. By saving you will return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleTesting.jpg|thumb|{{GVCONSOLE}} Testing section]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new service:&lt;br /&gt;
# Into the Service field select TOUPPER&lt;br /&gt;
# Into the System field select GVESB_TEST (Optional)&lt;br /&gt;
# Into the Payload area insert the text to convert in uppercase&lt;br /&gt;
# Click RequestReply&lt;br /&gt;
&lt;br /&gt;
When the service completes, the Testing view will be expanded for containing the GVBUFFER OUTPUT. In this case no properties have been defined, so only the main information about the process is present (System, Service, Id, etc.). To view the service payload output click on ''Show as Text'' button. Standard fields and the detailed GVBuffer are described in the [[Testing#Data_input|Output File Name]] (the default location is &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/TestOutput.txt). &lt;br /&gt;
&lt;br /&gt;
In case of error or exceptions you can review the logs file present in the folder &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TestProperty&amp;diff=4221</id>
		<title>GVExample TestProperty</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=GVExample_TestProperty&amp;diff=4221"/>
		<updated>2014-05-28T13:46:16Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* {{VULCON}} Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
TestProperty service shows the use of the various metadata. This example is limited to create some properties and set its value with the scope of illustrating how metadata can be used. But shows also how to construct the possible properties that you will need in more complex flows. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more information about metadata (or placeholders) click [[Placeholders|here]].&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} Configuration==&lt;br /&gt;
&lt;br /&gt;
There are more ways to create and configure a [[Service]] with {{GVESB}}: using the Service Wizard, by drag and drop into the Editor panel or directly from the {{L_VULCON}} core view. Because of the simplicity of this service we preferred to create and configure it using the Editor panel. First we must define a new [[Group]], [[System]] and [[Channel]], if you do not want to use those already present.&lt;br /&gt;
&lt;br /&gt;
From the core view:&lt;br /&gt;
# Right click the element Groups -&amp;gt; Insert after (or Insert before) -&amp;gt; Group. A new element Group will be created. &lt;br /&gt;
# Click on the Group new element and set the attribute ''id-group'' from the Properties View. We named it TEST_GROUP.&lt;br /&gt;
# Expand the GVSystems item.&lt;br /&gt;
# Right clicking on Systems, insert-after -&amp;gt; System. A new element System will be created.&lt;br /&gt;
# Set the [[System]] parameters in the [[VulCon_perspective|Properties panel]]. We named it GVESB_TEST&lt;br /&gt;
# You can insert a new [[Channel]] right clicking the new [[System]] element -&amp;gt; Insert after (or Insert before) -&amp;gt; Channel*. A new Channel element will be created&lt;br /&gt;
# Click on this new Channel element and set the property ''id_channel''. We named it TEST_CHANNEL.&lt;br /&gt;
&lt;br /&gt;
Create a new service:&lt;br /&gt;
# From the Core View of {{VULCON}}, right click the element Services -&amp;gt; Insert After (Insert Before) -&amp;gt; Service*&lt;br /&gt;
# Set the Service properties: id-service as TestProperty, and group-name as TEST_GROUP.&lt;br /&gt;
# Add into the Service TestProperty just created a new Operation: right click the element Service -&amp;gt; Insert After -&amp;gt; Operation*&lt;br /&gt;
# Set the Operation property name as Request&lt;br /&gt;
# Create a Participant: right click the element Operation -&amp;gt; Insert After (Insert Before) -&amp;gt; Participant*&lt;br /&gt;
# Set the parameters id-system as GVESB_TEST and id-channel as TEST_CHANNEL.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamples_TestProperty1.jpg|thumb|TestProperty Service]]Now, you are able to configure your flow from the Editor view as seen in the picture. To do that right click the Operation element -&amp;gt; Open editor. &lt;br /&gt;
&lt;br /&gt;
Expand the [[Palette]] if it is not already visible from the Editor View. This can be done by clicking into a little arrow head present into the Editor right top corner. The steps are:&lt;br /&gt;
# Add a [[Main_nodes|ChangeGVBuffer Node]]: &lt;br /&gt;
## From the Palette drag and drop into the editor a ChangeGVBuffer Node. [[File:GVExamples_TestProperty2.jpg|thumb|Adding a ChangeGVBuffer Node]]A new windows will be open where you can set the element id. In this example we set&lt;br /&gt;
##* id: test_property&lt;br /&gt;
##* input: data&lt;br /&gt;
## From the Palette drag and drop into the editor an EndNode Node. A new windows will be open where you can set the element id. In this example we set&lt;br /&gt;
##* id: end&lt;br /&gt;
# Create the connections: &lt;br /&gt;
## From the Palette click into the Default Connection (black arrow)&lt;br /&gt;
## Create a connection between the Start Node and ''test_property'' ChangeGVBuffer Node. This is done by clicking first the Start Node and then the ''test_property'' node. &lt;br /&gt;
## Create another Default Connection between  ''test_property'' ChangeGVBuffer Node and ''end'' node.&lt;br /&gt;
# Save the Editor in the Eclipse Main Menu and close it. You can reopen it from the Core View by right clicking the respective element [[Operation]].&lt;br /&gt;
&lt;br /&gt;
The flow is already created. Refresh the Core view in the apposite icon. Check from that the workflow elements will be configured as follow: &lt;br /&gt;
&lt;br /&gt;
:Service: group-name=&amp;quot;TEST_GROUP&amp;quot;, id-service=&amp;quot;TestProperty&amp;quot;, service-activation=&amp;quot;on&amp;quot;, statistics=&amp;quot;off&amp;quot;&lt;br /&gt;
:Operation: name=&amp;quot;Request&amp;quot;, operation-activation=&amp;quot;on&amp;quot;&lt;br /&gt;
:Participant: id-channel=&amp;quot;TEST_CHANNEL&amp;quot;, id-system=&amp;quot;GVESB_TEST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following table shows the parameters to be defined for nodes and sub-elements added:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Node !! Attribute&lt;br /&gt;
|-&lt;br /&gt;
| [[ChangeGVBufferNode]] || id=&amp;quot;set_properties&amp;quot; &amp;lt;br/&amp;gt;input=&amp;quot;input&amp;quot;&amp;lt;br/&amp;gt; next-node-id=&amp;quot;return_status&amp;quot;&amp;lt;br/&amp;gt;output=&amp;quot;output&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ChangeGVBufferNode/ChangeGVBuffer || clear-data=&amp;quot;false&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ChangeGVBufferNode/ChangeGVBuffer/PropertyDef || name=&amp;quot;SQL&amp;quot; &amp;lt;br/&amp;gt;value=&amp;quot;&amp;lt;nowiki&amp;gt;sql{{ds.gv_test::select 'OK' from dual}}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GVEndNode || id=&amp;quot;return_status&amp;quot; &amp;lt;br/&amp;gt; output=&amp;quot;output&amp;quot;&lt;br /&gt;
|}                                &lt;br /&gt;
&lt;br /&gt;
We added more properties in order to illustrate some {{GVESB}} [[Placeholders]]. You can add more PropertyDef elements by right clicking the ''ChangeGVBuffer'' element present in the [[ChangeGVBufferNode]] -&amp;gt; Insert After -&amp;gt; PropertyDef. The defined properties are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! PropertyDef name !! value&lt;br /&gt;
|-&lt;br /&gt;
| SQL || &amp;lt;nowiki&amp;gt;sql{{ds.gv_test::select 'OK' from dual}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| SQLLIST || &amp;lt;nowiki&amp;gt;[sqllist{{ds.gv_test::select name from city order by 1}}]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| TIMESTAMP || &amp;lt;nowiki&amp;gt;timestamp{{yyyyMMdd HH:mm:ss}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| OGNL || Service: &amp;lt;nowiki&amp;gt;ognl{{#object.getService()}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| JAVASCRIPT || System: &amp;lt;nowiki&amp;gt;js{{gvesb::object.getSystem()}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| SYSTEM || Server Name: &amp;lt;nowiki&amp;gt;${{jboss.server.name}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CLASS || &amp;lt;nowiki&amp;gt;%{{fqclass}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DECODE || &amp;lt;nowiki&amp;gt;decode{{ognl{{#object.getProperty('SQL')}}::OK::Sql OK::Sql KO}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MINUTE || Minute &amp;lt;nowiki&amp;gt;decode{{js{{gvesb::timestamp{{mm}} % 2 == 0}}::true::EVEN::ODD}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamples_TestProperty3.jpg|thumb|TestProperty configuration]]Before finishing you must control that the {{VULCON}} Configuration has not errors. Errors are indicated by a red cross into the element icon.&lt;br /&gt;
# Review all the properties just configured &lt;br /&gt;
# Save your changes using the Save icon present in the [[The_views|Core View]].&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamplesTOUPPER5.jpg|thumb|Exporting configuration]]Once the flow is correctly configured, you can export the configuration and pass it to the {{GVESB}} import tool, in order to add into {{GVESB}} the service just created.&lt;br /&gt;
# The Export function is available in the view &amp;quot;Project&amp;quot;. Expand your project&lt;br /&gt;
# Before you proceed, press F5 to refresh the file list.&lt;br /&gt;
# Right click the ''conf'' folder. It will open a drop-down list. &lt;br /&gt;
# Export your project as a compressed file.&lt;br /&gt;
&lt;br /&gt;
===Testing with {{GVCONSOLE}}===&lt;br /&gt;
&lt;br /&gt;
It is finally the time to test your project. To do that execute the following steps:&lt;br /&gt;
&lt;br /&gt;
[[File:GVCONSOLEDeploy.jpg|thumb|Deploy new Service]]To deploy the new Service follow this steps:&lt;br /&gt;
# [[Starting|Start {{GVESB}}]]&lt;br /&gt;
# [[GV_Console#Access|Access to the {{GVCONSOLE}}]]. &lt;br /&gt;
# In the Deploy New Service section click Browse and select the file where you saved the {{VULCON}} configuration.&lt;br /&gt;
# Click Submit.&lt;br /&gt;
&lt;br /&gt;
The section [[Deploy_Service|Deploy Services]] will be open. In this section you can select the services you want to deploy.&lt;br /&gt;
# Clicking on service TestProperty a new view will be showed containing the file ''GVCore.xml'' present in local and on server side.&lt;br /&gt;
# Click Deploy. Now you can save the document and write some notes about it.&lt;br /&gt;
# Save the Document. By saving you will return to the [[Deploy Service]] section.&lt;br /&gt;
&lt;br /&gt;
[[File:GVConsoleUtilityReload1.jpg|thumb|{{GVCONSOLE}} Utility section]]Now pass to the {{GVCONSOLE}} section [[Utility]]. &lt;br /&gt;
# Click on [[Reload_Configuration|Reload configuration]]&lt;br /&gt;
# Select GVCore.xml and then Reload. A new windows will be open to confirm the operation&lt;br /&gt;
# Click OK.&lt;br /&gt;
&lt;br /&gt;
[[File:GVExamples_TestPropertyOutput.jpg|thumb|Testing TestProperty]]Go to the {{GVCONSOLE}} section [[Testing]]. In this section you can finally test your new service:&lt;br /&gt;
# Into the Service field select TestProperty&lt;br /&gt;
# Into the System field select GVESB_TEST (Optional)&lt;br /&gt;
# Click Request&lt;br /&gt;
&lt;br /&gt;
When the service completes, the Testing view will be expanded for containing the GVBUFFER OUTPUT. Standard fields and the detailed GVBuffer are described in the [[Testing#Data_input|Output File Name]] (the default location is &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/TestOutput.txt). &lt;br /&gt;
&lt;br /&gt;
In case of error or exceptions you can review the logs file present in the folder &amp;lt;nowiki&amp;gt;$GV_HOME&amp;lt;/nowiki&amp;gt;/log/.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4102</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4102"/>
		<updated>2013-08-01T13:25:30Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
The {{GVESB}} plugin '''rest-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[rest-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4101</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4101"/>
		<updated>2013-08-01T13:24:10Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
The {{GVESB}} plugin '''rest-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4100</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4100"/>
		<updated>2013-07-31T13:46:35Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4099</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4099"/>
		<updated>2013-07-31T13:18:39Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| use-saaj || optional || Defines whether to use SAAJ to invoke the WebService mode instead of the default Axis2 mode. &amp;lt;br/&amp;gt; NOTE: If you choose to use SAAJ as a way of calling the WebService, Axis2 modules are not enabled. &amp;lt;br/&amp;gt; The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Description&amp;diff=4098</id>
		<title>Description</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Description&amp;diff=4098"/>
		<updated>2013-07-31T13:11:24Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Description.jpg|thumb|Groups section Description]]&lt;br /&gt;
Each element of the configuration provides a field '''Description''' optional that might contain free text available to the user.&lt;br /&gt;
&lt;br /&gt;
This field can be used for notes and information that help users in configuration management and by the application {{L_GVCONSOLE}} to enrich the reports relating to the configuration.&lt;br /&gt;
&lt;br /&gt;
The Description is always optional, but if used can not be empty. The element value cannot be null.&lt;br /&gt;
&lt;br /&gt;
The Description Element is used by: [[JNDIHelper|Advanced]], [[ServiceAlias#AliasMapping|AliasMapping]], [[Smtp-call#attachments|attachments]], [[GVWebServices#AxisExtra|AxisExtra]], [[Ws-call#AxisWebServiceInvoker|AxisWebServiceInvoker]], [[rest-call#RestServiceInvoker|RestServiceInvoker]], [[Smtp-call#destinations|bcc]], [[GVWebServices#Binding|Binding]], [[birt-report-call]], [[Base64Transformation]], [[GVServices#BpelEngineConfiguration|BpelEngineConfiguration]], [[BpelOperation#BpelFlow|BpelFlow]], [[BpelOperation]], [[GVWebServices#BusinessWebServices|BusinessWebServices]], [[GVConnectorConfiguration#Call|Call]], [[CallDescriptor]], [[Generic-call#call-parameter|call-parameter]], [[CallSPFormatter]], [[CallSPBaseFormatter|CallSPSimpleBaseFormatter]], [[Smtp-call#destinations|cc]], [[ChangeGVBuffer]], [[GVConnectorConfiguration#Channels|Channels]], [[GVConnectorConfiguration#ComplexExtension|ComplexExtension]], [[GVConnectorConfiguration#CompressExtension|CompressExtension]], [[GVJdbc#Connection|Connection]], [[GVWebServices#connectionProperty|connectionFactory]], [[GVWebServices#connectionProperty|connectionProperty]], [[GVJdbc#Connections|Connections]], [[GVConnectorConfiguration#ConnectorService|ConnectorService]], [[GVConnectorConfiguration#ConnectorServices|ConnectorServices]], [[Http-call#constructor-args|constructor-args]], [[Http-call#constructor-param|constructor-param]], [[Http-call#CustomProtocol|CustomProtocol]], [[DBOperations#DataSourceConnection|DataSourceConnection]], [[GVJDBCConnectionBuilder#DataSourceConnectionBuilder|DataSourceConnectionBuilder]], [[db-call]], [[DBOBuilder]], [[DBOCallSP]], [[DBOInsert]], [[DBOInsertOrUpdate]], [[DBOperations]], [[DBOSelect]], [[DBOThreadSelect]], [[DBOUpdate]], [[DBOUpdateOrInsert]], [[GVConnectorConfiguration#DecompressExtension|DecompressExtension]], [[GVConnectorConfiguration#DecryptExtension|DecryptExtension]], [[Smtp-call#destinations|destinations]], [[DBOBuilder|DHAlias]], [[DBOBuilder|DHAliasList]], [[dh-call]], [[DHVariables#DHVariable|DHVariable]], [[DMLWriteFormatter]], [[GVJdbc#Driver|Driver]], [[GVJDBCConnectionBuilder#DriverConnectionBuilder|DriverConnectionBuilder]], [[GVJDBCConnectionBuilder#DriverPoolConnectionBuilder|DriverPoolConnectionBuilder]], [[GVJdbc#Drivers|Drivers]], [[GVConnectorConfiguration#DTEExtension|DTEExtension]], [[GVConnectorConfiguration#EncryptExtension|EncryptExtension]], [[Http-call#endpoint|endpoint]], [[GVWebServices#EngageModule|EngageModule]], [[GVBIRTReportConfiguration#Engine|Engine]], [[ShellCommands#env-property]], [[excel-call]], [[excelreader-call]], [[GVBIRTReportConfiguration#ExcelReportRender|ExcelReportRender]], [[JNDIHelper|Extended]], [[GVConnectorConfiguration#Extension|Extension]], [[GVConnectorConfiguration#Extensions|Extensions]], [[GVConnectorConfiguration#External-Component|External-Component]], [[GVConnectorConfiguration#ExternalComponents|ExternalComponents]], [[GVConnectorConfiguration#External-Params|External-Params]], [[Extract-data-call#extract-data|extract-data]], [[extract-data-call]], [[FieldFormatters#FieldFormatter|FieldFormatter]], [[FieldFormatters]], [[Smtp-call#file-attachment|file-attachment]], [[Filemanager-call#FileCopyCommand|FileCopyCommand]], [[Filemanager-call#FileDeleteCommand|FileDeleteCommand]], [[Fsmonitor-call#FileFilter|FileFilter]], [[filemanager-call]], [[Fsmonitor-call#FileMonitorStatus|FileMonitorStatus]], [[Filemanager-call#FileMoveCommand|FileMoveCommand]], [[filereader-call]], [[Filemanager-call#FileSearchCommand|FileSearchCommand]], [[Filemanager-call#FileUnZipCommand|FileUnZipCommand]], [[filewriter-call]], [[Filemanager-call#FileZipCommand|FileZipCommand]], [[GVExcelWorkbookConfiguration#Font|Font]], [[GVExcelWorkbookConfiguration#Format|Format]], [[fsmonitor-call]], [[FTPManager]], [[generic-call]], [[GenericRetriever]], [[GVConnectorConfiguration#GenericTransaction|GenericTransaction]], [[GVConnectorConfiguration#GreenVulcanoCoreChannel|GreenVulcanoCoreChannel]], [[GVJbpmTaskListenerManager#GreenVulcanoPool|GreenVulcanoPool]], [[GVWebServices#GreenVulcanoWebService|GreenVulcanoWebService]], [[GVWebServices#GreenVulcanoWebServices|GreenVulcanoWebServices]], [[GVJbpmTaskListenerManager#GroupsJbpm|groupJbpm]], [[GVJbpmTaskListenerManager#GroupsJbpm|GroupsJbpm]], [[GVAdapterOpenSpCoop]], [[GVBIRTReportConfiguration]], [[Smtp-call#gvBuffer|gvBuffer]], [[GVBufferCondition]], [[GVBufferMapping#GVBufferFieldOutput|GVBufferFieldOutput]], [[GVBufferMapping]], [[Statement#GVBufferParam|GVBufferParam]], [[Statement#GVBufferParamResolver|GVBufferParamResolver]], [[GVConnectorConfiguration]], [[GVHL7ListenerManager#GVCoreApplication|GVCoreApplication]], [[gvcore-call]], [[GVDataHandlerConfiguration]], [[GVDataProviderManager]], [[GVExcelCreatorConfiguration]], [[Excel-call#GVExcelReport|GVExcelReport]], [[GVExcelWorkbookConfiguration#GVExcelWorkbook|GVExcelWorkbook]], [[GVExcelWorkbookConfiguration]], [[GVHL7ListenerManager]], [[GVJBPMConfiguration]], [[GVJbpmTaskListenerManager#GVJbpmListeners|GVJbpmListeners]], [[GVJbpmTaskListenerManager]], [[GVJdbc]], [[GVJDBCConnectionBuilder]], [[GVMailServices]], [[GVSQLErrorMapping]], [[GVWebServices]], [[GVHL7ListenerManager#HL7Activation|HL7Activation]], [[hl7-call]], [[GVHL7ListenerManager#HL7Listener|HL7Listener]], [[GVBIRTReportConfiguration#HTMLReportRender|HTMLReportRender]], [[http-call]], [[GVMailServices#imap|imap]], [[Fsmonitor-call#InMemoryMonitorStatus|InMemoryMonitorStatus]], [[jmx-call#invoke-parameter|invoke-parameter]], [[j2ee-ejb-call]], [[j2ee-jca-call]], [[Retriever_Config#JavaScriptRetriever|JavaScriptRetriever]], [[GVWebServices#JAXMLRegistry|JAXMLRegistry]], [[jbpm-call]], [[jbpm-task-call]], [[J2ee-jca-call#jca-connection-spec|jca-connection-spec]], [[J2ee-jca-call#jca-interaction-spec|jca-interaction-spec]], [[DBOperations#JDBCConnection|JdbcConnection]], [[jms-dequeue]], [[jms-enqueue]], [[jmx-call]], [[JNDIHelper]], [[Fsmonitor-call#LocalFileSystemMonitor|LocalFileSystemMonitor]], [[Smtp-call#destinations|mail-address]], [[Smtp-call#mail-message|mail-message]], [[GVMailServices#mail-service|mail-service]], [[Smtp-call#message-body|message-body]], [[GVMailServices#mime|mime]], [[GVWebServices#ModuleProperty|ModuleProperty]], [[openspcoop-call]], [[GVConnectorConfiguration#OperationDetails|OperationDetails]], [[GVBIRTReportConfiguration#Option|Option]], [[GVBIRTReportConfiguration#Options|Options]], [[Statement#Param|Param]], [[parameter]], [[GVBIRTReportConfiguration#Parameter|Parameter]], [[GVBIRTReportConfiguration#Parameters|Parameters]], [[J2ee-jca-call#param-gvbuffer|param-gvbuffer]], [[Jbpm-call#ParamJbpm|ParamJbpm]], [[Statement#ParamResolver|ParamResolver]], [[Jbpm-call|ParamsJbpm]], [[Jbpm-task-call#ParamsTask|ParamsTask]], [[GVWebServices#PasswordCallback|PasswordCallback]], [[GVBIRTReportConfiguration#PDFReportRender|PDFReportRender]], [[GVJDBCConnectionBuilder#PoolParameters|PoolParameters]], [[GVMailServices#pop3|pop3]], [[pop-call]], [[GVWebServices#Properties|Properties]], [[J2ee-jca-call#property|property]], [[GVBufferCondition#Property|Property]], [[GVBufferCondition#PropertyCompare|PropertyCompare]], [[GVSavePointNode#PropertyDef|PropertyDef]], [[GVConnectorConfiguration#Property-Field|Property-Field]], [[Proxy]], [[GVWebServices#PasswordCallback|PwCbBasicHandler]], [[QueryFormatter]], [[QueryFormatter#QueryXMLBaseFormatter|QueryXMLBaseFormatter]], [[GVBufferCondition#RangeDef|RangeDef]], [[Remotemanager-call#RemoteDeleteCommand |RemoteDeleteCommand]], [[Remotemanager-call#RemoteDownloadCommand |RemoteDownloadCommand]], [[Fsmonitor-call#RemoteFileSystemMonitor|RemoteFileSystemMonitor]], [[remotemanager-call]], [[Remotemanager-call#RemoteMoveCommand |RemoteMoveCommand]], [[Remotemanager-call#RemoteSearchCommand |RemoteSearchCommand]], [[Remotemanager-call#RemoteUploadCommand |RemoteUploadCommand]], [[GVBIRTReportConfiguration#Renders|Renders]], [[GVBIRTReportConfiguration#Report|Report]], [[GVBIRTReportConfiguration#ReportGroups|ReportGroup]], [[GVBIRTReportConfiguration#ReportGroups|ReportGroups]], [[ResultSet]], [[GVBufferCondition#RetCodeField|RetCodeField]], [[Retriever_Config|RetrieverConfig]], [[routed-call]], [[routed-dequeue]], [[routed-enqueue]], [[ServiceAlias]], [[GVHTTPAdapter#ServletMappings|ServletMapping]], [[SFTPManager]], [[Excel-call#Sheet|Sheet]], [[GVExcelWorkbookConfiguration#SheetConfig|SheetConfig]], [[shell-call]], [[Simpleformatter]], [[GVMailServices#smtp|smtp]], [[smtp-call]], [[J2ee-jca-call#spec-constructor|spec-constructor]], [[J2ee-jca-call#spec-property|spec-property]], [[SPOutputParams#SPOutputParam|SPOutputParam]], [[SPOutputParams]], [[J2ee-jca-call#string-to-xml|string-to-xml]], [[Retriever_Config#TableRetriever|TableRetriever]], [[GVConnectorConfiguration#TestExtension|TestExtension]], [[test-service-call]], [[Smtp-call#destinations|to]], [[GVHTTPAdapter#Transaction|Transaction]], [[GVConnectorConfiguration#Transactions|Transactions]], [[GVWebServices#UDDI|UDDI]], [[GVWebServices#UserDef|UserDef]], [[GVJbpmTaskListenerManager#UsersJbpm|userJbpm]], [[GVJbpmTaskListenerManager#UsersJbpm|UsersJbpm]], [[GVConnectorConfiguration#UserTransaction|UserTransaction]], [[GVConnectorConfiguration#VCLChannel|VCLChannel]], [[GVConnectorConfiguration#VCLOperation|VCLOperation]], [[VCLRouting]], [[GVWebServices#WebService|WebService]], [[J2ee-ejb-call#WLSSubjectBuilder|WLSSubjectBuilder]], [[ws-call]], [[rest-call]], [[Ws-call#WSDLInfo|WSDLInfo]], [[GVWebServices#WSOperation|WSOperation]], [[XAHelper]], [[J2ee-jca-call#xml-data|xml-data]], [[Filereader-call#xml-processor|xml-processor]], [[Ws-call#XPathNamespace|XPathNamespace]], [[Statement#XPathParamResolver|XPathParamResolver]].&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4097</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4097"/>
		<updated>2013-07-31T13:01:00Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| use-saaj || optional || Defines whether to use SAAJ to invoke the WebService mode instead of the default Axis2 mode. &amp;lt;br/&amp;gt; NOTE: If you choose to use SAAJ as a way of calling the WebService, Axis2 modules are not enabled. &amp;lt;br/&amp;gt; The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4096</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4096"/>
		<updated>2013-07-31T13:00:12Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
==RestServiceInvoker==&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| use-saaj || optional || Defines whether to use SAAJ to invoke the WebService mode instead of the default Axis2 mode. &amp;lt;br/&amp;gt; NOTE: If you choose to use SAAJ as a way of calling the WebService, Axis2 modules are not enabled. &amp;lt;br/&amp;gt; The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4095</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4095"/>
		<updated>2013-07-31T12:55:00Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| use-saaj || optional || Defines whether to use SAAJ to invoke the WebService mode instead of the default Axis2 mode. &amp;lt;br/&amp;gt; NOTE: If you choose to use SAAJ as a way of calling the WebService, Axis2 modules are not enabled. &amp;lt;br/&amp;gt; The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4094</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4094"/>
		<updated>2013-07-31T12:52:26Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| use-saaj || optional || Defines whether to use SAAJ to invoke the WebService mode instead of the default Axis2 mode. &amp;lt;br/&amp;gt; NOTE: If you choose to use SAAJ as a way of calling the WebService, Axis2 modules are not enabled. &amp;lt;br/&amp;gt; The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and has the sub-element:&lt;br /&gt;
* [[Description]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4093</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4093"/>
		<updated>2013-07-31T11:30:17Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
This element is used by [[ws-call]].&lt;br /&gt;
&lt;br /&gt;
Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''invoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestServiceInvoker'''.&lt;br /&gt;
|-&lt;br /&gt;
| endpoint || required || Endpoint exposed by the Rest Web Service to invoke. Can contain placeholders. It must be already escaped, if needed.&lt;br /&gt;
|-&lt;br /&gt;
| method || required || HTTP method to execute to the server.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* GET&lt;br /&gt;
* POST&lt;br /&gt;
* PUT&lt;br /&gt;
* DELETE&lt;br /&gt;
* HEAD&lt;br /&gt;
* OPTIONS&lt;br /&gt;
|-&lt;br /&gt;
| timeout || optional || Timeout in seconds.&lt;br /&gt;
|-&lt;br /&gt;
| ref-dp || optional || Name of [[Data_provider|Data Provider]] to use for preparing the request.&lt;br /&gt;
|-&lt;br /&gt;
| throwsFault || optional || If ''true'' throws Exception &amp;quot;Error invoking operation&amp;quot;. If ''false'' returns the Fault response. Default to false.&lt;br /&gt;
The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| use-saaj || optional || Defines whether to use SAAJ to invoke the WebService mode instead of the default Axis2 mode. &amp;lt;br/&amp;gt; NOTE: If you choose to use SAAJ as a way of calling the WebService, Axis2 modules are not enabled. &amp;lt;br/&amp;gt; The attribute's admitted values are:&lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
|-&lt;br /&gt;
| returnType || optional || Defines how to set the response data in the object field of output [[GVBuffer]]:&lt;br /&gt;
* context : the MessageContext&lt;br /&gt;
* envelope : the envelope as XML serialized as string&lt;br /&gt;
* body : the body as XML serialized as string&lt;br /&gt;
* body-element : the first child of body as XML serialized as string&lt;br /&gt;
* header : the header as XML serialized as string&lt;br /&gt;
* envelope-om : the envelope as OMMessage&lt;br /&gt;
* body-om : the body as OMMessage&lt;br /&gt;
* body-element-om : the first child of body as OMMessage&lt;br /&gt;
* header-om : the header as OMMessage&lt;br /&gt;
Default: context&lt;br /&gt;
|-&lt;br /&gt;
| mediaType || optional || This is used to specify the message format which the message needs to be serialized. See 'messageFormatters' configuration in axis2.xml file. Default value is: 'application/x-www-form-urlencoded'&lt;br /&gt;
|-&lt;br /&gt;
| contentType || optional || This is used to specify the message builder which the message needs to be serialized. See 'messageBuilders' configuration in axis2.xml file. Defaults to the value specified in 'mediaType' attribute.&lt;br /&gt;
|-&lt;br /&gt;
| responseMode || optional || This is used to specify if invoked service returns a response (OUT_IN) or not (OUT_ONLY). Default value is: OUT_IN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UNDER CONSTRUCTION...&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4092</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4092"/>
		<updated>2013-07-31T11:08:07Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The rest-call Element is used by [[Channel]] and [[routed-call]]. Its attributes are:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.ws.rest.RestCallOperation'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the [[Flow]] section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and its subelements:&lt;br /&gt;
* [[Description]]&lt;br /&gt;
* [[rest-call#RestServiceInvoker|RestServiceInvoker]]&lt;br /&gt;
* [[Proxy]]&lt;br /&gt;
&lt;br /&gt;
===RestServiceInvoker===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UNDER CONSTRUCTION...&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Description&amp;diff=4091</id>
		<title>Description</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Description&amp;diff=4091"/>
		<updated>2013-07-31T11:01:04Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Description.jpg|thumb|Groups section Description]]&lt;br /&gt;
Each element of the configuration provides a field '''Description''' optional that might contain free text available to the user.&lt;br /&gt;
&lt;br /&gt;
This field can be used for notes and information that help users in configuration management and by the application {{L_GVCONSOLE}} to enrich the reports relating to the configuration.&lt;br /&gt;
&lt;br /&gt;
The Description is always optional, but if used can not be empty. The element value cannot be null.&lt;br /&gt;
&lt;br /&gt;
The Description Element is used by: [[JNDIHelper|Advanced]], [[ServiceAlias#AliasMapping|AliasMapping]], [[Smtp-call#attachments|attachments]], [[GVWebServices#AxisExtra|AxisExtra]], [[Ws-call#AxisWebServiceInvoker|AxisWebServiceInvoker]], [[Smtp-call#destinations|bcc]], [[GVWebServices#Binding|Binding]], [[birt-report-call]], [[Base64Transformation]], [[GVServices#BpelEngineConfiguration|BpelEngineConfiguration]], [[BpelOperation#BpelFlow|BpelFlow]], [[BpelOperation]], [[GVWebServices#BusinessWebServices|BusinessWebServices]], [[GVConnectorConfiguration#Call|Call]], [[CallDescriptor]], [[Generic-call#call-parameter|call-parameter]], [[CallSPFormatter]], [[CallSPBaseFormatter|CallSPSimpleBaseFormatter]], [[Smtp-call#destinations|cc]], [[ChangeGVBuffer]], [[GVConnectorConfiguration#Channels|Channels]], [[GVConnectorConfiguration#ComplexExtension|ComplexExtension]], [[GVConnectorConfiguration#CompressExtension|CompressExtension]], [[GVJdbc#Connection|Connection]], [[GVWebServices#connectionProperty|connectionFactory]], [[GVWebServices#connectionProperty|connectionProperty]], [[GVJdbc#Connections|Connections]], [[GVConnectorConfiguration#ConnectorService|ConnectorService]], [[GVConnectorConfiguration#ConnectorServices|ConnectorServices]], [[Http-call#constructor-args|constructor-args]], [[Http-call#constructor-param|constructor-param]], [[Http-call#CustomProtocol|CustomProtocol]], [[DBOperations#DataSourceConnection|DataSourceConnection]], [[GVJDBCConnectionBuilder#DataSourceConnectionBuilder|DataSourceConnectionBuilder]], [[db-call]], [[DBOBuilder]], [[DBOCallSP]], [[DBOInsert]], [[DBOInsertOrUpdate]], [[DBOperations]], [[DBOSelect]], [[DBOThreadSelect]], [[DBOUpdate]], [[DBOUpdateOrInsert]], [[GVConnectorConfiguration#DecompressExtension|DecompressExtension]], [[GVConnectorConfiguration#DecryptExtension|DecryptExtension]], [[Smtp-call#destinations|destinations]], [[DBOBuilder|DHAlias]], [[DBOBuilder|DHAliasList]], [[dh-call]], [[DHVariables#DHVariable|DHVariable]], [[DMLWriteFormatter]], [[GVJdbc#Driver|Driver]], [[GVJDBCConnectionBuilder#DriverConnectionBuilder|DriverConnectionBuilder]], [[GVJDBCConnectionBuilder#DriverPoolConnectionBuilder|DriverPoolConnectionBuilder]], [[GVJdbc#Drivers|Drivers]], [[GVConnectorConfiguration#DTEExtension|DTEExtension]], [[GVConnectorConfiguration#EncryptExtension|EncryptExtension]], [[Http-call#endpoint|endpoint]], [[GVWebServices#EngageModule|EngageModule]], [[GVBIRTReportConfiguration#Engine|Engine]], [[ShellCommands#env-property]], [[excel-call]], [[excelreader-call]], [[GVBIRTReportConfiguration#ExcelReportRender|ExcelReportRender]], [[JNDIHelper|Extended]], [[GVConnectorConfiguration#Extension|Extension]], [[GVConnectorConfiguration#Extensions|Extensions]], [[GVConnectorConfiguration#External-Component|External-Component]], [[GVConnectorConfiguration#ExternalComponents|ExternalComponents]], [[GVConnectorConfiguration#External-Params|External-Params]], [[Extract-data-call#extract-data|extract-data]], [[extract-data-call]], [[FieldFormatters#FieldFormatter|FieldFormatter]], [[FieldFormatters]], [[Smtp-call#file-attachment|file-attachment]], [[Filemanager-call#FileCopyCommand|FileCopyCommand]], [[Filemanager-call#FileDeleteCommand|FileDeleteCommand]], [[Fsmonitor-call#FileFilter|FileFilter]], [[filemanager-call]], [[Fsmonitor-call#FileMonitorStatus|FileMonitorStatus]], [[Filemanager-call#FileMoveCommand|FileMoveCommand]], [[filereader-call]], [[Filemanager-call#FileSearchCommand|FileSearchCommand]], [[Filemanager-call#FileUnZipCommand|FileUnZipCommand]], [[filewriter-call]], [[Filemanager-call#FileZipCommand|FileZipCommand]], [[GVExcelWorkbookConfiguration#Font|Font]], [[GVExcelWorkbookConfiguration#Format|Format]], [[fsmonitor-call]], [[FTPManager]], [[generic-call]], [[GenericRetriever]], [[GVConnectorConfiguration#GenericTransaction|GenericTransaction]], [[GVConnectorConfiguration#GreenVulcanoCoreChannel|GreenVulcanoCoreChannel]], [[GVJbpmTaskListenerManager#GreenVulcanoPool|GreenVulcanoPool]], [[GVWebServices#GreenVulcanoWebService|GreenVulcanoWebService]], [[GVWebServices#GreenVulcanoWebServices|GreenVulcanoWebServices]], [[GVJbpmTaskListenerManager#GroupsJbpm|groupJbpm]], [[GVJbpmTaskListenerManager#GroupsJbpm|GroupsJbpm]], [[GVAdapterOpenSpCoop]], [[GVBIRTReportConfiguration]], [[Smtp-call#gvBuffer|gvBuffer]], [[GVBufferCondition]], [[GVBufferMapping#GVBufferFieldOutput|GVBufferFieldOutput]], [[GVBufferMapping]], [[Statement#GVBufferParam|GVBufferParam]], [[Statement#GVBufferParamResolver|GVBufferParamResolver]], [[GVConnectorConfiguration]], [[GVHL7ListenerManager#GVCoreApplication|GVCoreApplication]], [[gvcore-call]], [[GVDataHandlerConfiguration]], [[GVDataProviderManager]], [[GVExcelCreatorConfiguration]], [[Excel-call#GVExcelReport|GVExcelReport]], [[GVExcelWorkbookConfiguration#GVExcelWorkbook|GVExcelWorkbook]], [[GVExcelWorkbookConfiguration]], [[GVHL7ListenerManager]], [[GVJBPMConfiguration]], [[GVJbpmTaskListenerManager#GVJbpmListeners|GVJbpmListeners]], [[GVJbpmTaskListenerManager]], [[GVJdbc]], [[GVJDBCConnectionBuilder]], [[GVMailServices]], [[GVSQLErrorMapping]], [[GVWebServices]], [[GVHL7ListenerManager#HL7Activation|HL7Activation]], [[hl7-call]], [[GVHL7ListenerManager#HL7Listener|HL7Listener]], [[GVBIRTReportConfiguration#HTMLReportRender|HTMLReportRender]], [[http-call]], [[GVMailServices#imap|imap]], [[Fsmonitor-call#InMemoryMonitorStatus|InMemoryMonitorStatus]], [[jmx-call#invoke-parameter|invoke-parameter]], [[j2ee-ejb-call]], [[j2ee-jca-call]], [[Retriever_Config#JavaScriptRetriever|JavaScriptRetriever]], [[GVWebServices#JAXMLRegistry|JAXMLRegistry]], [[jbpm-call]], [[jbpm-task-call]], [[J2ee-jca-call#jca-connection-spec|jca-connection-spec]], [[J2ee-jca-call#jca-interaction-spec|jca-interaction-spec]], [[DBOperations#JDBCConnection|JdbcConnection]], [[jms-dequeue]], [[jms-enqueue]], [[jmx-call]], [[JNDIHelper]], [[Fsmonitor-call#LocalFileSystemMonitor|LocalFileSystemMonitor]], [[Smtp-call#destinations|mail-address]], [[Smtp-call#mail-message|mail-message]], [[GVMailServices#mail-service|mail-service]], [[Smtp-call#message-body|message-body]], [[GVMailServices#mime|mime]], [[GVWebServices#ModuleProperty|ModuleProperty]], [[openspcoop-call]], [[GVConnectorConfiguration#OperationDetails|OperationDetails]], [[GVBIRTReportConfiguration#Option|Option]], [[GVBIRTReportConfiguration#Options|Options]], [[Statement#Param|Param]], [[parameter]], [[GVBIRTReportConfiguration#Parameter|Parameter]], [[GVBIRTReportConfiguration#Parameters|Parameters]], [[J2ee-jca-call#param-gvbuffer|param-gvbuffer]], [[Jbpm-call#ParamJbpm|ParamJbpm]], [[Statement#ParamResolver|ParamResolver]], [[Jbpm-call|ParamsJbpm]], [[Jbpm-task-call#ParamsTask|ParamsTask]], [[GVWebServices#PasswordCallback|PasswordCallback]], [[GVBIRTReportConfiguration#PDFReportRender|PDFReportRender]], [[GVJDBCConnectionBuilder#PoolParameters|PoolParameters]], [[GVMailServices#pop3|pop3]], [[pop-call]], [[GVWebServices#Properties|Properties]], [[J2ee-jca-call#property|property]], [[GVBufferCondition#Property|Property]], [[GVBufferCondition#PropertyCompare|PropertyCompare]], [[GVSavePointNode#PropertyDef|PropertyDef]], [[GVConnectorConfiguration#Property-Field|Property-Field]], [[Proxy]], [[GVWebServices#PasswordCallback|PwCbBasicHandler]], [[QueryFormatter]], [[QueryFormatter#QueryXMLBaseFormatter|QueryXMLBaseFormatter]], [[GVBufferCondition#RangeDef|RangeDef]], [[Remotemanager-call#RemoteDeleteCommand |RemoteDeleteCommand]], [[Remotemanager-call#RemoteDownloadCommand |RemoteDownloadCommand]], [[Fsmonitor-call#RemoteFileSystemMonitor|RemoteFileSystemMonitor]], [[remotemanager-call]], [[Remotemanager-call#RemoteMoveCommand |RemoteMoveCommand]], [[Remotemanager-call#RemoteSearchCommand |RemoteSearchCommand]], [[Remotemanager-call#RemoteUploadCommand |RemoteUploadCommand]], [[GVBIRTReportConfiguration#Renders|Renders]], [[GVBIRTReportConfiguration#Report|Report]], [[GVBIRTReportConfiguration#ReportGroups|ReportGroup]], [[GVBIRTReportConfiguration#ReportGroups|ReportGroups]], [[ResultSet]], [[GVBufferCondition#RetCodeField|RetCodeField]], [[Retriever_Config|RetrieverConfig]], [[routed-call]], [[routed-dequeue]], [[routed-enqueue]], [[ServiceAlias]], [[GVHTTPAdapter#ServletMappings|ServletMapping]], [[SFTPManager]], [[Excel-call#Sheet|Sheet]], [[GVExcelWorkbookConfiguration#SheetConfig|SheetConfig]], [[shell-call]], [[Simpleformatter]], [[GVMailServices#smtp|smtp]], [[smtp-call]], [[J2ee-jca-call#spec-constructor|spec-constructor]], [[J2ee-jca-call#spec-property|spec-property]], [[SPOutputParams#SPOutputParam|SPOutputParam]], [[SPOutputParams]], [[J2ee-jca-call#string-to-xml|string-to-xml]], [[Retriever_Config#TableRetriever|TableRetriever]], [[GVConnectorConfiguration#TestExtension|TestExtension]], [[test-service-call]], [[Smtp-call#destinations|to]], [[GVHTTPAdapter#Transaction|Transaction]], [[GVConnectorConfiguration#Transactions|Transactions]], [[GVWebServices#UDDI|UDDI]], [[GVWebServices#UserDef|UserDef]], [[GVJbpmTaskListenerManager#UsersJbpm|userJbpm]], [[GVJbpmTaskListenerManager#UsersJbpm|UsersJbpm]], [[GVConnectorConfiguration#UserTransaction|UserTransaction]], [[GVConnectorConfiguration#VCLChannel|VCLChannel]], [[GVConnectorConfiguration#VCLOperation|VCLOperation]], [[VCLRouting]], [[GVWebServices#WebService|WebService]], [[J2ee-ejb-call#WLSSubjectBuilder|WLSSubjectBuilder]], [[ws-call]], [[rest-call]], [[Ws-call#WSDLInfo|WSDLInfo]], [[GVWebServices#WSOperation|WSOperation]], [[XAHelper]], [[J2ee-jca-call#xml-data|xml-data]], [[Filereader-call#xml-processor|xml-processor]], [[Ws-call#XPathNamespace|XPathNamespace]], [[Statement#XPathParamResolver|XPathParamResolver]].&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Routed-call&amp;diff=4090</id>
		<title>Routed-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Routed-call&amp;diff=4090"/>
		<updated>2013-07-31T10:50:00Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Used to make a routing mechanism at the level of communication channel, based on some conditions applied to the buffer GVBuffer.&lt;br /&gt;
During the execution of flows, the operation is seen as a simple call.&lt;br /&gt;
The implementation of the routed call checks the conditions and invokes a sub-operations accordingly.&lt;br /&gt;
&lt;br /&gt;
To configure a ''routed-call'' it is necessary:&lt;br /&gt;
* defines sub-operations: Each sub operation is identified by a unique name within the routed-call. &amp;lt;br/&amp;gt; The sub-operation can be selected are only those of type &amp;quot;call&amp;quot;.&lt;br /&gt;
* defines routing conditions: Check the values in GVBuffer fields. Each routing condition has a unique name within the routed-call.&lt;br /&gt;
* associate routing conditions to operations: Sub items 'VCLRouting' associate routing conditions with operations. The evaluation order is defined by the order of [[VCLRouting]] items. &amp;lt;br/&amp;gt; The sub-operation is performed corresponding to the first condition verified.&lt;br /&gt;
&lt;br /&gt;
The routed-call Element is used by [[Channel]], routed-call.&lt;br /&gt;
&lt;br /&gt;
It has the attributes:&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| type || fixed || This attribute must assume the value '''call'''.&lt;br /&gt;
|-&lt;br /&gt;
| class || fixed || This attribute must assume the value '''it.greenvulcano.gvesb.virtual.RoutedCall'''.&lt;br /&gt;
|-&lt;br /&gt;
| name || required || Operation name. Used in the 'Flow' section to associate workflow nodes to VCL operations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
and may have as subelements:&lt;br /&gt;
&lt;br /&gt;
* Description,&lt;br /&gt;
* [[GVBufferCondition]](s),&lt;br /&gt;
* (j2ee-ejb-call | j2ee-jca-call | jmx-call | smtp-call | pop-call | ws-call | rest-call | http-call | hl7-call | jbpm-call | jbpm-task-call | openspcoop-call | db-call | dh-call | extract-data-call | routed-call | gvcore-call | excel-call | excelreader-call | birt-report-call | test-service-call | generic-call | shell-call | filereader-call | filewriter-call | filemanager-call | fsmonitor-call | remotemanager-call)(s),&lt;br /&gt;
* [[VCLRouting]],&lt;br /&gt;
* [[ServiceAlias]]&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4089</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4089"/>
		<updated>2013-07-31T09:40:21Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UNDER CONSTRUCTION...&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4088</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4088"/>
		<updated>2013-07-31T09:39:43Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UNDER CONSTRUCTION...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4087</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4087"/>
		<updated>2013-07-31T08:40:37Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;version_ge3.4&amp;quot;&amp;gt;&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UNDER CONSTRUCTION...&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4086</id>
		<title>Rest-call</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Rest-call&amp;diff=4086"/>
		<updated>2013-07-31T08:40:10Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;version_ge3.3&amp;quot;&amp;gt;&lt;br /&gt;
The {{GVESB}} plugin '''ws-call''' defines the parameters for calling a Web Service using REST mode.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UNDER CONSTRUCTION...&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Plugins&amp;diff=4085</id>
		<title>Plugins</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Plugins&amp;diff=4085"/>
		<updated>2013-07-31T08:35:10Z</updated>

		<summary type="html">&lt;p&gt;D.franco: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In {{GVESB}}, a plug-in is a software component that extends the capability to access an external system, database or data in general. &lt;br /&gt;
&lt;br /&gt;
For example, plug-ins are commonly used in {{GVESB}} to read Excel files ([[excelreader-call]]), or for reading/writing a file ([[filereader-call]] / [[filewriter-call]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following tables show all the available {{GVESB}} plugins grouped by technology:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''File system'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVFileReader.png |20px]] || [[filereader-call]] || reading a file present in the file system&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVFileWriter.png |20px]] || [[filewriter-call]] || writing a file in the file system&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVFileManager.png |20px]] || [[filemanager-call]] || searching, moving, coping, deleting, compressing and uncompressing a file &lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVFsMonitor2.png |20px]] || [[fsmonitor-call]] || getting a XML report of a directory containing the existing, created, modified and deleted files, from the last scan&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRemoteManager.png |20px]] || [[remotemanager-call]] || performing operations to a file present in a remote file system via FTP/SFTP/FTPS&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVShellID.png |20px]] || [[shell-call]] || executing a shell command&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRSHFileReader.png |20px]] || [[rsh-filereader-call]] || reading a file in a local or remote file system through the {{GVESB}} RSH RMI server&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRSHFileWriter.png |20px]] || [[rsh-filewriter-call]] || writing a file in a local or remote file system through the {{GVESB}} RSH RMI server&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRSHCall.png |20px]] || [[rsh-call]] || executing a shell command in a local or remote system through the {{GVESB}} RSH RMI server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WebService'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVWsCall.png | 20px]] || [[ws-call]] || defining useful information for making a call to a Web Service&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRestCall.png | 20px]] || [[rest-call]] || defining useful information for making a call to a Web Service using Rest mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Data Base'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVDBCall.png | 20px]] || [[db-call]] || basic DB interaction&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVDHCall.png | 20px]] || [[dh-call]] || defining the parameter for making a call to [[DataHandler]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVBirtReportCall.png | 20px]] || [[birt-report-call]] || defining the parameter to generate a BIRT report&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVExcelCall.png | 20px]] || [[excel-call]] || defining the parameter to create an Excel report from a DB select&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JMS'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Enqueue32.png | 20px]] || [[jms-enqueue]] || performing a queuing/publish operation on a JMS queue/topic&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Dequeue32.png | 20px]] || [[jms-dequeue]] || performing a reception operation from a JMS queue/topic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Routing'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRoutedCall.png | 20px]] || [[routed-call]] || creating a routing mechanism at the level of communication channel&amp;lt;br/&amp;gt; during the execution of flows, the operation is seen as a simple call&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRoutedDequeueCall.png | 20px]] || [[routed-dequeue]] || creating a routing mechanism at the level of communication channel&amp;lt;br/&amp;gt; during the execution of flows, the operation is seen as a simple dequeue&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVRoutedEnqueueCall.png | 20px]] || [[routed-enqueue]] || creating a routing mechanism at the level of communication channel&amp;lt;br/&amp;gt; during the execution of flows, the operation is seen as a simple enqueue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Mail'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVSmtpCall.png | 20px]] || [[smtp-call]] || sending an email&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVPopCall.png | 20px]] || [[pop-call]] || receiving an email&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''J2EE'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVEjbCall.png | 20px]] || [[j2ee-ejb-call]] ||  invoking an Enterprise Java Bean&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVJcaCall.png | 20px]] || [[j2ee-jca-call]] || invoking an adapter JCA  (Java Connector Architecture) that exposes the interface CCI  (Common Client Interface).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''LDAP'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVLDAPSearch.png | 20px]] || [[ldap-search-call]] || searching data on LDAP servers&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVLDAPUpdate.png | 20px]] || [[ldap-update-call]] || updating data on LDAP servers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVHttpCall.png | 20px]] || [[http-call]] ||  calling HTTP methods on remote servers&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVHl7Call.png | 20px]] || [[hl7-call]] || invoking synchronous services on systems that use the HL7 v2 protocol with messages either standard or in XML format&lt;br /&gt;
|-&lt;br /&gt;
| [[File:call.png | 20px]] || [[jbpm-call]] || using the JBPM plugin&lt;br /&gt;
|-&lt;br /&gt;
| [[File:call.png | 20px]] || [[jbpm-task-call]] || using the JBPM TASK plugin&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVopenspcoopCall.png | 20px]] || [[openspcoop-call]] || using the Open SPCoop plugin&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Utility'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVJmxCall.png | 20px]] || [[jmx-call]]  || invoking MBean methods or set/get attributes on servers&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVextractData.png | 20px]] || [[extract-data-call]] || extract data from the body of the message&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVtest.png | 20px]] || [[test-service-call]] || simulate a test service&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVExcelReaderCall.png | 20px]] || [[excelreader-call]] || reading from a Excel file&lt;br /&gt;
|-&lt;br /&gt;
| [[File:GVGenericCall.png | 20px]] || [[generic-call]] || doing a [[Develop Generic VCL Call|user developed generic plug-in]] invocation&lt;br /&gt;
|- &lt;br /&gt;
| [[File:GVCoreCall.png | 20px]] || [[gvcore-call]] || invoking directly a flow of the {{GVESB}} core &lt;br /&gt;
|- &lt;br /&gt;
| [[File:GVRulesCall.png | 20px]] || [[rules-call]] || invoking a Rule Engine service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Twitter'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;gvtable&amp;quot; style=&amp;quot;width: 80%&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 5%&amp;quot; | !! style=&amp;quot;width: 20%&amp;quot; | Plug-in !! style=&amp;quot;width: 75%&amp;quot; | Use this for ...&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Tweet.png | 20px]] || [[twitter-update-status]]  || tweet&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Retweet.png | 20px]] || [[twitter-retweet-status]] || retweet&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Follow.png | 20px]] || [[twitter-enable-notification]] || follow&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Unfollow.png | 20px]] || [[twitter-disable-notification]] || unfollow&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Follower.png | 20px]] || [[twitter-get-followers-ids]] || get followers&lt;br /&gt;
|- &lt;br /&gt;
| [[File:AddUser.png | 20px]] || [[twitter-get-friends-ids]] || get friends&lt;br /&gt;
|- &lt;br /&gt;
| [[File:Message.png | 20px]] || [[twitter-send-direct-message]] || send direct tweet&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{VOTE}}&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
	<entry>
		<id>https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Channel&amp;diff=4084</id>
		<title>Channel</title>
		<link rel="alternate" type="text/html" href="https://gvwiki.greenvulcano.com/gvwiki/index.php?title=Channel&amp;diff=4084"/>
		<updated>2013-07-31T08:32:59Z</updated>

		<summary type="html">&lt;p&gt;D.franco: /* {{VULCON}} / {{GVCONSOLE}} Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
The '''Operations''' are grouped into '''Channels''', how organize the '''Operation''' within the '''Channels''' is a choice of {{GVESB}} developer &lt;br /&gt;
&lt;br /&gt;
Usually the '''Operations''' are grouped by:&lt;br /&gt;
*Technology: Some servers may have different technological interfaces (eg HTTP, RMI), then you can allocate additional channels to group operations based on the technology used.&lt;br /&gt;
* Abstraction: It 'possible that a system is actually composed of several heterogeneous systems (such a situation can occur, for example, during a migration, or due to modification or replacement of systems). For each subsystem is possible to build a Channel.&lt;br /&gt;
&lt;br /&gt;
=={{VULCON}} / {{GVCONSOLE}} Configuration==&lt;br /&gt;
&lt;br /&gt;
The Channel is identified by an unique attribute id-channel, this attribute is unique within the System entity. The Channel subelement are the Operations, {{GVESB}} offers a wide variety of Operations that you can use in your service. See [[plugins]] section.&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
&lt;br /&gt;
From the {{L_VULCON}} Core view, it is possible to insert a new Channel by right clicking the [[System]] element you are working on. Then ''Insert after'' and press Channel*. A new Channel element will be created. Fill the ''id-channel'' property in the properties view. Now you can insert all the operations needed.&lt;/div&gt;</summary>
		<author><name>D.franco</name></author>
		
	</entry>
</feed>