1.15k likes | 1.34k Views
Tecnologie per e-service. Composizione di e-service Workflow Management Systems B. Pernici Politecnico di Milano. Sommario. Workflow management systems: concetti generali Processi e web-service BPEL Altri approcci WorkFlow Management Coalition (WFMC). SOA. Service Requestor. Find.
E N D
Tecnologie per e-service Composizione di e-service Workflow Management Systems B. Pernici Politecnico di Milano
Sommario • Workflow management systems: concetti generali • Processi e web-service • BPEL • Altri approcci • WorkFlow Management Coalition (WFMC)
ServiceRequestor Find Bind Transport Medium ServiceDirectory Publish ServiceProvider SOA Reminder
SOAP ...in relazione ai Web Services Service Requestor WSDL UDDI
Web Services PerformDelivery UDDI, WSDL,SOAP,... Check Credit Rating ProduceInvoice SOA In Action
Processi, web service e workflow • Processo ottenuto come invocazione di più servizi web -> orchestrazione di web service • BPEL4WS • Esecuzione di attività collegate da parte di più agenti -> workflow • WorkFlow Coalition reference architecture
Work Flow Management: Introduzione • La caratteristica principale della tecnologia dei WF è l’automazione di processi che coinvolgono una combinazione di attività umane e automatiche, in particolare con il coivolgimento di applicazioni e strumenti IT
Cosa è un Workflow? • L’automazione di un business process, in tutto o in parte, in cui documenti, informazioni o compiti sono passati da un partecipante a un altro per svolgere attività, secondo un insieme di regole procedurali • Molte singole istanze di processo possono essere operative durante l’enactment di un processo, ciascuna associata a un insieme di dati rilevanti per quella particolare istanza di processo (o “caso” o workflow “case”)
Definizione dei processi • rete di attività • criteri per iniziare e terminare il processo • informazioni sulle singole attività • partecipanti, documenti e dati collegati • applicazioni sw da utilizzare
Partecipante di un Workflow risorsa umana • una persona • un gruppo che condivide un insieme di compiti da svolgere applicazione software hardware specifico in grado di eseguire il compito
Process Definition • Rappresentazione di un processo in una forma che consente la manipolazione automatica • Per modellazione • Per enactment • La definizione di un processo consiste in una rete di attività e loro relazioni, criteri per indicare l’inizio e la fine di un processo, e informazioni riguardo le singole attività, quali I partecipanti, le applicazioni IT associate, I dati, …
Gestione ordine Controllo disponibilita’ Stampa report Approvazione Compila BdO Excel impiegato responsabile Contabilita’ Word fine Contabilita’ approva direttore Direttore controlla
Evoluzione dei workflow • gestione di documenti • posta elettronica • groupware • software per la gestione dei progetti • BPR e strumenti per la progettazionestrutturata • separazione delle funzionalità di gestione di WF • orchestrazione di web-service elaborazione di immagini
Workflow Management System • istanze di processo (o casi) • ciascuna con i propri dati e i propri partecipanti
Partecipante di un Workflow • esegue il lavoro associato a una particolare istanza di attività • lista dei lavori (worklist): compiti assegnati a partecipante risorsa
Process Instance Worklist Process Definition Process Definition A Activity B Activity A Activity D Activity C
Process Definition Process Instance Worklist Work Item1 Activity B Work Item2 Activity D Activity A Activity C 1st Process Instance Work List 1 Process Definition A 2nd Process Instance
Process Definition Process Instance Worklist Work Item1 Activity B Work Item2 Activity D Activity A Activity C 3rd Process Instance Work Item3 1st Process Instance Work List 1 Process Definition A 2nd Process Instance Work List 2
Process Definition Process Instance Worklist Work Item2 Activity B Work Item4 Activity D Activity A Activity C Work Item3 Work Item5 1st Process Instance Work List 1 Process Definition A A eseguita 2nd Process Instance Work List 2 3rd Process Instance
BPEL4WS • Business Process Execution Language for Web Services • Obiettivo: • Specifica un modello di comportamento dei servizi web durante un processo di business • Si pone ad un livello più alto dei linguaggi visti fino ad adesso in ambito WS • Grammatica basata su XML • Descrive la logica di funzionamento del processo • Interpretato da un orchestration engine che coordina il processo
WF e web-service • Orchestrazione di servizi: • Invocazione di web-service secondo una sequenza predefinita • Schema di processo • Esecuzione automatica del processo • Il processo è anch’esso un web-service
BPEL e gli altri • Un documento BPEL è legato a WSDL in tre modi: • I processi BPEL vengono esposti come servizi Web tramite WSDL, con cui vengono descritti i punti iniziali e finali del processo; • I tipi di dati WSDL vengono utilizzati all’interno di un processo per descrivere le informazioni passate tra le richieste; • Con WSDL è possibile fare riferimento a servizi esterni. • WS-Transaction • Standard per la descrizione delle transazioni a lungo termine
portType <receive> <receive> BPEL process <reply> Web service Vista di un web service implementato come processo BPEL c c
Definizione processo: Documenti BPEL • Descrizione delle attività • Due tipologie di attività • Semplici • Strutturate, contengono altre attività e ordine di esecuzione • Inizio e termine del processo • Receive: il processo è in attesa di ricevere un messaggio • Reply: il processo risponde al messaggio ricevuto • Receive + Reply formano request-response • Nota: receive e reply possono essere anche essere utilizzate per interazioni intermedie
Documenti BPEL Attivita’ semplici di base • Receive • Reply • Invoke, consente l’invocazione di una operazione su un WS • Assign, consente di modificare il valore di una variabile Costruttori • Sequence, costruisce una sequenza di azioni • Switch, consente di scegliere fra azioni diverse • While, consente di far ciclare le azioni (loop) • Flow, consente l’esecuzione di più attività in parallelo • Pick, blocca un’attività fino all’arrivo di un messaggio Link, collegamenti tra attivita’
Documento BPEL • Container (variable) • Tipi di dati usati nel processo • Specifica WSDL • Partners • Partecipanti al processo • Ogni partner è caratterizzato da un service link type • Role • funzionalità svolta da un partner all’interno del processo • Un partner può avere più ruoli
Definizione dei messaggi Listing 1: Loan Definitions WSDL (loandefinitions.wsdl) <definitions targetNamespace="http://tempuri.org/services/loandefinitions" xmlns:tns="http://tempuri.org/services/loandefinitions" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="creditInformationMessage"> <part name="firstName" type="xsd:string"/> <part name="name" type="xsd:string"/> <part name="amount" type="xsd:integer"/> </message> <message name="loanRequestErrorMessage"> <part name="errorCode" type="xsd:integer"/> </message> </definitions>
Servizio LoanApprover Listing 2: Loan Approver WSDL (loanapprover.wsdl) <definitions targetNamespace="http://tempuri.org/services/loanapprover"…/> <import …/> <message name="approvalMessage"> <part name="accept" type="xsd:string"/> </message> <portType name="loanApprovalPT"> <operation name="approve"> <input message="loandef:creditInformationMessage"/> <output message="tns:approvalMessage"/> <fault name="loanProcessFault" message="loandef:loanRequestErrorMessage"/> </operation> </portType> <binding ...> ... </binding> <service name="LoanApprover">....</service> </definitions>
Il processo Loan Approval come web service Listing 3: Loan Approval WSDL(loan-approval.wsdl) <definitions targetNamespace="http://loans.org/wsdl/loan-approval" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:slnk="http://schemas.xmlsoap.org/ws/2002/06/service-link/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:lns="http://loans.org/wsdl/loan-approval" xmlns:apns="http://tempuri.org/services/loanapprover"> <import namespace="http://tempuri.org/services/loanapprover" location="http://localhost:8080/bpwssamples/ loanapproval/loanapprover.wsdl"/> <import namespace="http://tempuri.org/services/loandefinitions" location="http://localhost:8080/bpwssamples/ loanapproval/loandefinitions.wsdl"/> <slnk:serviceLinkType name="loanApprovalLinkType"> <slnk:role name="approver"> <portType name="apns:loanApprovalPT"/> </slnk:role> </slnk:serviceLinkType> <service name="loanapprovalServiceBP"/> </definitions> Utilizzato per entrambi i servizi Definizione di max due ruoli per port type
Definizione processo (1) <process name="loanApprovalProcess" targetNamespace="http://acme.com/simpleloanprocessing" xmlns="http://schemas.xmlsoap.org/ws/2002/07/business-process/" xmlns:lns="http://loans.org/wsdl/loan-approval" xmlns:loandef="http://tempuri.org/services/loandefinitions" xmlns:apns="http://tempuri.org/services/loanapprover"> <partners> <partner name="customer" serviceLinkType="lns:loanApprovalLinkType" myRole="approver"/> <partner name="approver" serviceLinkType="lns:loanApprovalLinkType" partnerRole="approver"/> </partners> <containers> <container name="request" messageType="loandef:CreditInformationMessage"/> <container name="approvalInfo" messageType="apns:approvalMessage"/> </containers>
Definizione processo (2) <sequence> <receive name="receive1" partner="customer" portType="apns:loanApprovalPT" operation="approve" container="request" createInstance="yes"> </receive> <invoke name="invokeapprover" partner="approver" portType="apns:loanApprovalPT" operation="approve" inputContainer="request" outputContainer="approvalInfo"> </invoke> <reply name="reply" partner="customer" portType="apns:loanApprovalPT" operation="approve" container="approvalInfo"> </reply> </sequence> </process>
Loan Assessor Listing 1. Loan assessor's WSDL snippet (loanassessor.wsdl) <definitions targetNamespace="http://tempuri.org/services/loanassessor" … <message name="riskAssessmentMessage"> <part name="risk" type="xsd:string"/> </message> <portType name="riskAssessmentPT"> <operation name="check"> <input message="loandef:creditInformationMessage"/> <output message="tns:riskAssessmentMessage"/> <fault name="loanProcessFault" message= "loandef:loanRequestErrorMessage"/> </operation> </portType> <binding ...> ... </binding> <service name="LoanAssessor">....</service> </definitions>
Nuove definizioni <slnk:serviceLinkType name="riskAssessmentLinkType"> <slnk:role name="assessor"> <portType name="asns:riskAssessmentPT"/> </slnk:role> </slnk:serviceLinkType> <partner name="assessor" serviceLinkType="lns:riskAssessmentLinkType" partnerRole="assessor"/> <container name="riskAssessment" messageType="asns:riskAssessmentMessage"/>
Definizione flusso (1) <flow> <links> <link name="receive-to-assess"/> <link name="receive-to-approval"/> <link name="approval-to-reply"/> <link name="assess-to-setMessage"/> <link name="setMessage-to-reply"/> <link name="assess-to-approval"/> </links> <receive name="receive1" partner="customer“ portType="apns:loanApprovalPT" operation="approve" container="request" createInstance="yes"> <source linkName="receive-to-assess" transitionCondition= "bpws:getContainerData('request', 'amount')<10000"/> <source linkName="receive-to-approval" transitionCondition= "bpws:getContainerData('request', 'amount')>=10000"/> </receive>
Definizione flusso (2) <invoke name="invokeAssessor" partner="assessor" portType="asns:riskAssessmentPT" operation="check" inputContainer="request" outputContainer="riskAssessment"> <target linkName="receive-to-assess"/> <source linkName="assess-to-setMessage" transitionCondition="bpws:getContainerData('riskAssessment', 'risk')='low'"/> <source linkName="assess-to-approval" transitionCondition= "bpws:getContainerData('riskAssessment', 'risk')!='low'"/> </invoke>
Definizione flusso (3) <assign name="assign"> <target linkName="assess-to-setMessage"/> <source linkName="setMessage-to-reply"/> <copy> <from expression="'yes'"/> <to container="approvalInfo" part="accept"/> </copy> </assign> <invoke name="invokeapprover" partner="approver" portType="apns:loanApprovalPT“ operation="approve" inputContainer="request“ outputContainer="approvalInfo"> <target linkName="receive-to-approval"/> <target linkName="assess-to-approval"/> <source linkName="approval-to-reply" /> </invoke> <reply name="reply" partner="customer" portType="apns:loanApprovalPT“ operation="approve" container="approvalInfo"> <target linkName="setMessage-to-reply"/> <target linkName="approval-to-reply"/> </reply> </flow> </process>
Creazione Processo • Creazione su receive • createInstance=“Yes” • Correlation set • Non vi e’ un istanceID per l’istanza di processo • I correlation set definiscono le “chiavi” del processo • Es: firstName, name nel processo indicato • Altre richieste che arrivano al processo con lo stesso Nome e Cognome vengono correlate all’istanza gia’ attiva del processo • Utili per long-running business processes
Uso correlation set Secondo receive: Acceptance-receive Se stesso nome e cognome -> stessa istanza di processo
Altre attività di base • I Faults possono essere gestiti in BPEL4WS con una <throw> activity. • L’attività <terminate> può essere utilizzata per abbandonare immediatamente l’esecuzione in una istanza di processo che la esegue • L’attività <wait> permette di aspettare un intervallo di tempo o una deadline • L’attivtà <empty> non fa nulla. Può essere utilizzata per catturare e gestire un fault.