Difference between revisions of "ProcessSVCEmails and ProcessSingleSVCEmail"

From GreenVulcano Wiki
Jump to: navigation, search
(Created page with "==Description== thumb|TestFileAttachment descriptionThis example shows how {{GVESB}} receipts and processes emails. The workflow consis...")
 
Line 1: Line 1:
 
==Description==
 
==Description==
  
[[File:GVExamplesTestFileAttachment.jpg|thumb|TestFileAttachment description]]This example shows how {{GVESB}} 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.
+
This example shows how {{GVESB}} 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:
 
ProcessSVCEmails service executes the following operations:
Line 16: Line 15:
  
 
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.
 
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:
 +
 +
{|class="gvtable"
 +
! Attribute/Subelement !! Value
 +
|-
 +
| [[pop-call]] || name="ReceiveSVCEmail" <br/>delete-messages="true"  <br/>expunge="true" <br/>jndi-name="gvesb.mailServer"
 +
|-
 +
| [[smtp-call]] || name="SendEmailSVCResponse" <br/>jndi-name="gvesb.mailServer"  <br/>
 +
                  mail-message:
 +
: content-type="text-plain"
 +
: high-priority="false"
 +
: sender-display-name="GV ESB"
 +
: subject="RE: ${property['SUBJECT']}"
 +
: message-body:
 +
:: gvBuffer-dump="false"
 +
:: message-text:
 +
::: Persons data
 +
: attachments
 +
:: gvBuffer:
 +
::: name="PersonsData_${@it.greenvulcano.util.txt.DateUtils@nowToString('yyyyMMddHHmmss')}.${property['FILE_EXT']}"
 +
|-
 +
| [[smtp-call]] || name="SendEmailNoSVC" <br/>jndi-name="gvesb.mailServer"  <br/>
 +
                  mail-message:
 +
: content-type="text-plain"
 +
: high-priority="true"
 +
: sender-display-name="GV ESB"
 +
: subject="RE: ${property['SUBJECT']}"
 +
: message-body:
 +
:: gvBuffer-dump="false"
 +
:: message-text:
 +
::: Invalid service request. Available Services:
 +
:::: SVC=LIST_EXCEL[!NAME=.....]
 +
:::: SVC=LIST_PDF[!NAME=.....]
 +
:::: SVC=LIST_BIRT[!TYPE=EXCEL or PDF(default)][!NAME=.....]
 +
|- 
 +
| [[excel-call]] || name="listPerson" <br/>
 +
GVExcelReport:
 +
: format="default"
 +
: group="CREDIT"
 +
: jdbc-connection="ds.gv_test"
 +
: Sheet:
 +
:: id="1"
 +
:: name="Person List"
 +
:: title="Person List - timestamp{{dd/MM/yyyy HH:mm:ss}}"
 +
:: statement:
 +
::: type="select"
 +
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
 +
<nowiki>decode{{@{{NAME}}::NULL::::and p.NAME='@{{NAME}}'}}</nowiki>
 +
order by c.NAME, p.NAME
 +
: Sheet:
 +
:: id="2"
 +
:: name="Credit Card List"
 +
:: title="Credit Card List - <nowiki>timestamp{{dd/MM/yyyy HH:mm:ss}}"</nowiki>
 +
:: statement:
 +
::: type="select"
 +
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
 +
<nowiki>decode{{@{{NAME}}::NULL::::and p.NAME='@{{NAME}}'}}</nowiki>
 +
order by p.NAME
 +
|-
 +
| [[birt-report-call]] || groupName="TestGRP" <br/>name="CreditCards" <br/>reportName="Credit Cards" <br/> reportType="excel"
 +
|-
 +
| [[dh-call]] || name="UserDataAsPDF"<br/> DBOBuilder:
 +
: jdbc-connection-name="ds.gv_test"
 +
: name="UserDataAsPDF"
 +
: DHVariables:
 +
:: DHVariable name="decimal-separator" value="."
 +
:: DHVariable name="grouping-separator" value=","
 +
:: DHVariable name="format" value="#0.00"
 +
:: DHVariable name="NAME" value="NULL"
 +
: DBOSelect:
 +
:: name="UserDataAsPDF"
 +
:: transformation="UserDataAsPDF"
 +
:: statement:
 +
::: id="1"
 +
::: keys="1,2,3"
 +
::: type="select"
 +
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
 +
<nowiki>decode{{@{{NAME}}::NULL::::and p.NAME like '%@{{NAME}}'}}</nowiki>
 +
order by c.NAME, p.NAME</statement>
 +
|}

Revision as of 11:34, 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: 
content-type="text-plain"
high-priority="false"
sender-display-name="GV ESB"
subject="RE: ${property['SUBJECT']}"
message-body:
gvBuffer-dump="false"
message-text:
Persons data
attachments
gvBuffer:
name="PersonsData_${@it.greenvulcano.util.txt.DateUtils@nowToString('yyyyMMddHHmmss')}.${property['FILE_EXT']}"
smtp-call name="SendEmailNoSVC"
jndi-name="gvesb.mailServer"
                  mail-message: 
content-type="text-plain"
high-priority="true"
sender-display-name="GV ESB"
subject="RE: ${property['SUBJECT']}"
message-body:
gvBuffer-dump="false"
message-text:
Invalid service request. Available Services:
SVC=LIST_EXCEL[!NAME=.....]
SVC=LIST_PDF[!NAME=.....]
SVC=LIST_BIRT[!TYPE=EXCEL or PDF(default)][!NAME=.....]
excel-call name="listPerson"

GVExcelReport:

format="default"
group="CREDIT"
jdbc-connection="ds.gv_test"
Sheet:
id="1"
name="Person List"
title="Person List - timestampTemplate:Dd/MM/yyyy HH:mm:ss"
statement:
type="select"
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
Sheet:
id="2"
name="Credit Card List"
title="Credit Card List - timestamp{{dd/MM/yyyy HH:mm:ss}}"
statement:
type="select"
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:
jdbc-connection-name="ds.gv_test"
name="UserDataAsPDF"
DHVariables:
DHVariable name="decimal-separator" value="."
DHVariable name="grouping-separator" value=","
DHVariable name="format" value="#0.00"
DHVariable name="NAME" value="NULL"
DBOSelect:
name="UserDataAsPDF"
transformation="UserDataAsPDF"
statement:
id="1"
keys="1,2,3"
type="select"
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>