Articolo Filenet. Come effettuare l'autenticazione (login) tramite il metodo logon in Filenet, tramite la tecnologia .net( Visual Basic Net e C#.)
Introduzione:
In questo articolo introduttivo alla programmazione, si vedrà come utilizzare le operazioni più comuni di filenet con la tecnologia .Net 2.0 ossia con Visual Studio 2005. Tale articolo si può applicare sia alla versione di filenet Content Services 52 e sia per la versione Content Services 53 ed idmdesktop versione 3.2.A. In particolare vedremo in questa serie di articoli, come creare un applicazione che avrà il compito di effettuare le operazioni più comuni, quali, il login, inserimento, modifica eliminazione e visualizzazione dei documenti e delle code. Questo articolo, illustra la tecnica per effettuare l'autenticazione a Filenet, nei successivi articoli, tutti dedicati alla programmazione, vedremo le operazione che si possono effettuare sul programma Filenet. In ogni articoli si potrà scaricare il file di esempio utilizzato.
Aggiunta di riferimento
Si crea un nuovo progetto di tipo windows application, utilizzando il linguaggio (Visual Basic.Net o C#) con cui avete più famigliarità.
Per la gestione di Filenet, occorre referenziare (figura 1) nel progetto le dll panagon, in particolare IDM Objects 3.2. (il numero è riferito alla versione installato, per tanto può cambiare da pc a pc) la quale permette la gestione delle librerie, classi, documenti ecc. Da notare che la libreria idm error object 3.2 permette la gestione degli errori e buona norma aggiungere anch’essa. Per aggiungere un riferimento al progetto, andate nel menu progetto e selezionate la voce aggiungi riferimento, a questo punto verrà aperta una finestra, selezionate la pagine con la scritta “COM”.
Figura 1
Chiudiamo le finestre tramite il pulsante ok, in questo modo, si conferma la scelta di inserire nel nostro progetto i componenti panagon per la gestione di filenet.
Dopo aver aggiunto al progetto i riferimenti a Filenet, non ci resta che creare la nostra applicazione, si crea una finestra di login , la quale permette di accedere al nostro programma e di conseguenza a filenet. Inseriamo nella form, due caselle di testo (una per username e l’altra per la password) una casella combinata, la quale elenca tutte le librerie installate e due pulsanti, uno per il login è l’altro per la chiusura del programma.
La finestra dev’essere simile a quella illustrato qui di seguito (figura 2).
Figura 2
Caricamento delle librerie
Quando si devono fare delle operazioni sui documenti, quali ricerca, inserimento, cancellazione, ecc, ci si deve loggare, ossia si deve avere accesso al sistema filenet, per far ciò, dobbiamo ricorrere al metodo logon.
Quando la form, viene avviata, dobbiamo caricare nella casella combinata, tutte le librerie che sono incluse in filenet, in ogni libreria, possiamo trovare cartelle e documenti. La form di login, avrà il compito di fare il login nella libreria selezionata dall'utente in cui vuole effettuare le operazione sui documenti.
Per rilevare i nomi delle librerie, dobbiamo utilizzare l'oggetto Neighborhood il quale è utilizzato per la gestione dell’insieme delle librerie.
Mentre per la gestione delle librerie, dobbiamo utilizzare l'oggetto Library il quale effettua operazione sui documenti e cartelle di ogni libreria. Infine utilizziamo nel progetto anche l'oggetto ErrorManager il quale permette la gestione degli errori.
Si crea nella form, tre oggetti, del tipo precedentemente illustrato. Il codice dev'essere simile a quello riportato qui di seguito.
Vb.Net
Private objLibrary As New IDMObjects.Library
Private objNeighborhood As New IDMObjects.Neighborhood
Private objErrorManager As New IDMError.ErrorManager
C#
//oggetto neighborhhod
private IDMObjects.Neighborhood objNeighborhood = new IDMObjects.Neighborhood();
//oggetto library
private IDMObjects.Library ObjLibrary = new IDMObjects.Library();
//oggetto error
private IDMError.ErrorManager ObjErrorManager = new IDMError.ErrorManager();
Mentre per il rilevamente delle libreria installate, il codice da inserire nell'evento load della form, dev'essere simile a quello riportato qui di seguito.
Vb.Net
'gestione dell'errore
Dim ObjErrori As IDMError.Errors
Dim dttLibreria As New DataTable("Dati")
Dim dtcNomeLibreria As New DataColumn("Libreria")
Dim dtcNomeCompleto As New DataColumn("NomeCompleto")
Dim dtrRiga As DataRow
'riempio la combo con le varie librerie di filenet
Dim oblLibreria As New IDMObjects.Library
Try
'inserisco le colonne
dttLibreria.Columns.Add(dtcNomeLibreria)
dttLibreria.Columns.Add(dtcNomeCompleto)
For Each objLibrary In objNeighborhood.Libraries
dtrRiga = dttLibreria.NewRow()
dtrRiga(0) = objLibrary.Label.ToString()
dtrRiga(1) = objLibrary.Name.ToString()
dttLibreria.Rows.Add(dtrRiga)
Next
cmbLibreria.DisplayMember = "Libreria"
cmbLibreria.ValueMember = "NomeCompleto"
cmbLibreria.DataSource = dttLibreria
'imposto il primo valore
If cmbLibreria.Items.Count > 0 Then
cmbLibreria.SelectedIndex = 0
End If
Catch ex As Exception
Dim StrTestoErrore As String = ""
Dim objErrore As IDMError.Error
If objErrorManager.Errors.Count > 0 Then
ObjErrori = objErrorManager.Errors
'ciclo per tutti gli errori
For Each objErrore In ObjErrori
StrTestoErrore = StrTestoErrore & objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
objErrore = Nothing
Finally
objErrorManager = Nothing
End Try
C#
this.Cursor = Cursors.WaitCursor;
//gestione dell'errore
//riempio la combo con le varie librerie di filenet
try
{
DataTable dttLibreria = new DataTable("Dati");
DataColumn dtcNomeLibreria = new DataColumn("Libreria");
DataColumn dtcNomeCompleto = new DataColumn("NomeCompleto");
DataRow dtrRiga;
dttLibreria.Columns.Add(dtcNomeLibreria);
dttLibreria.Columns.Add(dtcNomeCompleto);
foreach (IDMObjects.Library ObjLibrary in objNeighborhood.Libraries)
{
dtrRiga = dttLibreria.NewRow();
dtrRiga[0] = ObjLibrary.Label.ToString();
dtrRiga[1] = ObjLibrary.Name.ToString();
dttLibreria.Rows.Add(dtrRiga);
}
cmbLibreria.DisplayMember = "Libreria";
cmbLibreria.ValueMember = "NomeCompleto";
cmbLibreria.DataSource = dttLibreria;
//imposto il primo valore
if (cmbLibreria.Items.Count > 0)
cmbLibreria.SelectedIndex = 0;
}
catch (Exception ex)
{
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano errori
if (ObjErrorManager.Errors.Count > 0)
{
ObjErrori = ObjErrorManager.Errors;
//ciclo per tutti gli errori
foreach (IDMError.Error objErrore in ObjErrori)
{
StrTestoErrore = objErrore.Description;
}
}
else
{
StrTestoErrore = ex.Message;
}
MessageBox.Show(StrTestoErrore, "FileNet");
}
finally
{
this.Cursor = Cursors.Default;
}
Nell’evento load della form login, viene riempita la casella combinata, con i nomi delle libreria,, per conoscere il nome delle librerie si utilizza la proprietà label dell’oggetto library, mentre la proprietà name ci ritorna il nome completo. Come si vede dal codice, tramite un ciclo otteniamo il valore di tutte le libreria, tramite la proprietà Libraries dell l'oggetto Neighborhood .
Il login, tramite il metodo logon della classe library.
Una volta che l'utente a selezionato il nome della libreria ed impostato il nome utente e password, tramite il pulsante Entra, deve effettuare il login. Va ricordato che il testo per i nomi utenti e le password, sono differenti tra le lettere minuscole e maiuscole, quindi fare molta attenzione nel digitare . Tramite il metodo GetState con il parametro IDMObjects.idmLibraryState.idmLibraryLoggedOn dell'oggetto library, permette di verificare se il login è stato effettuato o no. Se qualora abbiamo una transizione aperta, effettuiamo il login, senza username e password, altrimenti inseriamo tali valori. Il metodo per fare il login è Logon il quale accetta diversi valori, quali, nome utente, password, e parametro per visualizzare o no a video la maschera di filenet.
Prima di utilizzare il metogo logon, impostare alcune proprietà, quale, il nome della libreria, tramite la proprietà Name, ed il tipo di sistema di accesso (ds o is) . Di seguito si riporta il codice da inserire nell'evento click del pulsante entra.
Vb.Net
Try
Me.Cursor = Cursors.WaitCursor
'effettuo il login
'objLibrary.SessionManager = objSessionManager
objLibrary.Name = cmbLibreria.SelectedValue.ToString()
objLibrary.SystemType = IDMObjects.idmSysTypeOptions.idmSysTypeDS
''variabile booleana che indica il login effettuato
Dim blnLoggato As Boolean
If objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) = True Then
'effettuo il login senza utilizzare le credenzialità
blnLoggato = objLibrary.Logon("", "", , IDMObjects.idmLibraryLogon.idmLogonOptNoUI)
Else
blnLoggato = objLibrary.Logon(txtutente.Text, txtpassword.Text, , IDMObjects.idmLibraryLogon.idmLogonOptNoUI)
End If
'eventualmente verifare di nuovo lo stato tramite getfiles
If objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) Then
'avvio la form principale 'dalle form successive fare il logoof
Dim FrmPrincipale As New FrmPrincipale(objLibrary, objNeighborhood)
FrmPrincipale.ShowDialog()
Else
MsgBox("Errore di login", MsgBoxStyle.Information, "Filenet")
End If
Catch ex As Exception
Dim ObjErrori As IDMError.Errors
Dim StrTestoErrore As String = ""
Dim objErrore As IDMError.Error
If objErrorManager.Errors.Count > 0 Then
ObjErrori = objErrorManager.Errors
'ciclo per tutti gli errori
For Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
Finally
'riporto il cursore allo stato iniziale
Me.Cursor = Cursors.Default
End Try
C#
//effettuo il login
try
{
ObjLibrary.Name = cmbLibreria.SelectedValue.ToString();
ObjLibrary.SystemType = IDMObjects.idmSysTypeOptions.idmSysTypeDS;
//variabile booleana che indica il login effettuato
Boolean blnLoggato;
if (ObjLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) == true )
{
blnLoggato = ObjLibrary.Logon( "","","", IDMObjects.idmLibraryLogon.idmLogonOptNoUI);
}
else
{
blnLoggato = ObjLibrary.Logon(txtutente.Text, txtpassword.Text, "", IDMObjects.idmLibraryLogon.idmLogonOptNoUI);
}
//eventualmente verifare di nuovo lo stato tramite getfiles
if ( ObjLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) == true )
{
FrmPrincipale frmprincipale = new FrmPrincipale(ObjLibrary, objNeighborhood);
frmprincipale.Show();
}
else
{
MessageBox.Show("Errore di login", "Filenet");
}
}
catch (Exception ex)
{
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano errori
if (ObjErrorManager.Errors.Count > 0)
{
ObjErrori = ObjErrorManager.Errors;
//ciclo per tutti gli errori
foreach(IDMError.Error objErrore in ObjErrori)
{
StrTestoErrore = objErrore.Description;
}
}
else
{
StrTestoErrore = ex.Message;
}
MessageBox.Show(StrTestoErrore, "FileNet");
}
finally
{
this.Cursor = Cursors.Default;
}
Conclusioni:
In questo articolo, si è visto come effettuare il login, una fase molto importante e che comunque viene sempre applicata, qualora si deve interagire con filenet. Tramite la parola donwload è possibile scaricare il file di esempio, utilizzato in questo articolo
Download esempio
I siti web di riferimento:
http://www.filenet.com/Italiano/index.asp Italia
http://www.filenetinfo.com/mk/get/feis_ita_reg Per richiedere gratuitamente il cd "FileNet is Essential"
http://www.filenet.com/ (Inglese)
Esempio Allegato