Salve a tutti.
Mi sto affacciando da pochissimo a questa tecnologia per implementarla in una Web Application e naturalmente mi trovo di fronte a dei problemi.
Volevo realizzare un semplice esempio per capire il funzionamento. (Non ha molto senso logico, ma è solo per apprendimento)
Da una parte ho una semplicissima classe
WorkFlow1.cs derivata da
SequentialWorkflowActivity che contiene due proprietà pubbliche (String StringaRicevuta e String MessaggioFinale) e un metodo associato ad una
codeActivity che setta la stringa a seconda del contenuto di StringaRicevuta (MessaggioFinale = "GIUSTO"; oppure MessaggioFinale = "SBAGLIATO";)
Dall'altra parte ho la mia pagina Default.aspx che contiene un TextBox e un Bottone. Nel Page_Load non faccio alcuna operazione riguardante il workflow, ma solo al Click del bottone come riportato sotto:
//Metodo Richiamato all'avvio del bottone
protected void AvviaWF_Click(object sender, EventArgs e)
{
//Mi creo la lista di parametri con il nome della proprietà
//pubblica e il valore del textbox
Dictionary<string, object> parameters =
new Dictionary<string, object>();
parameters.Add("StringaRicevuta", txtTest.Text);
WorkflowRuntime wr = new WorkflowRuntime();
wr.WorkflowCompleted +=new EventHandler<WorkflowCompletedEventArgs>(WFCompleted);
//Faccio partire il Worflow
WorkflowInstance workflowInstance =
wr.CreateWorkflow(typeof(WorkFlowEsempio), parameters);
workflowInstance.Start();
}
//Metodo Richiamato al Completamento del Worflow
void WFCompleted(object sender, WorkflowCompletedEventArgs e)
{
Session["test"] = e.OutputParameters["MessaggioFinale"].ToString();
}
Il mio problema nasce al completamento del Workflow. Molto probabilmente sbaglio io a recuperare i dati oppure salto qualche procedura. Sta di fatto che il workflow dal debug sembra funzionare correttamente, ma effettivamente al completamento quando assegno la sessione, al successivo postback non vedo niente. Ho provato ad inizializzare il testo di una label, a fare un Response.Write ma senza successo. Cosa posso fare? Avete un consiglio?
Grazie a tutti.