giovedì 13 dicembre 2012

Workflow Foundation

Ammetto che non mi sono mai affacciato a questo argomento, ma avendo qualche attimo libero ho provato a comprenderne qualcosa in più.
Probabilmente più per curiosità che per altro. Ma ammetto che una volta che si entra nell'ottica, lascia spazio a tante iniziative divertenti ed edificanti.

Ammetto c'e'  parecchia letteratura sull'argomento, ma ad oggi mi sembra  una pratica poco diffusa, o per quanto ne so io l'impiego tradizionale del codice è sicuramente più efficace o più ... piacevole.

"De facto" si tratta della classica implementazione a Flowchart, ( già proprio quella che ci hanno insegnato quei dinosauri di professori negli anni 80... ) che parrebbe ritornare in voga per concretizzarsi e rendere un filo più visuale la programmazione.

Volte sapere quanto ?  tanto così:




"evito" di spiegarvi che cosa fa questo branetto di codice... ma di suo mi ha permesso di comprendere come avviene lo scambio di informazioni fra classi all'interno di una sequence.

In breve questo è il contenuto delle due classi ( BaseActivity e NextActivity ) ...


BaseActivity
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;

namespace WF.FirstActivity
{
    public sealed class BaseActivity : CodeActivity
    {

        public InArgument<string> Input { get; set; }

        public OutArgument<string> Output { get; set; }


        protected override void Execute(CodeActivityContext context)
        {
            if (Input.Get(context) == "Step1")
            {
                Output.Set(context, "Step2");
                return;
            }
            Output.Set(context, "Nop");
        }
    }
}


NextActivity
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;

namespace WF.FirstActivity
{
    public sealed class NextActivity : CodeActivity
    {

        public InArgument<string> Input { get; set; }

        public OutArgument<string> Output { get; set; }


        protected override void Execute(CodeActivityContext context)
        {
            if (Input.Get(context) == "Step2")
            {
                Output.Set(context, "Step3");
                return;
            }
            Output.Set(context, "Nop");
        }
    }
}

Il cui scopo è di "portare avanti un attività".

Tutto il resto è "imputato" manualmente da proprietà o impostazioni.


Ammetto per il momento la cosa è divertente.. ma dove mi porterà tutto questo ..


Nessun commento: