9.1 Integrare Trello - detalii tehnice

Integrare Trello - detalii tehnice

Fereastra: Setup utilizator Trello

Prin intermediul acestei ferestre se salvează în SocrateCloud, la nivel de utilizator, datele de autentificare în Trello, prin API, și anume: Cheie API, Token și ID membru (utilizator de Trello):

Clase java utilizate:

com.bitsoftware.soweb.client.form.strl.DFTrelloUserSetup

com.bitsoftware.soweb.server.service.form.strl.STRL_TrelloUserSetupImpl

Atenție: Atunci când se face setup-ul, utilizatorul trebuie sa fie logat în browser, în Trello, cu utilizatorul cu care dorește să se facă sincronizarea!

Utilizatorul trebuie să aibă acces la tablourile de bord definite în SocrateCloud.

Fereastra: Setări Kanban Bord - Trello

Aici se indică tablourile de bord care urmează să fie sincronizate între SocrateCloud și Trello. Pentru fiecare tip de tablou de bord se va adăuga câte o înregistrare în această fereastră. Tablourile de bord pot fi de două tipuri: K-Board Sesizări (pentru sesizări) și Sales Pipeline (pentru lead-uri).

Tipuri de tablouri de bord:

La redenumirea unui tablou de bord în SocrateCloud acesta se redenumește și bordul Trello, doar dacă bordul din Trello a fost creat rulându-se procesul Crează bord în Trello (sincronizarea se face în clasa org.bitsoftware.strl.model.STRLModelValidator).

Procese ce se pot rula din fereastra Setări Kanban Bord - Trello:

Crează bord în Trello:

Înregistrează callback bord Trello:

Sincronizează Bord:

Sincronizare SocrateCloud -> Trello

Sincronizare sesizări

Se sincronizează doar sesizări de pe proiectele care se regăsesc pe un tabel de bord activ în SocrateCloud (se tine cont dacă sesizarea trece de pe un proiect legat de un tabel de bord pe un proiect nelegat de un tabel de bord și invers). Se sincronizează doar sesizări, nu și sarcini.

De pe master sesizare se sincronizează:

Sincronizarea are loc dacă unul din câmpurile de mai sus își modifică valoarea. Cu fiecare apel de sincronizare se trimit toate informațiile de sus mai putin "data sfârșit" care se trimite doar dacă își modifică valoarea (pentru a preveni efectul de ping-pong);

după sincronizare, id-ul cardului din Trello se salvează pe sesizare.

Apelul de sincronizare diferă în funcție de prezenta ID-ului de card: dacă ID-ul exista pe sesizare atunci se face request de update card, altfel request de insert card.

De pe note sesizări se sincronizează:

Sincronizarea notei are loc doar dacă sesizarea a fost sincronizata cu Trello (are ID de card salvat) și conține timp introdus, text sau activitate. După sincronizare ID-ul comentariului este salvat pe nota. Apelul de sincronizare diferă în funcție de prezenta ID-ului de comentariu pe notă: dacă ID-ul exista atunci se face request de update comentariu card, altfel request de insert comentariu card.

Din lista de membri de pe sesizare se sincronizează:

Dacă sesizarea se mută pe un proiect ce nu este legat de un tablou de bord definit în SocrateCloud, atunci, dacă sesizarea are ID de card salvat, se face un request de închidere a cardului (cu actualizarea informațiilor de mai sus) altfel nu se sincronizează nimic. Dacă sesizarea se mută pe un proiect legat de un tablou de bord în SocrateCloud, atunci, dacă sesizarea are ID de card, se deschide cardul în Trello, altfel se creează un card nou. Dacă sesizarea se muta pe o stare ce nu are echivalent o coloană de K-Board, respectiv o lista în Trello, atunci, dacă sesizarea are ID de card, se actualizează cardul cu informațiile de mai sus iar lista rămâne neschimbată, altfel nu se sincronizează nimic.

Sincronizare lead-uri

Se sincronizează doar dacă există în SocrateCloud un tablou de bord activ de tipul Sales Pipeline.

Se sincronizează următoarele:

Sincronizarea are loc dacă unul din câmpurile de mai sus își modifică valoarea.

Tot timpul se trimit toate informațiile de sus mai putin "dată sfârșit" care se trimite doar dacă își modifică valoarea (pentru a preveni efectul de ping-pong).

Dacă lead-ul se mută pe o stare ce nu are echivalent o coloană de K-board, respectiv o listă în Trello, atunci, dacă lead-ul are ID de card, se actualizează cardul cu informațiile de mai sus iar lista rămâne neschimbată, altfel nu se sincronizează nimic.

Sincronizare Trello -> SocrateCloud

Sincronizarea are la bază apeluri din Trello (callback-uri) către SocrateCloud.

În SocrateCloud un callback se înregistrează la crearea unui bord în Trello, pentru a primi notificări legate de modificările de pe bord-ul respectiv. Dacă la crearea bord-ului în Trello nu se poate crea callback-ul din diferite motive, în fereastra de Setări K-Boards - Trello apare butonul de înregistrare callback (vezi detalii mai sus, la descrierea procesului).

Procesarea apelurilor din Trello se face în clasa org.bitsoftware.strl.rest.TrelloCallback. Se folosesc metode de API separate pentru sesizări (.../strl/rest/trelloCallback/RK/board) și pentru lead-uri (.../strl/rest/trelloCallback/SP/board) pentru a trata diferit mesajele. Metodele sunt specificate la înregistrarea callback-ului. Exemple de mesaje JSON primite din Trello se pot găsi în proiectul din Git, în folderul callback_models.

La fiecare apel se scrie în log conținutul mesajului JSON, pe nivel INFO (se poate urmări din monitorizare dacă se înregistrează modulul web "SocrateCloud for Trello" ).

La salvarea PO-ului (sesizare/lead) se salvează o variabilă de tip boolean în PO (nepersistentă) ce urmează a fi verificată în model validator pentru a nu se mai face un apel înapoi către Trello (efectul ping-pong). În unele cazuri se permite totuși apelul înapoi către Trello pentru a se corecta anumite informații.

Sunt acceptate doar notificările tipul "updateCard" care semnifică modificarea unuia din câmpurile: titlu card, descriere card, dată sfârșit, listă.

Callback bord sesizări:

Se identifică sesizarea după ID-ul de card.

Se actualizează dată sfârșit (dacă s-a modificat).

Dacă s-a modifică titlul cardului, se descompune în text, cantitate estimată, cantitate consumată și dacă este cazul, se actualizează subiectul și cantitatea estimată de pe sesizare. Dacă se modifică cantitatea planificată, se permite un nou apel de API Trello din model validator (prin setarea variabilei prezentate mai sus).

Dacă s-a modificat descrierea cardului se modifică sumarul sesizării.

Dacă s-a modificat lista în Trello, sunt câteva acțiuni ce pot avea loc. Se verifică dacă lista e prezentă pe bord-ul din SocrateCloud: 

Se salvează sesizarea și dacă sunt modificări se va apela codul din model validator de sincronizare cu Trello. În model validator se verifică variabila menționată mai sus pentru a se împiedica sincronizarea dacă sesizarea a fost modificată de un callback din Trello (cu unele excepții care au fost semnalate).

Callback lead-uri:

Se identifică lead-ul după ID-ul de card.

Se actualizează data sfârșit (dacă s-a modificat).

Dacă s-a modificat titlul cardului (este necesară corecția în Trello), se simulează o modificare pe lead și se permite un nou apel de API Trello (prin setarea variabilei nepersistente).

Dacă s-a modificat descrierea cardului se modifică descrierea lead-ului .

Dacă s-a modificat lista în Trello se urmează logica de la sesizări.

Model JSON (dată sfârșit modificată)

{

"action": {

"idMemberCreator": "53c6d0c73f3f696a487ce170",

"data": {

"board": {

"name": "SocrateCloud 14.02 (7)",

"id": "5419fdc59bde1fd80d9fcd47"

},

"old": {

"due": "2014-10-17T09:00:00.000Z",

},

"card": {

"name": "[1/12] Request subject",

"id": "5419fee31ca8e98be7af9bb7",

"due": "2014-10-31T10:00:00.000Z"

}

},

"type": "updateCard",

}

}

Desfășurarea procesului (process flow)

La actualizarea sesizărilor și/sau lead-urilor se face apel de sincronizare în Trello. Utilizatorii pot sa modifice anumite informații în Trello și acestea să se modifice automat și în SocrateCloud (vezi detalii mai sus).

Conflicte

Dacă un utilizator nu are setup-ul făcut și actualizează o sesizare, nu se va face nicio sincronizare cu Trello.

Dacă un utilizator își face setup-ul cu un cont de Trello care nu are acces la tabelul de bord creat din SocrateCloud, la actualizarea sesizărilor nu se va putea face sincronizarea cu Trello și sistemul va afişa o eroare cum că utilizatorul respectiv nu are drepturi să modifice cardul din Trello.