Esempio di compensazione personalizzataCustom Compensation Sample

In questo esempio viene illustrato come usare CompensableActivity e il relativo gestore di compensazione per definire la logica di compensazione personalizzata.This sample shows how to use CompensableActivity and its compensation handler to define custom compensation logic. Lo scenario modellato in questo esempio è una Agenzia di noleggio furgoni.The scenario modeled in this sample is a Truck Rental Agency.

Dettagli dell'esempioSample Details

Di seguito sono riportati i passaggi simulati:The steps simulated are:

  1. L'utente richiede preventivi per il noleggio di furgoni per una data specificata.The user requests truck rental quotes for a given date.

  2. Vengono contattate tre società di noleggio furgoni e vengono forniti tre preventivi.Three truck companies are contacted and the three quotes are provided.

  3. L'utente sceglie un preventivo e procede all'ordine tramite carta di credito.The user selects one truck quote and proceeds to order by credit card.

  4. Gli altri due preventivi vengono annullati dall'applicazione.The application cancels the other two truck quotes.

  5. Tramite l'applicazione viene addebitata una commissione di servizio che non è risarcibile, per i clienti privi di un conto premium, se l'annullamento avviene entro un massimo di 10 giorni antecedenti la data di prenotazione.The application charges a service fee that is non-refundable for non-premium accounts if cancelation happens 10 days or less prior to the reservation date.

  6. Tramite l'applicazione viene addebitata la tariffa di noleggio del furgone.The application charges the truck rental fee.

  7. L'applicazione attende fino alla data di prenotazione o fino a quando il cliente decide di annullare la prenotazione, a seconda dell'evento che si verifica per primo.The application waits until the reservation date or until the customer decided to cancel the reservation, whichever comes first.

  8. Se il cliente annulla la prenotazione, viene eseguita la logica di compensazione personalizzata CompensationHandler in base alla logica seguente:If the customer cancels the reservation, the CompensationHandler custom compensation logic runs according to the following logic:

    1. Se il cliente non dispone di un conto "premium" e mancano meno di 10 giorni alla data di prenotazione, la commissione di servizio viene comunque addebitata. In caso contrario, la commissione di servizio viene rimborsata dall'applicazione.If the customer has a non-premium account and it is less than 10 days prior to the reservation date, then the service fee is still charged; otherwise, the application refunds the service fee.

    2. Il resto delle attività compensabili (ordine del furgone + tariffa di ordine del furgone) viene eseguito sulla base della logica di compensazione predefinita che consiste nel compensare in ordine inverso di esecuzione.The rest of the compensable activities (truck order + truck order fee) are run according to the default compensation logic, which is to compensate in reverse order of execution.

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. In Visual Studio 2010Visual Studio 2010 aprire il file della soluzione CustomCompensation.sln.Using Visual Studio 2010Visual Studio 2010, open the CustomCompensation.sln solution. Si trova nella directory \WF\Basic\Compensation\CustomCompensation.It is located in the \WF\Basic\Compensation\CustomCompensation directory.

  2. Per compilare la soluzione, premere CTRL+MAIUSC+B.Press CTRL+SHIFT+B to build the solution.

  3. Premere CTRL+F5 per eseguire l'applicazione.Press CTRL + F5 to run the application.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Compensation\CustomCompensation