ente.
Un elemento <end
point> define un 'punto final' en la configuracion.
Un endpoint pued
e ser comprendido como un punto final de la direccion, basado en
WSDL
<endpoint [name="string"] [key="string"]>
address-endpoint | default-endpoint | wsdl-endpoint | load-balanced-endp
oint | fail-over-endpoint
</endpoint>
**********------------------------**********
Todos los endpoint pueden tener un atributo 'name' which especifica el n
ombre del endpoint y puede ser referenciado
por otros endpoint utilizando el atributo 'key'.
-> Por ejemplo si hay un endpoint llamado 'foo' se puede utilizar en cu
alquier lugar donde se llame a foo
<endpoint key="foo">
*DATO: Esto permite la reutilizacion de endpoints definidos
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Mediators - Catalogo de Mediadores
-----------------------------------Send mediator
|
Enviar mensajes fuera de Synpase con un en
dpoint
<send>
(endpointref | endpoint)+
</send>
-----------------------------------Ex. <definitions xmlns="http://ws.apache.org/ns/synapse">
<in> <!-- in-path -->
<send>
<endpoint>
<address uri="http://localhost:9
000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
<drop/>
</in>
<out> <!-- out-path -->
<send/>
</out>
</definitions>
------------------------------------------------------------------------
e mediacion
<sequence key="name"/>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Event Mediator
|
Envia notificaciones de eventos a un origen
de eventos, publica mensajes a temas predefinidos
<event xmlns="http://ws.apache.org/ns/synapse" topic="" [express
ion=""] />
-----------------------------------Ex. <definitions xmlns="http://ws.apache.org/ns/synapse">
<sequence name="PublicEventSource" >
<log level="full"/>
<event topic="SampleEventSource"/>
</sequence>
<proxy name="EventingProxy">
<target inSequence="PublicEventSource" />
</proxy>
</definitions>
-----------------------------------------------------------------------Se define en el <event topic> como "SampleEventSource". Cuando u
na notificacion
de eventos viene al <proxy name="EventingProxy"> los mensajes pa
san a ser registrados
y enviados a SampleEventSource
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Drop Mediation
|
El Drop Mediator detiene el procesamiento
del mensaje actual
<drop/> <!-- Es como un break; -->
-----------------------------------<definitions xmlns="http://ws.apache.org/ns/synapse">
<filter source="get-property('To')" regex=".*/StockQuote
.*">
<send>
<endpoint>
<address uri="http://localhost:9
000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
<drop/>
</filter>
<send/>
</definitions>
-----------------------------------------------------------------------En este caso el mensaje es botado despues de enviar el <endpoint
>.
Asi se evita que el mensaje sea enviado 2 veces desde la ruta de
l in-path
<in> <!-- in-path -->
<send>
<endpoint>
<address uri="http://localhost:9
000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
<drop/>
</in> <!-- in-path -->
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Enrich Mediator
|
Enriquece un mensaje
<enrich>
<source \[clone=true\|false\] \[type=custom\|envelope\|b
ody\|property\|inline\] xpath="" property="" />
<target \[action=replace\|child\|sibiling\] \[type=custo
m\|envelope\|body\|property\|inline\] xpath="" property="" />
</enrich>
-----------------------------------<enrich> xmlns="http://ws.apache.org/ns/synapse"
<source clone="false" type="envelope" xpath="" proper
ty="" />
<target action="replace" type="body" xpath="" propert
y="" />
</enrich>
-----------------------------------------------------------------------Se establece el simbolo de propiedad
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Filter Mediator
| Puede ser utilizado con el filto XPath de m
ensajes.
| Hay 2 mododos de ut
ilizarlo
<filter (source="xpath" regex="string") | xpath="xpath">
mediator+
</filter>
-----------------------------------*Se puede utilizar para manejar escenarios de trabajo
-----------------------------------<filter (source="xpath" regex="string") | xpath="xpath">
<then [sequence="string"]>
| los mensajes
que tengan exito son mediados por el 'then'
mediator+
</then>
<else [sequence="string"]>
| los mensajes
que fallen seran mediados por el 'else'
mediator+
</else>
</filter>
-----------------------------------Ex. <filter source="get-property('To')" regex=".*/StockQuote.*">
<then>
<send/>
| send mediator
</then>
<else>
<drop/>
| drop mediator
</else>
</filter>
------------------------------------------------------------------------
mediator+
</default>?
</switch>
*El "Switch Mediator" evaluar el 'source="xpath" expresion' entregado en
<switch source="xpath"/> y lo har conicidir con el <regex="string"/>
en donde si los casos especificados no coinciden y existe un <default/>
este se ejecutar.
-----------------------------------Ex. <switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http:/
/services.samples/xsd">
<case regex="IBM">
<!-- El Property Mediator establece una propie
dad local en el mensaje actual -->
<property name="symbol" value="Great stock - I
BM"/>
</case>
<case regex="MSFT">
<property name="symbol" value="Are you sure? MSFT"/>
</case>
<default>
<!-- Existe la posibilidad de asignar el resul
tado de una expresion Xpath, as -->
<property name="symbol"
expression="fn:concat('Normal St
ock - ', //m0:getQuote/m0:request/m0:symbol)"
xmlns:m0="http://services.sample
s/xsd"/>
</default>
</switch>
-----------------------------------------------------------------------Aqui se obtiene texto del simbolo(elemento) y se coincide con lso valore
s MSFT e IBM de <case regex="IBM"/><case regex="MSFT"/>
----------------------------------------------------------------------------------------------------------------------------------------------*DATO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Router Mediator
|
Ruta de mensajes basados en el filtrado
Xpath -> ya obsoleta, pero s epuede utilizar
|
"Filter Mediator" o "Conditional Router
Mediator"
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *** Filter Mediator
o por el XPath filtrando mensajes.
s de funcion.
1.- Si el usuario especifica el Xpath, se evalua como 'true' o '
false'.
2.- Si el usuario especifica una 'regex' el String retorna de ev
aluar el Xpath y se compar con el regex
* En ambos casos si la evaluacion de la expresion devuelve 'true
' se ejecutan los child Mediators.
|
breakRoute es true.
-----------------------------------------------------------------------<conditionalRouter continueAfter="(true|false)">
<route breakRoute="(true|false)">
<condition ../>
<target ../>
</route>+
</conditionalRouter>
-----------------------------------Ex.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*DATO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------XSLT Mediator
|
El XSLT Mediator aplica un XSLT Trans
formation en un elemento del mensaje actual.
|
El atributo d
e origen especifica el elemento que se ha seleccionado para aplicar el XSLT Tran
sformation.
|
En el caso do
nde no se especifica el elemento de origen, se utiliza el primer hijo de SOAP co
mo elemento seleccionado.
|
Ocionalmente,
los parametros pueden pasar en las transformacions a traves de los elementos de
propiedad. Estas propiedades
|
corresponden
al XSL parameters y pueden ser pueden acceder durante la transformacion por
|
<xsl:param na
me="the name of the property"/>. El elemento define algunas funciones que deben
ser explicitamente establecidos
|
a la Transfor
merFactory.
----------------------------------------------------------------------------------------------------------Ex.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*DATO
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------URLRewrite Mediator
|
El URLRewrite Mediator es usado para mod
ificar y
| transformar la URL disponible en el Mensaje
Ex.
<rewrite>
<rewriterule>
*DATO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Mediation Sequences
-> Pueden contener otros mediadores y ejecutarlos
-> Cuando un mensaje entra en la secuencia se enva por todos sus
mediadores
_______________
|
Sequence
|
||
| Mediator 1 |
| Mediator 2 |
| Mediator 3 |
| Mediator X |
| Mediator .. |
et-property('ERROR_MESSAGE')"/>
</syn:log>
<syn:drop/>
</syn:sequence>
****------------------------------------****
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Proxys Services
"Pueden" definir los transportes sobre los cuales se expone el servicio,
y apuntan
a las "Mediation Sequences" que se deben utilizar para procesar los mens
ajes de peticion y respuesta
a traves del "Proxy Service".
*DATO -> Un Proxy Service tal vez SOAP o un servicio REST/POX sobre(a tr
avs) de HTTPs o SOAP, POX, texto plano
o un servicio Binary/Legacy para otros medios de transporte, tales como
los sistemas de archivos JMS y VFS
El elemento <proxy> es usado para definir un "Synapse Proxy Service"
<proxy name="string" [transports="(http |https |jms |.. )+|all"] [pinned
Servers="(serverName )+"] [serviceGroup="string"]>
<description>...</description>?
<target [inSequence="name"] [outSequence="name"] [faultSequence=
"name"] [endpoint="name"]>
<inSequence>...</inSequence>?
inSquenc
e o enpoint para la configuracion de un proxy
<outSequence>...</outSequence>?
define como se manejan las respuestas
<faultSequence>...</faultSequence>?
<endpoint>...</endpoint>?
enpoint o inSquence para la configuracion de un proxy
</target>?
<publishWSDL key="string" uri="string">
puede cargar
un documento WSDL desde el atributo "key" o desde otro lugar con el atribuo uri
,
( <wsdl:definition>...</wsdl:definition> | <wsdl20:des
cription>...</wsdl20:description> )?
<resource location="..." key="..."/>*
</publishWSDL>?
<enableAddressing/>?
<enableSec/>?
<enableRM/>?
<policy key="string" [type="(in | out)"]/>?
// Politicas d
e servicio o niveles de mensajes opcionales, talezs como 'WS-Security y/o Politic
as WS-RM'
<parameter name="string">
// Parametros opcional
es de servicio como 'transport.jms.ConnectionFactory'
string | xml
</parameter>
</proxy>
--------------------------------------------------------------------------------------------------------------Ex. <publishWSDL key="my.wsdl">
<resource location="http://www.standards.org/standard.ws
dl" key="standard.wsdl"/>
</publishWSDL>
--------------------------------------------------------------------------------------------------------------Ejemplos ESB Proxy Services
-> Muestra 150 - Introduccion a Proxy Services
***********************************************
<definitions xmlns="http://ws.apache.org/ns/synapse">
<proxy name="StockQuoteProxy">
<target>
<endpoint>
<address uri="http://localhost:9000/serv
ices/SimpleStockQuoteService"/>
</endpoint>
<outSequence>
<send/>
</outSequence>
</target>
<publishWSDL uri="file:repository/samples/resources/prox
y/sample_proxy_1.wsdl"/>
</proxy>
</definitions>