Difference between revisions of "ProcessSVCEmails and ProcessSingleSVCEmail"
| Line 31: | Line 31: | ||
: sender-display-name="GV ESB"  | : sender-display-name="GV ESB"  | ||
: subject="RE: ${property['SUBJECT']}"  | : subject="RE: ${property['SUBJECT']}"  | ||
| − | : message-body:  | + | : '''message-body''':  | 
:: gvBuffer-dump="false"  | :: gvBuffer-dump="false"  | ||
:: message-text:  | :: message-text:  | ||
::: Persons data    | ::: Persons data    | ||
| − | : attachments  | + | : '''attachments''':  | 
:: gvBuffer:  | :: gvBuffer:  | ||
| − | ::: name="PersonsData_${@it.greenvulcano.util.txt.DateUtils@nowToString('yyyyMMddHHmmss')}.${property['FILE_EXT']}"  | + | ::: name="PersonsData_${@it.greenvulcano.util.txt.DateUtils@nowToString('yyyyMMddHHmmss')}.  | 
| + | ${property['FILE_EXT']}"  | ||
|-  | |-  | ||
| [[smtp-call]] || name="SendEmailNoSVC" <br/>jndi-name="gvesb.mailServer"  <br/>mail-message:    | | [[smtp-call]] || name="SendEmailNoSVC" <br/>jndi-name="gvesb.mailServer"  <br/>mail-message:    | ||
| Line 44: | Line 45: | ||
: sender-display-name="GV ESB"  | : sender-display-name="GV ESB"  | ||
: subject="RE: ${property['SUBJECT']}"  | : subject="RE: ${property['SUBJECT']}"  | ||
| − | : message-body:  | + | : '''message-body''':  | 
:: gvBuffer-dump="false"  | :: gvBuffer-dump="false"  | ||
| − | :: message-text:  | + | :: '''message-text''':  | 
::: Invalid service request. Available Services:  | ::: Invalid service request. Available Services:  | ||
:::: SVC=LIST_EXCEL[!NAME=.....]  | :::: SVC=LIST_EXCEL[!NAME=.....]  | ||
| Line 56: | Line 57: | ||
: group="CREDIT"  | : group="CREDIT"  | ||
: jdbc-connection="ds.gv_test"  | : jdbc-connection="ds.gv_test"  | ||
| − | : Sheet:  | + | : '''Sheet''':  | 
:: id="1"  | :: id="1"  | ||
:: name="Person List"  | :: name="Person List"  | ||
| Line 67: | Line 68: | ||
  <nowiki>decode{{@{{NAME}}::NULL::::and p.NAME='@{{NAME}}'}}</nowiki>  |   <nowiki>decode{{@{{NAME}}::NULL::::and p.NAME='@{{NAME}}'}}</nowiki>  | ||
  order by c.NAME, p.NAME  |   order by c.NAME, p.NAME  | ||
| − | : Sheet:  | + | : '''Sheet''':  | 
:: id="2"  | :: id="2"  | ||
:: name="Credit Card List"  | :: name="Credit Card List"  | ||
| Line 73: | Line 74: | ||
:: statement:  | :: statement:  | ||
::: type="select"  | ::: type="select"  | ||
| − |   select p.NAME as 'Name', cc.CNUMBER as 'Card Number', cc.CREDIT as 'Credit', decode(cc.ENABLED, 'Y', 'Yes', 'No') as 'Active'    | + |   select p.NAME as 'Name', cc.CNUMBER as 'Card Number', cc.CREDIT as 'Credit',  | 
| + |  decode(cc.ENABLED, 'Y', 'Yes', 'No') as 'Active'    | ||
  from PERSON p, CREDIT_CARD cc  |   from PERSON p, CREDIT_CARD cc  | ||
  where p.ID = cc.ID_OWNER  |   where p.ID = cc.ID_OWNER  | ||
| Line 84: | Line 86: | ||
: jdbc-connection-name="ds.gv_test"  | : jdbc-connection-name="ds.gv_test"  | ||
: name="UserDataAsPDF"  | : name="UserDataAsPDF"  | ||
| − | : DHVariables:  | + | : '''DHVariables''':  | 
:: DHVariable name="decimal-separator" value="."  | :: DHVariable name="decimal-separator" value="."  | ||
:: DHVariable name="grouping-separator" value=","  | :: DHVariable name="grouping-separator" value=","  | ||
:: DHVariable name="format" value="#0.00"  | :: DHVariable name="format" value="#0.00"  | ||
:: DHVariable name="NAME" value="NULL"  | :: DHVariable name="NAME" value="NULL"  | ||
| − | : DBOSelect:  | + | : '''DBOSelect''':  | 
:: name="UserDataAsPDF"  | :: name="UserDataAsPDF"  | ||
:: transformation="UserDataAsPDF"  | :: transformation="UserDataAsPDF"  | ||
| − | :: statement:  | + | :: '''statement''':  | 
::: id="1"  | ::: id="1"  | ||
::: keys="1,2,3"  | ::: keys="1,2,3"  | ||
Revision as of 11:39, 21 February 2012
Description
This example shows how GreenVulcano® ESB receipts and processes emails. The workflow consists in two services: ProcessSVCEmails which receives the messages and for each one calls service ProcessSingleSVCEmail that processes it.
ProcessSVCEmails service executes the following operations:
- Checks if there are new service messages
 - For each one invokes a processing service
 
ProcessSingleSVCEmails service executes the following operations:
- Receives data from an email
 - Reads the subject and verifies if it is well formatted
 - If subject is well formatted invokes the respective service for the request. If don't, sends a preconfigured email.
 
VulCon Configuration
The preferred mode for creating a Service (at least its skeleton) is through the Service Wizard. Before using it you must first configure the VCL plugins needed. 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.
Defining System, Channel and Operations
To define a System, go to VulCon core view and, into Systems element, insert the System CREDIT if it is not already present. From there create the Channel CHANNEL_CREDIT_MAIL in which the following operations will be configured:
| Attribute/Subelement | Value | 
|---|---|
| pop-call | name="ReceiveSVCEmail"  delete-messages="true" expunge="true" jndi-name="gvesb.mailServer"  | 
| smtp-call | name="SendEmailSVCResponse"  jndi-name="gvesb.mailServer" mail-message: 
 ${property['FILE_EXT']}"  | 
| smtp-call | name="SendEmailNoSVC"  jndi-name="gvesb.mailServer" mail-message: 
  | 
| excel-call | name="listPerson"  GVExcelReport: 
 select p.NAME as 'Name&', p.BIRTHDATE as 'Birth Date', c.NAME as 'City'
from PERSON p, CITY c
where p.ID_CITY = c.ID
decode{{@{{NAME}}::NULL::::and p.NAME='@{{NAME}}'}}
order by c.NAME, p.NAME
 select p.NAME as 'Name', cc.CNUMBER as 'Card Number', cc.CREDIT as 'Credit',
decode(cc.ENABLED, 'Y', 'Yes', 'No') as 'Active' 
from PERSON p, CREDIT_CARD cc
where p.ID = cc.ID_OWNER
decode{{@{{NAME}}::NULL::::and p.NAME='@{{NAME}}'}}
order by p.NAME
 | 
| birt-report-call | groupName="TestGRP"  name="CreditCards" reportName="Credit Cards" reportType="excel"  | 
| dh-call | name="UserDataAsPDF" DBOBuilder: 
 select p.NAME, p.BIRTHDATE, c.NAME, cc.CNUMBER, cc.CREDIT, cc.ENABLED
from PERSON p, CITY c, CREDIT_CARD cc
where p.ID_CITY = c.ID
and p.ID = cc.ID_OWNER
decode{{@{{NAME}}::NULL::::and p.NAME like '%@{{NAME}}'}}
order by c.NAME, p.NAME</statement>
 |