1 / 115

Tecnologie per e-service

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.

maia
Download Presentation

Tecnologie per e-service

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tecnologie per e-service Composizione di e-service Workflow Management Systems B. Pernici Politecnico di Milano

  2. Sommario • Workflow management systems: concetti generali • Processi e web-service • BPEL • Altri approcci • WorkFlow Management Coalition (WFMC)

  3. SOA

  4. ServiceRequestor Find Bind Transport Medium ServiceDirectory Publish ServiceProvider SOA Reminder

  5. SOAP ...in relazione ai Web Services Service Requestor WSDL UDDI

  6. Web Services PerformDelivery UDDI, WSDL,SOAP,... Check Credit Rating ProduceInvoice SOA In Action

  7. 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

  8. 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

  9. 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”)

  10. WorkflowConcetti generali

  11. 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

  12. 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

  13. 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, …

  14. Processo

  15. Gestione ordine Controllo disponibilita’ Stampa report Approvazione Compila BdO Excel impiegato responsabile Contabilita’ Word fine Contabilita’ approva direttore Direttore controlla

  16. 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

  17. Workflow Management System • istanze di processo (o casi) • ciascuna con i propri dati e i propri partecipanti

  18. Partecipante di un Workflow • esegue il lavoro associato a una particolare istanza di attività • lista dei lavori (worklist): compiti assegnati a partecipante risorsa

  19. Esempio di schermata (client)

  20. Process Instance Worklist Process Definition Process Definition A Activity B Activity A Activity D Activity C

  21. 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

  22. 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

  23. 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

  24. Processi e Web service

  25. 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

  26. 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

  27. BPEL e gli altri

  28. 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

  29. portType <receive> <receive> BPEL process <reply> Web service Vista di un web service implementato come processo BPEL c c

  30. 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

  31. 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’

  32. 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

  33. Esempio

  34. Vista interna

  35. 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>

  36. 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>

  37. 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

  38. Processo loanApprovalProcess

  39. 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>

  40. 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>

  41. Processi con percorsi non sequenziali

  42. 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>

  43. 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"/>

  44. 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>

  45. 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>

  46. 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>

  47. Esecuzione

  48. 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

  49. Uso correlation set Secondo receive: Acceptance-receive Se stesso nome e cognome -> stessa istanza di processo

  50. 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.

More Related