in

DotNetMarche

.NET Framework User Group delle Marche

This Blog

Syndication

ExternalBlogs

March 2011 - Posts

  • Italcementi: la prima intranet di successo in Italia basata su SharePoint 2010

    Sono molto contento di condividere con voi la notizia della pubblicazione del primo case study Microsoft in Italia riguardo un caso di successo sull’adozione di SharePoint 2010. Italcementi è un gruppo distribuito world wide e rappresenta nel mondo una delle più grandi realtà del settore cementi. Brevemente riporto un estratto dell’articolo: Dal punto di vista funzionale
  • Power tools–Alert explorer

    Continuo il mio tour sulle funzionalità offerte dai TFS 2010 Power tools parlando oggi dell’Alerts Explorer. Questa funzionalità è sostanzialmente un plugin di Visual Studio che permette di gestire in modo semplice l’alerting, ovvero l’invio di messaggi in relazione a specifici eventi di TFS. Questa funzionalità è nel menu Team-> Alert Explorer.

    image

    Come potete vedere sono molti gli eventi che supportano un alert, ad esempio per quanto riguarda i work item possiamo generare un alert quando un work item è stato assegnato all’utente corrente. Possiamo quindi selezionare questo alert e dargli un nome e premere ok.

    image

    L’aspetto interessante è che questo alert in realtà viene composto da una semplice query sui work item, quindi possiamo generare un alert specificando una qualsiasi query e non siamo limitati alle sole query predefinite consigliate dall’alert explorer. Come potete vedere in alto in giallo è mostrato il tipo di alert, in questo caso quando un work item cambia si verifica se soddisfa le caratteristiche specificate nella query ed in caso affermativo viene inviata una mail all’utente corrente (sono loggato come Abu Objeid Bakhach nella VM di test). Se vi appare una Message Box di errore come questa

    image

    Tenete a mente che in WORKGROUP (se non siete in un dominio) gli utenti non hanno E-Mail associate, quindi è necessario specificare direttamente l’indirizzo mail nella casella Send To.

    Un altro aspetto interessante è che si può specificare come indirizzo di sottoscrizione anche un servizio asmx, invece di usare il solito Bisubscribe.exe (come avevo ad esempio descritto qui), un articolo interessante di Brian Randell spiega esattamente come fare. (inoltre se avete cmq usato bisubscribe.exe per sottoscrivere manualmente gli eventi, considerate di dare uno sguardo a Team Foundation SErver Event Subscription Tool)

    Si possono creare alert anche per le operazioni di source control, come ad esempio il check-in su una particolare cartella, in questo caso potete tranquillamente utilizzare l’alert explorer, oppure ancora più facilmente, direttamente dal source control explorer, con un right-click scegliere Alert on change.

    image

    image

    Potete naturalmente specificare anche qui l’indirizzo da usare, e soprattutto avete una bella checkbox che permette di evitare che la mail venga lanciata quando il check-in è fatto dall’utente corrente. Naturalmente, passare dal Source Explorer semplifica solamente il lavoro, alla fine nell’Alert Explorer potete vedere che è stato creato un alert standard.

    image

    In questo caso l’editor sembra quello delle query dei Work Item, ma in realtà contiene valori specifici del source control, come potete notare se tentate di aggiungere una nuova condizione.

    image

    Infine è possibile impostare alert anche per eventi relativi alla Continuous Integration.

    image

    Come si può vedere il sistema di alert è molto flessibile, sia perché copre tutte e tre le aree di TFS (Work Items, Build e source code) sia perchè permette di specificare le condizioni dell’alert con query customizzabili. Infine la possibilità di chiamare un proprio webservice permette di eseguire una qualsiasi azione in risposta ad un alert, non limitandosi all’invio di E-mail.

    Alk.

    Tags:

    DotNetKicks Image
  • Come spostare un sito SharePoint: una precisazione

    Ieri al .NET Campus, tra tutti gli altri amici e non, ho incontrato Giuliano, autore di un commento veramente utile ad uno dei miei precedenti post e che ringrazio tanto per avermi dato anche una prova live di quanto aveva già scritto. Si parlava di come...
  • Di ritorno dal .NET Campus 2011 - Roma

    Sabato mattina si è svolta la prima delle due tappe del .NET Campus 2011 , un bellissimo evento organizzato da DevLeap e Microsoft per far avvicinare studenti e professionisti alle tecnologie di programmazione che ruotano attorno al mondo Microsoft. Il...
  • Approfondiamo stati e transizioni

    1 – Tfs e customizzazione del process template
    2 – Customizzare il Process Template, le basi
    3 – Customizzare il process Template, aggiungere un campo ad un Work Item
    4 - Customizzare il process template, regole per i campi aggiuntivi dei WI
    5 - Personalizzare i Work Item di TFS, ancora qualche regola interessante
    6 – Stati e transizioni

    Nel post precedente è stata fatta una breve introduzione al concetto di Stati e Transizioni dei Work Item, ma ci sono molte altre funzionalità interessanti ancora da scoprire in questa area. Supponiamo che nello scenario del bug sia possibile passare da Triage a Closed solamente per gli amministratori di progetto. Questo requisito è abbastanza normale, perché un bug che va da Triage a Closed sostanzialmente non viene corretto e quindi ignorato, per cui questa decisione deve essere presa solamente da un Amministratore.

    image

    Figura 1: La transizione tra Triage e Closed viene ristretta solamente agli amministratori del progetto

    Come vedete la soluzione è molto semplice, è sufficiente infatti editare i dettagli della transizione specificando nella clausola For la categoria di utenti che ha il permesso di effettuare la transazione, in questo caso gli amministratori del progetto. Questa soluzione è analoga a quanto visto negli articoli precedenti, sono molte infatti le parti dei Work Item che possono essere protette assegnandole solamente a specifici Security Groups.

    Supponiamo ora di complicare leggermente lo scenario, vogliamo aggiungere un ulteriore campo chiamato “Rejected Reason”, in cui vogliamo inserire una descrizione dettagliata della ragione che ha portato qualcuno a chiudere il bug direttamente dallo stato Triage. Il primo passo è creare il nuovo campo ed aggiungerlo all’interfaccia.

    image

    Figura 2: Il campo aggiunto è però sempre editabile, per questa ragione potrei anche inserire la rejected reason alla creazione del bug

    Come mostrato in Figura 2, purtroppo la Rejected Reason è sempre editabile perché è un normale campo aggiunto al Work Item, è necessario quindi andare a specificare che il campo può essere editato solamente nel caso un bug passi da triage a Closed. Se facciamo doppio click nello stato Triage, notiamo che si possono associare una serie di regole ai campi del WI; il significato è molto semplice, i questo modo possiamo specificare una serie di RULES che sono però valide solamente quando il Work Item si trova in questo stato specifico, per il resto valgono tutte le informazioni date sulle regole nei precedenti articoli.

    image

    Figura 3: Lo stato triage ha una regola sul campo Rejected Reason, in questo caso l’asterisco indica il READONLY

    Per raggiungere lo scopo prefissato si deve inserire la regola READONLY al campo Rejected Reason in tutti gli stati ad eccezione di quello Closed, in questo modo il campo nell’interfaccia verrà reso editabile solamente quando lo stato è o viene spostato nello stato “closed”.

    SNAGHTML9ddd18

    Figura 4: Quando sono in Triage non posso editare il campo, mentre basta spostarlo nello stato Closed che il campo diventa editabile.

    A questo punto però il lavoro non è finito; sebbene si sia infatti associata la regola READONLY al campo Rejected Reason su tutti gli stati tranne che nel Closed, è comunque possibile editare il campo quando si passa dallo stato Fixed a Closed. Questa possibilità non deve essere data, perchè la rejected reason deve essere compilata solamente quando lo stato passa da Triage a Closed. Fortunatamente è possibile assegnare regole ai Field anche durante una transizione, è quindi sufficiente prendere la transazione tra Fixed e Closed ed imporre il READONLY del campo RejectedReason.

    image

    Figura 5: Dato che il campo Rejected Reason non deve essere editato durante la transizione tra Fixed e Closed, possiamo aggiungere una regola sul campo che vale solamente per la transizione.

    Ora ci siamo avvicinati molto al risultato cercato, ma possiamo ancora migliorarlo. Gli ultimi requisiti richiedono che quando si passa dallo stato Triage al Closed, sia inserita come Resolved Reason il valore “Rejected”, ed inoltre che il valore Rejected Reason, sia richiesto se la Reason è differente da Duplicate. Queste richieste sono standard, prima di tutto il campo Resolved Reason deve assolutamente essere presente in tutti i bug ed è necessario che durante il passaggio da Triage a Closed, sia marcato come Rejected. Il secondo requisito è necessario perché quando il bug è duplicato non abbiamo necessità di una Rejected Reason (il concetto di duplicato non richiede ulteriori spiegazioni), mentre quando il bug è won’t fix oppure “Not reproducible” è solitamente necessario da parte di chi rigetta il bug indicare in maniera dettagliata la ragione del Reject.

    I passi da seguire sono i seguenti, per prima cosa si edita lo stato Closed facendo si che il Resolved Reason abbia una regola REQUIRED, inoltre il campo Resolved Reason è messo nella UI come Readonly e quindi non è mai editabile direttamente dall’utente, ma solamente impostato dal sistema. A questo punto però è necessario fare in modo che durante la transizione il campo venga popolato correttamente.

    image

    Figura 6: Il campo Resolved Reason è readonly di default nella UI

    Per far questo si deve andare nella definizione del campo ResolvedReason ed aggiungere il valore Rejected tra la lista dei possibili valori (regola ALLOWEDVALUES) ed infine è necessario aggiungere una regola di tipo COPY nel campo ResolvedReason associato alla transazione tra Triage e Closed.

    image

    Figura 7: Sequenza di passi per indicare che nella transizione tra triage e Closed il campo Resolved Reason deve assumere il valore Rejected.

    In questo modo quando verrà effettuata la transizione tra lo stato Triage e Closed verrà applicata la regola COPY ed il valore del campo ResolvedReason verrà popolato automaticamente con il valore Rejected. Come si può vedere la regola COPY associata ad una transazione è il modo ideale per popolare automaticamente un campo in conseguenza di una transizione specifica.

    Ora rimane da rendere il campo Rejected Reason obbligatorio solamente quando il valore del campo Reason è differente da Duplicate. Per fare questo si deve aggiungere un altro campo alla transizione Triage –> Closed ed usare una RULE di tipo WHEN NOT sul campo Rejected Reason. Questa particolare regola permette di applicare una serie di RULES solamente quando una condizione è falsa. In questo caso vogliamo applicare la regola REQUIRED solamente quando il campo System.Reason è diverso da Duplicate.

    SNAGHTMLc37265

    Figura 8: Aggiungere alla transizione la regola required solamente quando il campo System.Reason è differente dal valore duplicate

    Come si vede in figura 8 è possibile indicare la condizione per cui il set di regole deve essere applicato (field System.Reason diverso da Duplicate) e poi nel tab Rules si possono specificare tutte le regole che si desidera, in questo cao che il campo Rejected Reson sia REQUIRED. Ora si può creare un nuovo bug in stato triage e salvarlo, poi cambiare lo stato in Closed e verificare che inserendo una Reason differente da “Duplicate” venga effettivamente richiesto di compilare il campo Rejected Reason.SNAGHTMLc5ca92

    Figura 9: Se cambio lo stato da Triage a Closed e la Reason è differente da Duplicate allora viene applicata la regola Required al campo Rejected Reason.

    Se si cambia il campo Reason lasciando il Rejected Reason vuoto, si potrà vedere che la validazione del Work Item richiede la presenza del campo solamente quando la Reason è differente da duplicate. In Figura 9 a sinistra potete infatti vedere che il campo reason è Duplicate, e non è presente nessun errore di validazione. Nella parte destra invece si è cambiato il campo Reason in Not reproducible, ed immediatamente in altro si manifesta l’errore di validazione che richiede la compilazione del campo Rejected Reason.

    Questo articolo è probabilmente il più complesso, ma mostra alcune funzionalità avanzate per la customizzazione del Work Item. Grazie al concetto di regole applicate agli stati o alle transazioni e soprattutto grazie alle regole condizionali, possiamo imporre regole ed automatismi complesse al workflow dei nostri Work Item, in modo che il team sia “aiutato” a seguire la corretta procedura di gestione bug, requisiti, o qualsiasi altro concetto esprimibile con un Work Item.

    alk.

    DotNetKicks Image
  • Microsoft Technical Conferences 2011: agenda in continuo aggiornamento !

    Come potete vedere direttamente dal sito delle conferenze , l'agenda è in continuo aggiornamento ! Sono state aggiunte tante nuove sessioni, veramente interessanti che non potetevi perdervi. Queste alcune delle novità: Introduzione a SharePoint -...
  • Un altra versione dell’Integration Platform è appena uscita

    E’ appena uscita la nuova versione del TFS Integration Platform, per chi non la conoscesse è un tool che permette di gestire la sincronizzazione tra Tfs e qualcos’altro. Si può usare per sincronizzare due TFS, oppure un Tfs ed un subversion e vale la pena darci un occhiata.

    alk.

    DotNetKicks Image
  • Per le Community .Net: è nato Orchard Community Kit (OCK)

    Dall’esigenza di varie community .net italiane, che si sono ritrovate “naturalmente” unite dall’esigenza di rifare il sito (con il vecchio buttato giù dagli spammer e non più supportato), è nata l’idea di unire le forze per fare qualcosa che possa essere riutilizzato da tutti… una sorta di starter kit per le community!
    Per evitare di disperdere le energie, per ora il progetto si concenterà sulle nostre esigenze più immediate, poi si potrà pensare di fare qualcosa di più generico.

    Come piattaforma di base è stato deciso di utilizzare Orchard Project, il CMS partorito recentemente da Microsoft: la scelta è stata presa considerando il fatto che è stato realizzato con tecnologie “moderne” e che ci piacciono (ASP.NET MVC e NHibernate giusto per citarne alcune). Quindi ai tanti moduli già pronti offerti da altri CMS con anni di sviluppo alle spalle, abbiamo preferito "investire" su questo tool che da un lato avrà, almeno inizialmente, meno cose preconfezionate, ma dall'altro non sente il peso della "vecchiaia" (e sappiamo tutti bene cosa comporta!).

    Quindi dall’unione di queste due cose, è stato deciso di chiamare il progetto “Orchard Community Kit” (OCK per gli amici!).

    Dopo una serie di discussioni sui messi più disparati, stiamo cercando di organizzarci, ora che abbiamo trovato un nome Smile, per coinvolgere anche le altre community che possono interessate al discorso: purtroppo la mancanza di tempo non ci ha permesso di coinvolgere tutti da subito (anche perchè sarebbe stato inutile farlo, fino a quando non si capiva cosa avremmo volute fare)… non abbiatene a male per questo Smile!

    Per ora abbiamo creato una mailing list in cui discutere.
    Se siete interessati al discorso, come community, contattate me o uno degli altri ragazzi coinvolti, che cerchiamo di aggiungervi alla discussione.
    Giusto per citare qualcuno che potreste contattare (in ordine sparso):

    • Alle Scardova
    • Michele Aponte
    • Imperugo
    • Simone Chiaretta
    • Fabio Cozzolino
    • Nicolò Carandini
    • Gian Maria Ricci
    • (… altri contattabili scrivano eventualmente nei commenti!)
    Posted Mar 24 2011, 11:04 AM by Ste8's Blog
    Filed under:
  • Stati e transizioni

    1 – Tfs e customizzazione del process template
    2 – Customizzare il Process Template, le basi
    3 – Customizzare il process Template, aggiungere un campo ad un Work Item
    4 - Customizzare il process template, regole per i campi aggiuntivi dei WI
    5 - Personalizzare i Work Item di TFS, ancora qualche regola interessante

    Fino ad ora si è esaminato solamente come aggiungere informazioni ai Work Item, ma non si è mai affrontato l’argomento "gestione dello stato”. Il valore del campo Status è infatti molto particolare ed è gestito in modo particolare, dato che a livello sottostante è presente un workflow che determina le possibili transizioni. Supponiamo ad esempio di dover gestire il ciclo di vita di un Bug, inizialmente sarà nello stato “Triage” ad indicare che qualcuno lo ha appena inserito nel sistema e che deve essere esaminato da qualcuno prima di poter essere dato in pasto agli sviluppatori.

    Il concetto di Triage è analogo a quello di un pronto soccorso, qualcuno analizza tutti i bug in triage e ne determinerà lo stato successivo rispetto al risultato dell’analisi. Dopo il triage un bug potrebbe andare ad esempio in stato Attivo (indica che deve essere corretto) oppure si può decidere di non correggerlo per varie ragioni: wont fix (non verrà per ora corretto), Non replicabile (non si è riuscito a replicare il tester può quindi aggiungere più informazioni). Supponiamo quindi di volere modificare la definizione del Bug per il processo agile standard, in modo da supportare il concetto di Triage. Per fare questo è necessario andare a modificare una sezione particolare della definizione di un Work Item, gli stati e le transizioni (State and Transitions)

    Lo stato (State) rappresenta uno dei possibili stati logici del WI, in un bug come già detto potremmo avere: Triage, Closed, Active e Resolved, mentre le transizioni (Transition) servono a rappresentare la possibilità di muovere un Work Item da uno stato ad un altro. Tutte queste informazioni fortunatamente possono essere editate tramite un editor grafico presente nel Process Template Editor dei Power Tools.

    Ecco ad esempio come si presenta il diagramma degli stati per il Work Item di tipo Bug del processo agile.

    image

    Figura 1: Stati e transizioni del bug nell’editor grafico del Process Template Editor.

    Supponiamo ora di volere introdurre il concetto di Triage del bug, basta trascinare dalla toolbox un nuovo stato  e cambiare il suo nome in Triage.

    image

    Figura 2: Abbiamo aggiunto uno stato al workflow del WI

    Ora è necessario far puntare la transizione iniziale allo stato Triage invece che allo stato Active, per fare questo si clicca con il tasto destro sulla transizione, e si sceglie “Open Details”, operazione che permette di editare i dettagli della transizione, per ora siamo interessati solamente a cambiare il campo To.

    image

    Figura 3: Cambiare lo stato di destinazione di una transazione dalla finestra dei dettagli.

    Come potete vedere il campo From è nullo, ad indicare che questo è lo stato iniziale. Una transizione non può essere però salvata se non ha almeno una Reason, ovvero una informazione sul perché il Work Item ha cambiato stato. In questo caso io ho semplicemente rimosso tutte le ragioni precedentemente presenti, ed ho aggiunto quelle che rappresentano meglio il mio nuovo modello di bug.

    image

    Figura 4: Le reasons per potere aprire un bug nello stato Triage.

    Come si può vedere in questo caso ho deciso che il bug di default è segnalato da un tester, ma posso avere un bug aperto da una build failure e anche un bug che è stato segnalato direttamente dal cliente (solitamente questi hanno priorità maggiore). La cosa interessante è che posso cliccare con il tasto destro sul workflow e scegliere di validare il tutto. Ad esempio ora ho il seguente errore:

    State Active cannot be reached from the start Transition.

    Perché ho staccato la transizione iniziale dallo stato Active e la ho fatta puntare allo stato Triage e quindi lo stato Active non è ora più raggiungibile. Si deve quindi procedere a creare le nuove transizioni, semplicemente selezionando il “Transition Link” dalla toolbox e facendo drag and drop dallo stato di partenza allo stato di destinazione. Dopo un minimo di customizzazione si arriva ad esempio a questo risultato.

    image

    Figura 5: Come si presenta il workflow dopo la customizzazione.

    Ora in realtà bisognerebbe rivedere tutte le transizioni affinché tutto sia coerente, ma già in questo modo possiamo verificare cosa succede quando andiamo a creare un nuovo bug. Si può subito notare come l’unico stato possibile sia lo stato Triage e le uniche ragioni possibili siano le tre specificate, con automaticamente selezionata la ragione di default.

    SNAGHTML73c1ca

    Figura 6: Il nuovo Bug parte in stato Triage ed abbiamo nuove Reason da poter specificare.

    Ora si può inserire un titolo valido al bug e salvarlo, immediatamente il campo Reason diventa Read-Only, perché è possibile cambiarlo solamente in relazione ad un cambio di stato. Se ad esempio si prova a cambiare lo stato in Active, si può notare come il campo Reason diventi editabile, ma si può selezionare solamente il valore “Accepted”, mentre se si seleziona lo stato Closed si può selezionare una delle reason associate alla transazione.

    image

    Figura 7: Il cambio di stato permette di selezionare nuovamente una delle reason associate alla transizione.

    Grazie alla gestione di Stati e Transizioni è possibile quindi determinare il flusso logico per lo stato di ogni tipologia di Work Item che meglio si adatta al proprio processo. Anche in questo caso TFS si dimostra uno strumento veramente flessibile ed adattabile al proprio processo di sviluppo.

    Alk.

    DotNetKicks Image
  • Regione Marche verso l’adozione di SharePoint 2010

    Solitamente non riporto informazioni relative ai progetti che seguo, a meno che non si tratti di best practice ma in questo specifico caso faccio un eccezione. Si tratta della Regione Marche e del progetto di rafacimento della intranet regionale POINT! Ne parlo non solo perchè sono molto contento che abbiamo vinto il bando, con un
  • Materiale del workshop DotNetMarche “Raf & Alk su C# 4, LINQ, Parallel Libraries e Micro Framework.NET”

    Non aggiungo altro sull’evento rispetto a quanto già detto da Raf e Alk, posso solo confermare!

    Comunico però che abbiamo pubblicato il materiale (video, slide e codice), trovate il tutto a partire da qui:

    http://vimeo.com/album/1554782

    Come vedete, nei video abbiamo messo il tag [Camera 2], ad indicare che ce ne saranno degli altri che saranno elaborati nei prossimi giorni, con le riprese ottenute direttamente dall’uscita video dei pc grazie all’impianto messo in piedi da Nicolò!

  • Microsoft Office 365

    Avrete sicuramente sentito parlare di Office 365, o almeno ne avrete letto il nome nei blog o in qualche sito Microsoft. Molto spesso lo si presenta come la nuova versione di BPOS (Business Productivity Online Suite) o come la versione on-line dei programmi...
  • Social Business Roadmap

    E’ disponibile un’utile documento che regge i processi di sviluppo di reti e soluzioni che impattano il concetto di *social* realizzta da aiim. Il documento racchiude una sintesi di una varietà di problematiche e cambiamenti che interessano qualsiasi tipologia di organizzazione. Indispensabile per guardare in tempo utili possibili questioni che impatteranno I nostri prossimi progetti
  • Blob cache e le immagini, problema di versioning?

    Utilizzando la funzionalità di Blob Cache relativa a SharePoint 2010, non è molto facile far capire agli utenti che questa non supporta una particolare condizione del versioning, sopratutto con la gestione immagini. Provate appunto a caricare una nuova versione di una immagine che abbia lo stesso nome e contenuto differente, vi accorgerete che anche se
  • Milano–Roma: DotNet Campus

    Segnalo che le tappe del DotNetCampus sono le seguenti: Roma 26 Marzo Milano 9 Aprile .NET Campus è un evento per sviluppatori e designer organizzato dal gruppo DevLeap in collaborazione con il gruppo dei Microsoft Student Partner e le Community più attive per fornire ai partecipanti un’intensa mattinata di sessioni tecniche. Insieme alle sessioni tecniche orientate alle novità
More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems