Accedere ai dati di CONFLUENCE

Scaviamo in profondità

In questo post andremo a vedere, con alcuni esempi, come possiamo accedere ai dati di Confluence e JIRA, lavorando direttamente su DB. In particolare vedremo alcuni esempi di come sono memorizzate le informazioni. In figura vediamo lo schema delle tabelle di Confluence.

 

Perché accedere ai dati?

Prima di iniziare ad esplorare le tabelle dei due sistemi, conviene porsi una domanda fondamentale: Perché dobbiamo accedere direttamente ai dati del DB? Quale è la necessità?

Uno dei motivi più importanti è sicuramente quello di dover accedere ad informazioni a cui non si avrebbe altrimenti accesso, oppure il dover eseguire una operazione massiva. Questo perché non sempre è possibile eseguire una operazione su di una grossa mole di dati, in quanto Confluence/JIRA non la consentono, come ribadito in altri post di questo blog. Fino a quando non saranno disponibili delle funzionalità di un certo tipo, occorre dover agire direttamente da DB. In aggiunta, queste informazioni sono sicuramente utili a coloro che vogliono sviluppare addon per i prodotti Atlassian 🙂

 

Precauzioni

Prima di agire, occorre sempre che siano prese delle semplici precauzioni. Il motivo mi sembra abbastanza semplice: Quando si lavora direttamente su DB, è abbastanza facile arrecare danni. Di conseguenza, sempre meglio avere un backup dei dati/tabelle/DB intero prima di procedere con le modifiche.

Il mio consiglio è sempre quello di avere a disposizione un backup del DB completo + una copia delle tabelle su cui si agisce, prima di procedere con qualsiasi operazione.

 

Un primo esempio

Supponiamo che si voglia modificare gli avatar standard, con un avatar differente (i motivi possono essere qualsiasi: Marketing aziendale,  impostare un avatar di default più carino, etc).

 

profile

 

Al momento, solo gli utenti possono modificare il proprio avatar. A livello di amministrazione, non è possibile eseguire tale operazione. La precedente immagine mostra dove è possibile eseguire tale operazione. Adesso vediamo come è possibile aggirare tale limitazione, semplicemente andando a lavorare su DB.

In prima battuta esaminiamo le tabelle dove sono contenute le informazioni delle utenze. In particolare faremo riferimento a:

  • cwd_user – Tabella contenente le informazioni degli utenti che sono stati configurati in Confluence.
  • cwd_group – Tabella contenente le informazioni dei gruppi definiti su Confluence.
  • os_propertyentry – Tabella contenente anche le informazioni degli avatar.
  • user_mapping – Tabella contenente la corrispondenza uid – nome utente.

La tabella che ci interessa in particolare è l’ultima. Dobbiamo andare a cercare le informazioni degli avatar, utilizzando questa query:

query

Come si vede dalla precedente immagine, quello che dobbiamo andare a cercare è il campo String_val. In questo campo è presente la localizzazione dell’avatar. In questo caso ho assegnato un avatar di default. 🙂 Nel campo Entity_name abbiamo la userid. Come possiamo vedere è abbastanza ….. criptata. Come facciamo a decodificarla? Il giro è il seguente:

  • Dalla tabella os_propertyentry abbiamo le indicazioni del path della immagine
  • Dalla tabella user_mapping abbiamo le indicazioni dell’uid dell’utente
  • Dalla tabella cwd_user abbiamo il nome dell’utente.

Le seguenti immagini chiariscono il tutto: Dall’ID identifichiamo l’utente

query01

 

query02

Di conseguenza, per modificare l’avatar dell’utente admin (in questo caso), possiamo semplicemente modificare il path e andare ad assegnarne uno nuovo. Supponiamo di creare una sottodirectory nel path utilizzato da Confluence per gestire gli avatar di default, ovvero:

<Install_dir_Confluence>\confluence\images\icons\profilepic

supponiamo di chiamarla Demoprofile e di memorizzare il seguente avatar:

pinguino48

Eseguire il restart del servizio Confluence e, come per magia, il risultato sarà il seguente:

 profiloMod

Conclusioni

Abbiamo visto un esempio di come si può modificare il database per modificare gli avatar degli utenti di Confluence. Questo esempio può essere utilizzato anche per le installazioni per cui gli utenti sono presi da LDAP e non sono solo utenti locali di Confluence.  Nei prossimi post vedremo altri esempi di come si può accedere ai dati e …. vedere altre informazioni.

Advertisements

Settiamo le page properties

Indici ed altre caratteristiche

In questo post esamineremo una funzionalità molto importante, che ci consente di poter inserire dei metadati, che possono poi essere utilizzati per creare degli indici automatici. Iniziamo a parlare delle Page Properties.

 

Che cosa sono le page properties?

Si tratta di coppie di dati, solitamente nome proprietàvalore proprietà che sono associate ad una pagina.

Attraverso una opportuna macro, a cui è possibile aggiungere una tabella di due colonne (senza intestazioni), è possibile aggiungere questi metadati alla pagina. Quindi, attraverso altre macro, è possibile realizzare degli indici da poter poi usare in altre pagine riassuntive, come mostrato nella immagine successiva.

 

Quali possibili utilizzi?

Tenuto conto che l’unico limite è la fantasia, è possibile gestire un semplice workflow di documenti, chiaramente manuale e rozzo, ma valido e perfettamente funzionante.

Supponiamo che ad ogni documento siano associate delle proprietà, quali:

  • Stato del documento
  • Versione
  • Autore
  • Revisore
  • Approvatore

In questo modo si avrebbe la possibilità di poter gestire lo stato di avanzamento della scrittura di un documento, semplicemente aggiornando queste informazioni.

Una pagina riassuntiva, creata attraverso la macro Page properties report macro, consente al project manager di poter monitorare costantemente l’andamento dei vari documenti.

Un altro possibile utilizzo, potrebbe essere quello di gestire processi di selezione di personale. Proviamo a fare un esempio. Confluence potrebbe essere organizzato con uno space, dedicato a tutte le offerte di lavoro dell’azienda, dove sono presenti delle pagine principali relative alle aree organizzative e delle sottopagine con le offerte di lavoro vere e proprie.

Ad ogni sottopagina, viene associato uno stato di avanzamento, per indicare a che punto è la selezione del personale.

Quindi ogni sottopagina, dispone dei CV che sono pervenuti o dei CV che sono stati selezionati tra quelli pervenuti.

Nella sottopagina per area, abbiamo un indice in cui , il responsabile del personale, può monitorare l’andamento delle ricerche e avere a disposizione un quadro completo della situazione.

 

Conclusioni

Abbiamo visto una caratteristica molto importante di Confluence, che consente di poter associare delle informazioni aggiuntive alla pagina. Ho mostrato due possibili utilizzi, tra le migliaia possibili. La fantasia è il solo limite di utilizzo 🙂

 

Creare una funzione split con plsql

Funzione SPLIT in PL-SQL

Riporto un sistema molto semplice per realizzare una funzione SPLIT in PL-SQL. Si tratta di una procedura che ho trovato in questo blog.

Si tratta di una funzione che, data una stringa con separatori, restityuisce l’elemento i-esimo.

create or replace function get_token(
   the_list  varchar2,
   the_index number,
   delim     varchar2:= ','
)
   return varchar2 is
   start_pos number;
   end_pos   number;
begin

   if the_index = 1 then
       start_pos := 1;
   else
       start_pos := instr(the_list, delim, 1, the_index - 1);
       if start_pos = 0 then 
          return null;
       else
           start_pos := start_pos + length(delim);
       end if;
   end if;

   end_pos := instr(the_list, delim, start_pos, 1);

   if end_pos = 0 then
       return substr(the_list, start_pos);
   else
       return substr(the_list, start_pos, end_pos - start_pos);
   end if;

end get_token;
/

Si tratta di una funzione molto semplice. Il risultato è il seguente:

select
   get_token('foo,bar,baz',1), -- 'foo'
   get_token('foo,bar,baz',3), -- 'baz'
   --
   get_token('a,,b',2),        -- '' (null)
   get_token('a,,b',3),        -- 'b'
   --
   get_token('a|b|c',2,'|'),   -- 'b'
   get_token('a|b|c',4,'|')    -- '' (null)
from
   dual

Punti di attenzione

  • L’indice parte da 1 e non da 0
  • Se per l’indice specificato, non è presente alcun valore, allora non viene restituito alcun valore
  • Se si fornisce un indice che non esiste (es. la stringa è formata da 3 elementi e si richiede il 4 elemento), allora anche in questo caso, la funzione non restituisce nulla.

 

Suggerimenti

Potrebbe tornare utile far restituire una stringa ad hoc, qualora non venga fornito un indice non esistente nella stringa, sostituendo il return null; con return ‘-1’; in modo da distinguere la situazione in cui non venga restituito un valore da l’aver richiesto un indice non esistente.

 

 

Addon per JIRA/Confluence onDemand – 2

Proseguiamo il nostro piccolo tour nei vari plugin di Confluence e Jira onDemand, iniziato in questo post.

 

Confluence

Viene data la possibilità di poter visualizzare delle formule matematiche attraverso Beautiful Math for Confluence.

Addon utile per coloro che fanno parecchio uso di formule matematiche o che devono usare LaTeX, ma non è il solo. Segnalo anche il plugin Bulk Action Tools, che rappresenta una vera sopresa :-). SI tratta di un addon che consente di centralizzare delle azioni altrimenti brigose (tipico termine bolognese che sta ad indicare azioni che richiedono molto tempo e sono noiose)

 

A volte non se ne intravede l’importanza, ma queste operazioni sono abbastanza noiose se si utilizzano le funzionalità standard. Questo perché tali funzionalità sono letteralmente sparse tra le varie componenti. Come già ribadito in questo post, la centralizzazione di certe operazioni è importante, sopratutto quando si riesce a semplificare la vita degli utenti rendendo le funzioni molto più agevoli :-D.

Non meno importante è la funzionalità di Copy Space. Funzione utilizzatissima nella versione server (ve lo posso assicurare).

 

Anche se non è meno importante del Copy Page Tree, il quale consente di poter copiare solo porzioni di space, in particolare una pagina e la sue sottopagine.

Chiudiamo questa carrellata di Addons con il Balsamiq Mockups for Confluence. Già disponibile nella versione Server, consente di poter realizzare dei mockups per qualsiasi ambito (ad es. mockups di applicazioni, schemi, semplici workflow, etc.)

 

 

JIRA

Iniziamo citando JQL Pro, un addon che consente estende, con ulteriori funzionalità, il JQL di JIRA

Proseguiamo il nostro tour citando l’addon Plain Tasks – Simple Todo Lists, un semplice addon che consente di poter semplificare la complessità di JIRA e trasformarla in un a più semplice ToDo List. Questo potrebbe essere utile per poter mettere a disposizione di utenti non avanzati, le funzionalità avanzate di JIRA.

 

Chiudiamo la carrellata degli addon di JIRA con Automated Log Work for JIRA. Si tratta di un addon che consente di poter automatizzare la fase di worklog. Al momento JIRA consente un inserimento manuale, mentre attraverso questo addon, è possibile automatizzare tale fase e delegare a JIRA la fase di conteggio del tempo dedicato ad ogni task.

 

Conclusioni

Come possiamo osservare, anche gli addon della versione Confluence/JIRA onDemand iniziano a prendere piede e comunciano a fornire funzionalità molto avanzate. Le sorprese non sono finite qui. Nei prossimi post andremo ad esaminare nel dettaglio questi addon.

JIRA Service Desk 2.0

Nuove Features 2.0

Prosegue, in questo post, la panoramica sulle funzionalità di JIRA Service Desk, già descritte nel primo post e proseguite nel successivo, dove è stata descritta la possibilità di poter utilizzare il JIRA Service Desk per gestire delle risorse riusabili.

 

Un passo indietro

Tramite questo Addon, si estende JIRA affinché possa divenire un sistema di Trouble Ticketing ma non solo. Attraverso l’uso di Confluence e dei suoi Addon, è possibile sfruttare JIRA per tracciare anche altri eventi e poter essere di supporto per i team di sviluppo.

 

Novità – Pagamento in base agli agenti

Viene rivisto il modello di pagamento in base agli utenti. Si inizia a distinguere tra tre ruoli ben distinti:

  • Agenti, ovvero gli utenti che accedono al sistema e che si occupano di gestire le segnalazioni ricevute
  • Clienti, ovvero coloro che inviano le segnaklazioni
  • Admin, ovvero gli amministratori del sito

Il pagamento viene calcolato in base al numero di agenti (minimo 3) di cui si intende disporre. Ogni agente può gestire un numero di clienti illimitato.

 

Migliorato il Portale di accesso al JIRA Service Desk

Risulta migliorato il portale di accesso alle richieste. Questo non deve essere visto come un qualcosa di dedicato solo alle richieste IT (nuovo software da installare, problemi con le stampanti, etc), ma viene esteso anche ad altre problematiche/tipologie di richieste. In precedenza avevo già citato un esempio di come è possibile utilizzare questo addon per tracciare le risorse riusabili :-).

 

 

 

 

 Richieste via email

Viene migliorata e resa più semplice la funzionalità di generazione delle richieste via email. In questo modo, si facilita l’uso dello strumento anche per le persone che sono più abituate ad usare l’email. Pochi semplici passi e l’email viene configurata. JIRA dispone nativamente di questa funzionalità e l’addon consente di poterla configurare senza tanti problemi 🙂

 

 

 Migliorate le pagine di gestione

Sono state migliorate, e rese molto più semplici, le pagine di gestione e le pagine utilizzate dagli agenti per poter svolgere la propria mansione. In questo modo si aumenta e facilita la produttività degli Agenti.

 

Conclusioni

Un addon fenomenale. Non posso che consigliarlo per le piccole o grandi imprese che intendono crearsi un proprio sistema di Service Desk interno che, in maniera agevole e semplice, possa aiutare le persone a risolvere i piccoli e grandi problemi quotidiani.

 

Bonfire aka JIRA Capture

JIRA Capture

In questo post andremo ad esaminare un addon di JIRA, molto utile per le sessioni di testing. JIRA CAPTURE. Nato come addon delle prime versioni di JIRA, fu succesivamente acquisito dalla Atlassian (insieme ad altri addon) e gli fu cambiato nome in JIRA Capture.

 

 

Nel dettaglio ….

Questo Addon consente di poter velocizzare i feedback e renderli molto più agevoli. Proviamo a descrivere uno scenario. Supponiamo di dover eseguire un test di un applicativo WEB. Supponiamo di aver identificato un punto in questo applicativo, in cui sia necessario un intervento (sia esso di manutenzione, correttivo o migliorativo. Come procediamo?

I passi sono semplici ma brigosi:

  • Creare uno screenshot della pagina web
  • Evidenziare il punto o i punti su cui si vuole eseguire l’intervento
  • mail per il servizio di manutenzione o creazione del task su JIRA, se si dispone di quest’ultimo

Immaginate di doverlo ripetere diverse volte al giorno……

 

In che modo JIRA Capture ci aiuta?

Semplice. Automatizza questa operazione. 🙂 Si tratta di un componente della suite dei prodotti Atlassian, che si interfaccia su tutti i maggiori browser in circolazione e, una volta richiamato, esegue tutte le operazioni che ho descritto in precedenza ed attende solo che l’utente inserisca il testo del feedback che intende fornire.

Come evidenziato dalla precedente immagine, JIRA Capture mette a disposizione tutti gli strumenti per

  • evidenziare i punti di intervento sullo screenshot
  • inserire le annotazioni del caso
  • Creare una issue nuova
  • Accodare le informazioni ad una issue preesistente

 

Conclusioni

Si tratta di un valido strumento che aiuta nello sviluppo e nel fornire un feedback.  Nei prossimi post vedremo nel dettaglio il funzionamento e mostreremo un esempio di come si può utilizzare.

Nuovo editor pagine per Confluence

Una piccola novità

Segnalo una piccola novità per la versione di Confluence onDemand. L’editor delle pagine è stato ristrutturato 🙂

 

Nuovo editorCome si può osservare, abbiamo le seguenti novità:

  • Più spazio all’area di editazione;
  • Area menù più compatta
  • Grafica più accattivante.

 

Consultando velocemente il blog Atlassian, dove sono riportate le ultime news, ho scoperto che da oggi sono in corso importanti rilasci :-D.

Nei prossimi post saranno riportate nel dettaglio le prossime novità.