Condividi tramite


Attività 2: definizione dell'interfaccia IExpenseReportService

In questa attività viene creata l'interfaccia IExpenseReportService. Questa interfaccia consente al flusso di lavoro e all'applicazione host di comunicare utilizzando un protocollo predefinito. L'interfaccia contiene due metodi che vengono utilizzati dal flusso di lavoro per chiamare un metodo definito nell'applicazione host. Vengono inoltre definiti due eventi per l'applicazione host per comunicare al flusso di lavoro quando si verificano determinati eventi.

Nota

Anche se è consigliabile seguire gli esercizi in modo lineare, non è strettamente necessario. È possibile iniziare l'esercizio aprendo il progetto di esempio e procedendo secondo i passaggi illustrati nella sezione seguente.

Definizione e implementazione dell'interfaccia

Definire l'interfaccia come illustrato nella procedura seguente.

Per definire l'interfaccia IExpenseReportService

  1. Nel file di codice sorgente SimpleExpenseReport creare un'interfaccia public denominata IExpenseReportService e aggiungere all'interfaccia l'attributo ExternalDataExchangeAttribute.

  2. Aggiungere un metodo denominato GetLeadApproval che accetta un parametro String denominato message all'interfaccia IExpenseReportService.

  3. Aggiungere un metodo denominato GetManagerApproval che accetta un parametro String denominato message all'interfaccia IExpenseReportService.

  4. Aggiungere un evento generico EventHandler di tipo ExternalDataEventArgs denominato ExpenseReportApproved.

  5. Aggiungere un evento generico EventHandler di tipo ExternalDataEventArgs denominato ExpenseReportRejected.

    Il codice seguente mostra la definizione completata dell'interfaccia IExpenseReportService.

    [ExternalDataExchange]
    public interface IExpenseReportService
    {
        void GetLeadApproval(string message);
        void GetManagerApproval(string message);
        event EventHandler<ExternalDataEventArgs> ExpenseReportApproved;
        event EventHandler<ExternalDataEventArgs> ExpenseReportRejected;
    }
    

Implementazione dell'interfaccia

Modificare la classe MainForm in modo che possa implementare l'interfaccia IExpenseReportService.

Per implementare l'interfaccia IExpenseReportService

  1. Modificare la dichiarazione della classe MainForm in modo che possa implementare l'interfaccia IExpenseReportService.

    Nota

    Questo passaggio rappresenta un passaggio aggiuntivo a quello relativo alla classe Form dalla quale deriva la classe MainForm.

    public class MainForm : Form, IExpenseReportService
    
  2. Nella classe MainForm creare un metodo delegato private denominato GetApprovalDelegate che accetta un parametro String denominato message.

    private delegate void GetApprovalDelegate(string message);
    
  3. Nella classe MainForm creare un evento EventHandler generico private di tipo ExternalDataEventArgs denominato reportApproved.

    private event EventHandler<ExternalDataEventArgs> reportApproved;
    
  4. Nella classe MainForm creare un evento EventHandler generico private di tipo ExternalDataEventArgs denominato reportRejected.

    private event EventHandler<ExternalDataEventArgs> reportRejected;
    
  5. Nella classe MainForm creare una proprietà di evento EventHandler generico public di tipo ExternalDataEventArgs denominata ExpenseReportApproved.

  6. Nella proprietà di evento ExpenseReportApproved creare le funzioni di accesso add e remove per aggiungere e rimuovere i gestori eventi dall'evento reportApproved.

    private ExternalDataExchangeService exchangeService = null;
    
  7. Nella classe MainForm creare una proprietà di evento EventHandler generico pubblico di tipo ExternalDataEventArgs denominata ExpenseReportRejected.

  8. Nella proprietà di evento ExpenseReportRejected creare le funzioni di accesso add e remove per aggiungere e rimuovere i gestori eventi dall'evento reportRejected.

    public event EventHandler<ExternalDataEventArgs> ExpenseReportApproved
    {
        add
        {
            reportApproved += value;
        }
        remove
        {
            reportApproved -= value;
        }
    }
    
  9. Nella classe MainForm, creare un campo privato ExternalDataExchangeService denominato exchangeService.

    public event EventHandler<ExternalDataEventArgs> ExpenseReportRejected
    {
        add
        {
            reportRejected += value;
        }
        remove
        {
            reportRejected -= value;
        }
    }
    
  10. Nel costruttore MainForm creare una nuova istanza dell'oggetto exchangeService dopo aver creato l'oggetto workflowRuntime.

  11. Chiamare il metodo AddService dell'oggetto workflowRuntime passando l'oggetto exchangeService come un parametro.

  12. Chiamare il metodo AddService dell'oggetto exchangeService passando l'istanza della classe MainForm come un parametro.

    this.workflowRuntime = new WorkflowRuntime();
    
    this.exchangeService = new ExternalDataExchangeService();
    workflowRuntime.AddService(exchangeService);
    exchangeService.AddService(this);
    workflowRuntime.StartRuntime();
    
  13. Nella classe MainForm creare un metodo public denominato GetLeadApproval che accetta un parametro String denominato message.

    public void GetLeadApproval(string message)
    {
    }
    
  14. Nella classe MainForm creare un metodo public denominato GetManagerApproval che accetta un parametro String denominato message.

    public void GetManagerApproval(string message)
    {
    }
    

Compilazione del codice

Per informazioni sulla compilazione del codice, vedere Compilazione del codice.

Nota

A questo punto, quando si compila il progetto vengono visualizzati due avvisi. Nella prossima attività verranno utilizzati gli eventi ExpenseReportApproved e ExpenseReportRejected.

In Esercizio 3: creare il flusso di lavoro sequenziale del report di spesa semplice verrà completata la creazione del flusso di lavoro sequenziale aggiungendo attività che comunicano con l'applicazione host.

Vedere anche

Riferimenti

ExternalDataExchangeAttribute
ExternalDataEventArgs

Concetti

Utilizzo di servizi locali nei flussi di lavoro
Flusso di lavoro e comunicazioni tra applicazioni

Altre risorse

Esercizio 3: creare il flusso di lavoro sequenziale del report di spesa semplice

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.