in

DotNetSide

Dot Net South Italy Developers User Group
Latest post 14 Nov 2006 10:20 by GBFoundation. 6 replies.
Page 1 of 1 (7 items)
Sort Posts: Previous Next
  • 10 Nov 2006 16:36

    Domande a fine webcast...

    .....queste sono le mie domande poste a mighel sul blog

    1)a quando un webcast più tecnico(con più codice)?

    2)ricollegandomi alla domanda di alessandro( se non ricordo male), in cui ti chiedeva chi può far cosa...credo che volesse sapere se è possibile applicare una sorta di acl sugli stati, cioè poter dire questo stato lo vedi solo se appartieni ad un determinato ruolo ecc....si tratta di fare tutto a manina scrivere codice nei vari code activity

    3)è possibile avere degli stati paralleli, avere quindi l'entità contemporaneamente nello step A, B e C?

    http://addshare.blogspot.com/ Imparo, Imparo, Imparo

    • Post Points: 20
  • 10 Nov 2006 23:15 In reply to

    Re: Domande a fine webcast...

    Ciao GBFoundation, innanzitutto grazie per aver accolto la mia richiesta di pubblicare qui le tue domande Smile.
    Allora.....vediamo....

    GBFoundation:
    1)a quando un webcast più tecnico(con più codice)?

     Ho in mente qualcosa Zip it! . Spero di avere qualche certezza la prossima settimana. Non posso aggiungere altro Zip it!Wink

    GBFoundation:

    2)ricollegandomi alla domanda di alessandro( se non ricordo male), in cui ti chiedeva chi può far cosa...credo che volesse sapere se è possibile applicare una sorta di acl sugli stati, cioè poter dire questo stato lo vedi solo se appartieni ad un determinato ruolo ecc....si tratta di fare tutto a manina scrivere codice nei vari code activity

    Non ho ancora avuto modo di testare direttamente (conto comunque di farlo durante qualche pausa a WPC) ma...di fare è certamente fattibile (alla fine sei stai usando il .NET Framework). Il problema (cosa che mi fu chiesta durante il webcast) è se andava fatto a mano. La risposta è "parzialmente si". Ti puoi "aiutare" con la Policy Activity (devo fare un paio di test però) ma si dovrebe poterlo fare.
    Il problema però va spostato non tanto sulla fattibilità quanto all'utilità di questa cosa. Mi spiego meglio: se prendi una macchina a stati, non ci vedo molto senso nell'impedire ad un determinato utente (o ad un determinato ruolo) di vedere uno stato in particolare. Se lo faccio, avrei una macchina inconsistente (se si trova nello stato B e non posso vederlo....che vedo?).
    Semmai potrebbe essere utile (ed avere più senso) impedire ad un utente (o ad un ruolo) di modificare lo stato della macchina (ad esempio, il ruolo User può portare la macchina dallo stato A a quello B ma non da quello B a quello C). Ma questa, se ci pensi, è una limitazione che dovremmo dare al client, un po' come oggi facciamo quando disabilitiamo voci di menù non accessibili ad un determinato ruolo. E' infatti sempre un evento (umano o di sistema) a modificare lo stato di una macchina.
    Ho risposto?

    GBFoundation:

    3)è possibile avere degli stati paralleli, avere quindi l'entità contemporaneamente nello step A, B e C?

    Nella stessa istanza No e non avrebbe senso. Pensa ad una State Machine relativa ad un ordine di un sito web. Se l'ordine è in uno stato, di certo non può trovarsi in un altro. E per quanto mi sforzi di pensarci, non vedo scenari in cui questa situazione (stato multiplo) possa essere richiesto. Hai un esempio più concreto?

    Ciao e grazie Smile

     

    • Post Points: 20
  • 11 Nov 2006 10:03 In reply to

    Re: Domande a fine webcast...

    ..per quanto riguarda la risposta n 2, non la "condivido" pienamente...il fatto di spostare la logica di validazione stato sul client certo è una soluzione, ma che trovo poco incapsulata, nel senso che è ben diverso poter dire sul workflow alcuni utenti recuperati che sò da activity directory, possono leggere quel determinato stato, oppure possono scriverci, oppure possono farlo transitare(sarebbe tra gli activity custom che farei ;P), garantisci a mio parere una manutenzione maggiore, sai che tutto ciò che riguarda il flusso si trova sul disegno/activity e non sparso nell'ambiente di hosting(anche se alla fine senza l'ambiente di hosting non si può avere un workflow)...

    Il punto 3 invece lo reputo molto importante in certe situazione(forse quelle che fino ad adesso ho analizzato io: flussi documentali)....nei flussi documentali quasi sempre c'è questa esigenza...banalmente considera un documento diviso in capitoli, un capitolo deve essere scritto da te e uno da me, non posso aspettare che te finisci di scrivere il tuo per iniziare io, ognuno di noi vede una porzione, quella che gli compete, e porta a termine il suo lavoro ma senza preoccuparsi di cosa stai facendo te, dato che apparteniamo a due uffici diversi, abbiamo ruoli diversi ecc...in questo modo avresti il documento contemporaneamente nello stato "Capitolo Mighel" e "Capitolo Gb"...poi spetterà allo stato che io chiamo "imbuto"(o sarebbe più giusto usare termini come join ecc) cioè quello in cui giungeranno i due stati, avere un certo tipo di logica ma questo è un altro discorso.....spero di aver risposto...

    http://addshare.blogspot.com/ Imparo, Imparo, Imparo

    • Post Points: 20
  • 11 Nov 2006 10:49 In reply to

    Re: Domande a fine webcast...

    GBFoundation:

    ..per quanto riguarda la risposta n 2, non la "condivido" pienamente...il fatto di spostare la logica di validazione stato sul client certo è una soluzione, ma che trovo poco incapsulata, nel senso che è ben diverso poter dire sul workflow alcuni utenti recuperati che sò da activity directory, possono leggere quel determinato stato, oppure possono scriverci, oppure possono farlo transitare(sarebbe tra gli activity custom che farei ;P), garantisci a mio parere una manutenzione maggiore, sai che tutto ciò che riguarda il flusso si trova sul disegno/activity e non sparso nell'ambiente di hosting(anche se alla fine senza l'ambiente di hosting non si può avere un workflow)...

    Parzialmente condivido questa tua perplessità ed infatti, come ho specificato nel mio messaggio, c'è la Policy Activity che potresti usare all'interno del Workflow per gestire la visibilità (o l'esecuzione) di una determinata activity (o stato). Quello che io ci vedo è però un piccolo rischio: se impedisco ad un utente di vedere uno stato, e la macchina si trova proprio in quello, che vede l'utente???
    Per quanto riguarda l'abilitazione all'esecuzione dell'evento di cambio stato, ha più senso ma se lo metto nel wf, lo faccio con la policy e mi devo gestire la cosa nell'interfaccia. Personalmente io ragiono sempre così: se un utente non è abilitato a fare una certa cosa, evito di fargli vedere il bottone (o il link) che fa quella specifica operazione. Dato che questa cosa io me la gestirei comunque, tanto vale che me la gestisco in UI.
    Ad ogni modo, vedo nella Policy la soluzione più sensata.

    GBFoundation:
    Il punto 3 invece lo reputo molto importante in certe situazione(forse quelle che fino ad adesso ho analizzato io: flussi documentali)....nei flussi documentali quasi sempre c'è questa esigenza...banalmente considera un documento diviso in capitoli, un capitolo deve essere scritto da te e uno da me, non posso aspettare che te finisci di scrivere il tuo per iniziare io, ognuno di noi vede una porzione, quella che gli compete, e porta a termine il suo lavoro ma senza preoccuparsi di cosa stai facendo te, dato che apparteniamo a due uffici diversi, abbiamo ruoli diversi ecc...in questo modo avresti il documento contemporaneamente nello stato "Capitolo Mighel" e "Capitolo Gb"...poi spetterà allo stato che io chiamo "imbuto"(o sarebbe più giusto usare termini come join ecc) cioè quello in cui giungeranno i due stati, avere un certo tipo di logica ma questo è un altro discorso.....spero di aver risposto...

    Qui c'è forse un piccolo errore di interpretazione. "Capitolo Mighell" e "Capitolo GB" non sono (e non dovrebbero) essere considerati 2 stati di una State Machine. Essi sono 2 "oggetti" il cui stato di lavorazione viene gestito da una State Machine ma non 2 stati! In sostanza, supponiamo che io, tu e tutti i ragazzi di .netSide stessimo scrivendo un libro e volessimo gestirne il lavoro con una State Machine. Gli stati di questa SM saranno più o meno:

    • Start
    • Incompleto
    • Completo/Non Revisionato
    • Revisione in corso
    • Revisionato
    • Approvato
    • In Stampa
    • Stampato (Final State)

    Non avrebbe senso creare uno stato specifico per ogni capitolo altrimenti, per un altro libro, il WF sarebbe inutilizzabile.
    Ora..come gestiamo lo stato dei singoli capitoli? Con delle nostre logiche, magari cablate negli stati della state machine di sopra, che prendono l'elenco dei capitoli da, ad esempio un DataBase e commutano lo stato da incompleto a completo/non revisionato quando tutti i capitoli sono arrivati. In questo modo, per un secondo libro, puoi usare (e dovresti farlo, altrimento addio riusabilità) la stessa State Machine, cambiando semplicemente il DB da cui prendere i dati (autori, capitoli etc.).

    • Post Points: 20
  • 11 Nov 2006 11:17 In reply to

    Re: Domande a fine webcast...

    ...in effetti ho fatto proprio l'esempio sbagliato...allora vediamo se questo è più calzante...devo installare dei tralicci...ora cosa succende nell'azienda x, il documento inizia il suo "viaggio" nel flusso, il tutto arriva nella seguente situazione: ci sono due stati che devono essere svolti contemporaneamente...nel primo step ci si preoccupa di chiedere una serie di autorizzazioni a diversi enti(di competenza dell'ufficio amministrativo che si occupa di questioni burocratiche), il secondo(ufficio tecnico) non aspetta che queste autorizzazioni siano pronti anche perchè spesso ci vogliono mesi prima di averle, ma inizia a indicare in base alla morfologia del terreno ecc i pezzi da ordine dal fornitore y che serviranno per effettuare realmente l'installazione, anche questa fase può durare mesi...per assurdo ma poi mica tanto dato che questo avviene realmente nell'azienda x l'ordine viene anche fatturato e qualora i permessi non ci fossero si tratta in un successivo lavoro di smaltire le giacenze in magazzino...i due step non hanno nulla in comune e per una questione di tempo(Anche per non essere fregati sul tempo dall'azienda y), ecc devono essere svolte insieme...ma ci sono casi anche nella protoccolazione dei documenti nella pubblica amministrazione ecc

    http://addshare.blogspot.com/ Imparo, Imparo, Imparo

    • Post Points: 20
  • 13 Nov 2006 22:44 In reply to

    Re: Domande a fine webcast...

    GBFoundation:
    ...in effetti ho fatto proprio l'esempio sbagliato...allora vediamo se questo è più calzante...devo installare dei tralicci...ora cosa succende nell'azienda x, il documento inizia il suo "viaggio" nel flusso, il tutto arriva nella seguente situazione: ci sono due stati che devono essere svolti contemporaneamente...nel primo step ci si preoccupa di chiedere una serie di autorizzazioni a diversi enti(di competenza dell'ufficio amministrativo che si occupa di questioni burocratiche), il secondo(ufficio tecnico) non aspetta che queste autorizzazioni siano pronti anche perchè spesso ci vogliono mesi prima di averle, ma inizia a indicare in base alla morfologia del terreno ecc i pezzi da ordine dal fornitore y che serviranno per effettuare realmente l'installazione, anche questa fase può durare mesi...per assurdo ma poi mica tanto dato che questo avviene realmente nell'azienda x l'ordine viene anche fatturato e qualora i permessi non ci fossero si tratta in un successivo lavoro di smaltire le giacenze in magazzino...i due step non hanno nulla in comune e per una questione di tempo(Anche per non essere fregati sul tempo dall'azienda y), ecc devono essere svolte insieme...ma ci sono casi anche nella protoccolazione dei documenti nella pubblica amministrazione ecc

    Sono 2 (o più) activity in una parallel e non 2 stati. Quando sono tutte sono finite, si passa alla successiva activity che *potrebbe* modificare lo stato di una State Machine (ad esempio).
    Se ci rifletti, in ogni cosa non possono esserci 2 stati contemporanei. Al massimo possono esserci una serie di eventi contemporanei (o differiti) che insieme determinano uno stato.

    Più chiaro? Non ti convince?

    • Post Points: 20
  • 14 Nov 2006 10:20 In reply to

    Re: Domande a fine webcast...

    ...dovrei provare a fare lo stesso flusso con wwf e verificare se questa stessa situazione è possibile risolverla come dici te, con l'uso di activity parallel, anche se non devono svolgersi necessariamente entrambi gli ipotetici step, cioè quando chiedo il permesso posso avere risposta negativa da un certo ente, quindi il flusso si deve terminare, posso di conseguenza forzare la conclusione di un activity parallel?....inoltre un altro dubbio....
    Se il documento si trova nello stato x nel quale mi compete solo un activity perchè appartengo all'ufficio amministrativo(i restanti activity sono compiti di competenza dell'ufficio tecnico),è possibile recuperare l'istanza in quell'activity, in modo da mostrare all'utente cosa deve svolgerei in una sorta di task list, un pò come avviene in molti crm?...

    http://addshare.blogspot.com/ Imparo, Imparo, Imparo

    • Post Points: 5
Page 1 of 1 (7 items)
Powered by Community Server (Commercial Edition), by Telligent Systems