Articolo: Visualizzare un documento di Filenet con Visual Basic Net e C#
Figura 1
Introduzione
In questo articolo, vedremo come visualizzare un documento, inserito in filenet, in una nostra applicazione windows, tramite la tecnologia .net, i linguaggi che utilizzeremo sono Visual Basic Net e C#.
Tramite i controlli messi a disposizione da filenet, ed in particolare del controllo Filenet Panagon IDM VIEW Control, possiamo visualizzare in una nostra applicazione per windows, i file (immagini, .doc, ecc) inseriti in filenet. Tale controllo, permette una visualizzazione di tale file all'interno del controllo, come mostrato in figura 1.
Inserimento del controllo nella barra degli strumenti.
Continuando dal progetto sviluppato nell'articolo precedente, si crea una form, il cui compito è quello di aprire (tramite appositi pulsanti) altre finestre. Dopo aver creato tale finestra, si aggiunge al progetto una nuova form, la quale avrà il compito di visualizzare i documenti. Aggiungiamo al progetto il controllo Filenet Panagon Idm View control, tramite il tasto destro del mouse, sulla barra degli strumenti, selezioniamo dal menu di scelta rapida, la voce aggiungi controllo. Verrà aperta una finestra, contenente i controlli installati sul pc, da questa finestra selezioniamo il controllo Filenet Panagon IDM VIew control, come mostrato in figura 2.
Figura 2
Dopo aver selezionato tale voce, mettiamo una spunta a tale controllo, e chiudiamo la finestra tramite il pulsante ok, in questo modo verrà visualizzato il controllo nella barra degli strumenti, come mostrato in figura 3.
Figura 3
Creazione della finestra per la visualizzazione del documento.
Si crea una finestra, nella quale saranno visualizzati i documenti, la finestra avrà una lista dei nomi (corrispondenti al codice id, impostato da filenet) ed il controllo idm view di filenet, per la visualizzazione dei documenti. Inseriamo nella finestra, due controlli label, un pulsante, un controllo listbox ed infine il controllo filenet idm viewer, inserito precedentemente, la finestra dovrà avere un aspetto simile alla figura 1.
Inseriamo lo spazio dei nomi, per la gestione dei database generali, oledb. Di seguito si riporta tale codice:
Vb.Net
Imports
System.Data.OleDbC#
using
System.Data.OleDb;
Si dichiara a livello generale della form, un oggetto di tipo idmlibrary per la gestione delle librerie
Vb.Net
Private
objLibrary As New IDMObjects.LibraryC#
//oggetto libreria
IDMObjects.Library ObjLibrary =
new IDMObjects.Library();Siccome l'oggetto library, è quel oggetto per le gestione dei documenti che in precedenza abbiamo utilizzato tramite il metodo logon per effettuare il login, quindi l'autenticazione a filenet, dobbiamo utilizzare l'istanza di quell'oggetto, per gestire i vari documenti nella nostra form, a tal fine si crea un nuovo costruttore, che accetta come parametro un oggetto di tipo library.
Di seguito si riporta un frammento di codice.
Vb.Net
Sub New(ByVal libreria As IDMObjects.Library)
InitializeComponent()
objLibrary = libreria
End Sub
C#
public
FrmVisualizzaDocumento(IDMObjects.Library libreria){
InitializeComponent();
ObjLibrary = libreria;
}
Caricamento dei nomi dei file
Nell'evento load della form, carichiamo nel controllo lista tutti i nomi dei documenti inseriti in filenet, in particolare, per rilevare tali nomi, dobbiamo effettuare una query, nel provider di filenet, tale query è diversa se utilizziamo la versione IS (Image Services) o CS (content Services) perchè i nomi dei campi della tabella sono differenti. La query che andremo ad eseguire, avrà il compito di restituire tutti quei nomi dei documenti, in cui hanno il campo classe documentale impostato secondo un nostro valore (Es. "classeTest"). Le Classi che utilizzeremo sono le seguenti:
Oledbconnection per la connessione al database, oledbcommand (occorre lavorare in modalità connessa) per effettuare le query, un oledbdatareader per il rilevamento dei dati trovati. Infine utilizzeremo le classi messi a disposizione da filenet per la gestione degli errori. Di seguito si riporta il codice, da inserire nell'evento load della form.
Vb.Net
'carico i dati nella listbox
Dim ConDati As OleDbConnection
Dim DtaDati As OleDbDataAdapter
Try
' Query per la versione IS
' Dim StrSql As String = "Select F_DOCNUMBER, F_DOCCLASSNAME,F_ENTRYDATE from FnDocument where F_DOCCLASSNAME='Fatture' order by F_DOCNUMBER,F_ENTRYDATE"
'Queri per la versione CS
Dim StrSql As String = "Select idmId , idmName,idmDateAdded from FnDocument where idmDocType ='ClasseTest' order by idmId,idmDateAdded "
Dim StrConnessione As String = "provider=FnDBProvider;data source=" _
& objLibrary.Name _
&
";Prompt=4;SystemType=" & objLibrary.SystemType _";user id=Admin;password=MiaPassword;LogonID=" & objLibrary.LogonId & ";"&
ConDati =
New OleDbConnection(StrConnessione)ConDati.Open()
'Effettuo la query
Dim oledbcommand As New OleDbCommand(StrSql, ConDati)
'Rilevo i dati
Dim oledbReader As OleDbDataReader = oledbcommand.ExecuteReader()
oledbReader.Read()
ListBox1.Items.Add(oledbReader(0).ToString())
'valorizzo la lista
While oledbReader.Read()
ListBox1.Items.Add(oledbReader(0).ToString())
End While
'Eccezione
Catch ex As Exception
Dim ObjErrorManager As New IDMError.ErrorManager
Dim ObjErrori As IDMError.Errors
Dim StrTestoErrore As String = ""
Dim objErrore As IDMError.Error
If ObjErrorManager.Errors.Count > 0 Then
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
For Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
Finally
'chiudo i vari oggetti
DtaDati =
NothingdtsDati =
NothingIf ConDati.State = ConnectionState.Open Then ConDati.Close()
NothingConDati =
End Try
C#
try
{
//DA UTILIZZARE SOLO PER IS - string StrSql = "Select F_DOCNUMBER,F_DOCCLASSNAME,F_ENTRYDATE from FnDocument where F_DOCCLASSNAME='ClasseTest' order by F_DOCNUMBER,F_ENTRYDATE" ;
//Query da utilizzare per la versione CS
string StrSql = "Select idmId , idmName,idmDateAdded from FnDocument where idmDocType ='ClasseTest' order by idmId,idmDateAdded" ;
string StrConnessione = "provider=FnDBProvider;data source=" + ObjLibrary.Name + ";Prompt=4;SystemType=" + (int)ObjLibrary.SystemType +
";user id=Admin;password=MiaPassword;LogonID=" + ObjLibrary.LogonId + ";";
OleDbConnection ConDati = new OleDbConnection (StrConnessione);
ConDati.Open();
//Eseguo la query
OleDbCommand oledbcommand = new OleDbCommand(StrSql, ConDati);
//Ricavo i dati
OleDbDataReader oledbReader = oledbcommand.ExecuteReader();
oledbReader.Read();
ListBox1.Items.Add(oledbReader[0].ToString());
//valorizzo la lista
while (oledbReader.Read())
{
ListBox1.Items.Add(oledbReader[0].ToString());
}
}
catch (Exception ex)
{
//Gestione dell'eccezioni tramite classe di filenet
IDMError.ErrorManager ObjErrorManager = new IDMError.ErrorManager();
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano errori
if (ObjErrorManager.Errors.Count > 0){
//ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors;
foreach (IDMError.Error objErrore in ObjErrori){
StrTestoErrore = objErrore.Description;
}
}
else
{
StrTestoErrore = ex.Message;
}
MessageBox.Show(StrTestoErrore, "FileNet");
}
Visualizzare un documento
In questa parte viene descritto come visualizzare nel controllo di filenet, un documento, in particolare quando selezioniamo dalla lista, il nome del documento, verrà visualizzato nel controllo idm view il file selezionato. Utilizzeremo un oggetto di tipo document, il quale tramite la proprietà Id, ci fornirà l'identificativo univoco che filenet assegna ai file, con questo valore, impostiamo la proprietà DocumentId del controllo IDM View, e tramite il metodo refresh aggiorniamo il controllo con il documento selezionato.
Il codice riportato qui di seguito va inserito nell'evento SelectedIndexChanged della listbox, inserita precedemente.
Vb.Net
'oggetto per la visualizzazione
Dim ObjDocument As IDMObjects.Document
Try
'ottengo l'oggetto documento del nome selezionato nella lista
ObjDocument = objLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeDocument, ListBox1.SelectedItem.ToString())
'"pulisco" l'immagine precedente
AxIDMViewerCtrl1.Clear()
AxIDMViewerCtrl1.DocumentID = ObjDocument.ID
AxIDMViewerCtrl1.Refresh()
Catch ex As Exception
Dim ObjErrorManager As New IDMError.ErrorManager
Dim ObjErrori As IDMError.Errors
Dim StrTestoErrore As String = ""
Dim objErrore As IDMError.Error
If ObjErrorManager.Errors.Count > 0 Then
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
For Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
Finally
NothingObjDocument =
End Try
C#
try
{
//oggetto per la visualizzazione
null,null,null);IDMObjects.Document ObjDocument;
//ottengo l'oggetto documento selezionato nella lista
ObjDocument = (IDMObjects.Document) ObjLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeDocument, ListBox1.SelectedItem,
//"pulisco" l'immagine precedente
axIDMViewerCtrl1.Clear();
axIDMViewerCtrl1.DocumentID = ObjDocument.ID;
axIDMViewerCtrl1.Refresh();
}
catch (Exception ex)
{
IDMError.ErrorManager ObjErrorManager =
new IDMError.ErrorManager();IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano errori
if (ObjErrorManager.Errors.Count > 0)
{
//ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors;
foreach (IDMError.Error objErrore in ObjErrori)
{
StrTestoErrore = objErrore.Description;
}
}
else
MessageBox.Show(StrTestoErrore, "FileNet");{
StrTestoErrore = ex.Message;
}
}
Chiusura della form
Per concludere, quando si chiude la finestra, prima di eliminare gli oggetti in memoria, dobbiamo chiudere la connessione a filenet, questo avviene tramite il metodo logoff, verificando che la connessione è ancora attiva. Queste operazioni vanno effettuate nell'evento closing della form. Di seguito si riporta un esempo di codice:
Vb.Net
Try
If objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) = True Then
'chiudo la connessione
objLibrary.Logoff()
End If
Catch ex As Exception
Dim ObjErrorManager As New IDMError.ErrorManager
Dim ObjErrori As IDMError.Errors
Dim StrTestoErrore As String = ""
Dim objErrore As IDMError.Error
If ObjErrorManager.Errors.Count > 0 Then
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
For Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
Finally
'distruggo l'oggetto
objLibrary =
NothingEnd Try
C#
try
if (objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) = True ){
{
//chiudo la connessione
ObjLibrary.Logoff();
}
}
catch (Exception ex)
{
IDMError.ErrorManager ObjErrorManager =
new IDMError.ErrorManager();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
{
//distruggo l'oggetto
ObjLibrary =
null;}
Conclusioni
In questo articolo, si è visto come visualizzare un documento tramite un apposito controllo di filenet, da notare che non tutti i file possono essere visualizzati in quel controllo per esempio quelli in formato .zip, o altri tipi. Tramite la parola download è possibile effettuare il donwload dell'esempio utilizzato in questo articolo.
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)
Nessun commento:
Posta un commento