Visualizzazione post con etichetta Filenet. Mostra tutti i post
Visualizzazione post con etichetta Filenet. Mostra tutti i post

venerdì 2 novembre 2007

Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net

Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)



Figura 1


Introduzione.


In questo articolo vedremo come inserire delle code (valori queue) in Filenet Image Services (IS), utilizzando la tecnologia .Net in particolare con i linguaggi Visual Basic Net e C#. Si crea un nuovo form nel quale inseriamo tre label (per le varie etichette) due caselle di testo (per i valori da inserire, anche in questo caso l'etichette saranno nome e cognome come visto nell'articolo precedente) e due pulsanti, relativi all'inserimento ed alla chiusura della finestra. L'aspetto della finestra dovrà essere simile a quella mostrata in figura 1.


Dichiarazione a livello di form dei vari oggetti e modifica del costruttore.


A livello di form, si creano due oggetti, uno di tipo queue e l'altro di tipo queuequeryspecification, il primo ha il compito di gestire le code, mentre il secondo le ricerche delle queue, di seguito si riporta un esempio di codice.


Vb.Net


Dim ObjQueue As IDMObjects.Queue

Dim ObjQueueQuery As IDMObjects.QueueQuerySpecification

C#


IDMObjects.Queue ObjQueue;


IDMObjects.QueueQuerySpecification ObjQueueQuery;


A questo punto dobbiamo modificare il costruttore della nostra form, che tramite l'oggetto library utilizzato nella form di login discussa negli articoli precedenti, possiamo istanziare i vari oggetti. Di seguito si riporta un esempio di codice delle suddette operazioni. Da notare che la parola anagrafica, corrisponde al workspace mentre dati alla queue


Vb.Net


Public Sub New(ByVal Objlibreria As IDMObjects.Library)

InitializeComponent()


'inizializzo

ObjQueue =

New IDMObjects.Queue

ObjQueueQuery =

New IDMObjects.QueueQuerySpecification

'imposto la classe

ObjQueue = Objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue,

"ANAGRAFICA/DATI")

ObjQueueQuery = ObjQueue.CreateQuerySpecification()


End Sub


C#


public

FrmInserisciCode(IDMObjects.Library objlibreria)

{



InitializeComponent();


ObjQueue =

new IDMObjects.Queue ();

ObjQueueQuery =

new IDMObjects.QueueQuerySpecification();

//imposto la classe

ObjQueue = (IDMObjects.Queue) objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue,

"ANAGRAFICA/DATI", null, null, null );

ObjQueueQuery = ObjQueue.CreateQuerySpecification();


}


Funzione verifica dati


La funzione verifica dati ha il compito di accertarsi che il valore che si sta inserendo e più precisamente il cognome, non è già stato inserito. Tramite le classi QueueQuerySpecification e QueueEntry si verifica tale esistenza, la prima classe esegue una ricerca, mentre la seconda permette l'inserimento (tramite il metodo insert) dei dati. Se viene generato un errore, in particolare con il codice -2147208689 vuol dire che non esiste un dato relativo al valore di ricerca.


Di seguito si riporta il frammento di codice, utilizzato nella funzione di verifica dati.


Vb.Net



'funzione per la verifica dei dati

Private Sub VerificaDati()

Try

'oggetto

'flag per l'accesso al sistema di filenet

ObjQueueQuery.CheckUser =

False

'Indica i valori delle code

ObjQueueQuery.EvenIfDelayed =

False

'permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.

ObjQueueQuery.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK


ObjQueueQuery.MinPriority = 0


'restituisce tutti gli entry anche se sono loccati ossia bloccati

ObjQueueQuery.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK


'filtro i dati

ObjQueueQuery.Filters(

"Cognome").Value = Trim(txtCognome.Text)

'oggetto risultato della query

Dim objQueueEntry As New IDMObjects.QueueEntry()

'Eseguo la ricerca

objQueueEntry = ObjQueueQuery.Browse()


Catch ex As Exception

Dim ObjErrorManager As New IDMError.ErrorManager

Dim ObjErrori As IDMError.Errors

Dim StrTestoErrore As String = ""

Dim objErrore As IDMError.Error

'verifico il tipo di errore

If objErrore.Number = -2147208689 Then

'funzione di inserimento

InserisciCoda()


Else

'il dato esiste

If MessageBox.Show("Il dato esiste, si vuole inserire?", "Nuova Coda", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then

'inserisco il dato

InserisciCoda()


End If

End If


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)


End Try

End Sub

C#


//funzione per la verifica dei dati

private void VerificaDati()

{



try

{




//flag per l'accesso al sistema di filenet

ObjQueueQuery.CheckUser =

false;

//Indica i valori delle code

ObjQueueQuery.EvenIfDelayed =

false ;

//permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.

ObjQueueQuery.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteNotOK ;


ObjQueueQuery.MinPriority = 0;


//restituisce tutti gli entry anche se sono loccati ossia bloccati

ObjQueueQuery.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK ;


//filtro i dati

ObjQueueQuery.Filters[

"Cognome"].Value = txtCognome.Text.Trim();

//oggetto risultato della query

IDMObjects.QueueEntry objQueueEntry =

new IDMObjects.QueueEntry();

//Eseguo la ricerca

objQueueEntry = (IDMObjects.QueueEntry) ObjQueueQuery.Browse();



}


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)

{



if (objErrore.Number == -2147208689)

{



//funzione di inserimento

InserisciCoda();


}





else

{



if (MessageBox.Show("Il dato esiste, si vuole inserire?", "Nuova Coda", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) == DialogResult.Yes)

{



//inserisco il dato

InserisciCoda();







}


}


}


}


else

{



StrTestoErrore = ex.Message;


}



MessageBox.Show(StrTestoErrore, "FileNet");



}




Funzione per l' inserimento dati


La funzione per l'inserimento dei dati ha il compito di inserire i valori digitati nelle caselle di testo tramite il metodo insert, dell'oggetto queueentry si effettua l'inserimento, questo metodo va eseguito dopo aver impostato alcune proprietà, le più importanti sono quelle relative ai campi (nome e cognome) che devono essere inclusi tra parentesi (tonde per vb.net e quadre per c#) nella proprietà denominata properties sempre di tale proprietà, impostare a false, il valore del campo F_busy, il quale permette di bloccare la queue. Di seguito si riporta un esempio di codice delle suddette operazioni.


Vb.Net


'Funzione di inserimento code


Private Sub InserisciCoda()

Try

'oggetto per l'inserimento

Dim ObjQueueEntry As New IDMObjects.QueueEntry

ObjQueueEntry = ObjQueue.CreateEmptyEntry()


'imposto i valori per i vari campi

ObjQueueEntry(

"Nome").Value = txtNome.Text

ObjQueueEntry(

"Cognome").Value = txtCognome.Text

'look per il record

ObjQueueEntry(

"F_Busy").Value = False

'inserisco

ObjQueueEntry.Insert()


MessageBox.Show(

"Inserimento effettuato con successo", "Inserimento code", MessageBoxButtons.OK, MessageBoxIcon.Information)


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

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)


End Try

End Sub


C#


private

void InserisciCoda()

{



try

{



//oggetto per l'inserimento

IDMObjects.QueueEntry ObjQueueEntry =

new IDMObjects.QueueEntry();

ObjQueueEntry = (IDMObjects.QueueEntry) ObjQueue.CreateEmptyEntry();


//imposto i valori per i vari campi

ObjQueueEntry.Properties[

"Nome"].Value = txtNome.Text;

ObjQueueEntry.Properties[

"Cognome"].Value = txtCognome.Text;

//look per il record

ObjQueueEntry.Properties[

"F_Busy"].Value = false;

//inserisco

ObjQueueEntry.Insert();


MessageBox.Show("Inserimento effettuato con successo", "Inserimento code", MessageBoxButtons.OK, MessageBoxIcon.Information);



}


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");

}



}


Conclusioni:


In questo articolo si è visto come inserire nuovi valori per le queue, informazioni importanti relativi ai documenti, gli oggetti utilizzati (queue, QueueQuerySpecification e QueueEntry) sono gli oggetti da utilizzare per la gestione delle queue. Tramite la parola download è possibile scaricare il progetto di esempio utilizzato nell'articolo


Download esempio


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)


domenica 16 settembre 2007

Filenet Visualizzare le queue (code) tramite .Net (VB.Net e C#)

Filenet: Visualizzare le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)



Figura 1


Introduzione:


In questo articolo, vediamo come visualizzare i valori delle queue (code) tramite la tecnologia .Net (Vb.Net e C#), in particolare alcuni campi (denominati nome e cognome) creati in precedenza. Si crea una nuova form, nella quale si aggiunge tre label (per i vari titoli) due controlli listbox ed un pulsante, la finestra dovrà avere un aspetto simile alla figura 1.


Per la gestione delle code, utilizzeremo le classi library, per la gestione delle librerie, queue per la gestione delle code, QueueQuerySpecification per effettuare le operazioni di ricerca ed infine la classe QueueBrowseSet che restituisce il risultato della ricerca.


Gli oggetti dichiarati a livello di form.


Utilizzeremo un solo oggetto, di tipo library a livello di form, il resto degli oggetti (istanze delle classi precedentemente descritte) saranno inseriti nei rispettivi eventi.


Si crea un oggetto di tipo library nella form, subito dopo la dichiarazione della form, come riportato qui di seguito.


Vb.Net


'oggetto libreria


Dim objLibrary As New IDMObjects.Library



C#


//oggetto libreria


IDMObjects.Library ObjLibrary = new IDMObjects.Library();


A questo punto, modifichiamo il costruttore della nostra form, in modo che possiamo utilizzare l'oggetto library, utilizzato nella form precedente in cui si è effettuato il login, di seguito si riporta un frammento di codice di esempio.


VB.Net


Sub New(ByVal libreria As IDMObjects.Library)


InitializeComponent()


objLibrary = libreria


End Sub



C#


public FrmVisualizzaCode(IDMObjects.Library objlibreria)


{


InitializeComponent();


ObjLibrary = objlibreria;


}



Ricerca e visualizzazione delle code


Di seguito si riporta un frammento di codice da utilizzare nell'evento load della form, per la visualizzazione delle queue. Il metodo Browse dell'oggetto QueueQuerySpecification restituisce un insieme di queuebrowsset, ossia il risultato della ricerca effettuata. In effetti con l'oggetto QueueQuerySpecification, impostando alcune proprietà, possiamo eseguire determinate ricerche, mentre con l'oggetto QueueBrowseSet possiamo gestire le varie informazioni ottenute dalla ricerca, scorrere tra i vari dati, rilevare determinati valori, ed altro ancora sulle queue. Se il metodo Browse non trova nulla, restituisce un errore, ossia –2147208689 in questo caso bisogna gestire tale eccezione, altrimenti se qualora il metodo browse restituisce dei valori, possiamo fare un ciclo, per rilevare tali dati, come riportato nel frammento di codice di esempio.


Vb.Net


Try



'oggetto coda


Dim objQueue As New IDMObjects.Queue


objQueue = objLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI")


'oggetto per la ricerca delle code


Dim ObjQueueQuerySpecification As New IDMObjects.QueueQuerySpecification()


ObjQueueQuerySpecification = objQueue.CreateQuerySpecification()


''oggetto per la restituzione dei valori


Dim ObjQueueBrowseSet As New IDMObjects.QueueBrowseSet()


'flag per l'accesso al sistema di filenet


ObjQueueQuerySpecification.CheckUser = False


'Indica i valori delle code


ObjQueueQuerySpecification.EvenIfDelayed = False


'permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.


ObjQueueQuerySpecification.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK


ObjQueueQuerySpecification.MinPriority = 0


'restituisce tutti gli entry anche se sono loccati ossia bloccati


ObjQueueQuerySpecification.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK


'imposto l'oggetto per la ricerca


ObjQueueBrowseSet = ObjQueueQuerySpecification.Browse()


'ciclo per i valori


For intConta As Integer = 1 To ObjQueueBrowseSet.RecordCount



lstbNome.Items.Add(ObjQueueBrowseSet.Entry.Properties("Nome").Value)


lstCognome.Items.Add(ObjQueueBrowseSet.Entry.Properties("Cognome").Value)


'verifico la fine


If ObjQueueBrowseSet.MoreResults = True Then



ObjQueueBrowseSet.MoveNext()


End If


Next



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



ObjErrori = ObjErrorManager.Errors


'ciclo per tutti gli errori


For Each objErrore In ObjErrori



If objErrore.Number = -2147208689 Then


StrTestoErrore = "Non ci sono code"


Else


StrTestoErrore = objErrore.Description


End If


Next


Else



StrTestoErrore = ex.Message


End If


MsgBox(StrTestoErrore)


End Try


C#


try



{



//oggetto coda


IDMObjects.Queue objQueue = new IDMObjects.Queue ();


objQueue = (IDMObjects.Queue) ObjLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI",null,null,null);


//oggetto per la ricerca delle code


IDMObjects.QueueQuerySpecification ObjQueueQuerySpecification = new IDMObjects.QueueQuerySpecification();


ObjQueueQuerySpecification = objQueue.CreateQuerySpecification();


//oggetto per la restituzione dei valori


IDMObjects.QueueBrowseSet ObjQueueBrowseSet = new IDMObjects.QueueBrowseSet();


//flag per l'accesso al sistema di filenet


ObjQueueQuerySpecification.CheckUser = false;


//Indica i valori delle code


ObjQueueQuerySpecification.EvenIfDelayed =false ;


//permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.


ObjQueueQuerySpecification.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK ;


ObjQueueQuerySpecification.MinPriority = 0;


//restituisce tutti gli entry anche se sono loccati ossia bloccati


ObjQueueQuerySpecification.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK;


//imposto l'oggetto per la ricerca


ObjQueueBrowseSet = ObjQueueQuerySpecification.Browse();


//ciclo per i valori


for (int intconta = 1; intconta <= ObjQueueBrowseSet.RecordCount; intconta++ )


{



lstbNome.Items.Add(ObjQueueBrowseSet.Entry.Properties["Nome"].Value );


lstCognome.Items.Add(ObjQueueBrowseSet.Entry.Properties["Cognome"].Value);


//verifico la fine


if (ObjQueueBrowseSet.MoreResults == true)


{



ObjQueueBrowseSet.MoveNext();


}


}





}


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)


{



if (objErrore.Number = -2147208689)


{



StrTestoErrore ="Non ci sono code");


}


else


{



StrTestoErrore = objErrore.Description;


}



}


}


else


{



StrTestoErrore = ex.Message;


}


MessageBox.Show(StrTestoErrore, "FileNet");


}



Conclusioni:


In questo articolo, si è visto come visualizzare in un controllo listbox i valori delle queue, informazioni importanti relativi ai documenti, gli oggetti utilizzati (queue, QueueQuerySpecification e QueueBrowseSet) sono gli oggetti da utilizzare per la gestione delle queue. Tramite la parola download è possibile scaricare il progetto di esempio utilizzato nell'articolo.


Download esempio


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)

giovedì 21 giugno 2007

Filenet: Inserire un documento tramite VB.Net e C#

Articolo Filenet: Inserimento di un documento tramite Visual Basic .Net e C#.




Figura 1


Introduzione:


In questo articolo, vedremo come inserire un documento in filenet, in particolare tramite un applicazione in ambiente Windows Application con la tecnologia .net (linguaggi VB.Net e C#). Dopo aver selezionato uno o più file, l'inserimento avviene tramite l'utilizzo dell'oggetto document, i file saranno inseriti in un apposita cartella di Filenet, creata precedentemente.


Creazione della form.


Inseriamo nella form, quattro pulsanti, un controllo listbox, che avrà il compito di visualizzare il percorso e nome dei file selezionati e due label, la finestra dovrà avere un aspetto simile a quella mostrata in figura 1. Nell'evento click del pulsante Esci, scriviamo il seguente codice:


Vb.Net


Me.Close()


C#.


this.close();


Mentre per il pulsante con la scritta rimuovi il seguente codice, il quale rimuove la voce selezionata nell'elenco dei file.


Vb.Net


lstFile.Items.Remove(lstFile.SelectedItem)


C#


lstFile.Items.Remove(lstFile.SelectedItem);


Infine per il pulsante seleziona file, il seguente frammento codice, che visualizza una finestra di dialogo per la selezione dei file.


Vb.NEt


If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then


lstFile.Items.Add(OpenFileDialog1.FileName.ToString())


End If


C#


if (OpenFileDialog1.ShowDialog() == DialogResult.OK)


lstFile.Items.Add(OpenFileDialog1.FileName.ToString());


I tre pulsanti, illustrati precedentemente, hanno il compito di uscire dal programma, rimuovere dalla listbox l'elemento selezionato, mentre l'ultimo pulsante ha il compito di visualizzare una finestra per la selezione dei file.


Si crea a livello di form, un oggetto di tipo library, il quale ci permette la gestione dei documenti, di seguito si riporta il suddetto codice:


Vb.Net


Private objLibreria As New IDMObjects.Library


C#


private IDMObjects.Library objLibreria = new IDMObjects.Library();


Infine modifichiamo il costruttore della form, in questo modo quando verrà richiamata tale finestra, viene passato l'oggetto library, di cui precedentemente abbiamo utilizzato per effettuare il login.


Vb.Net


Sub New(ByVal libreria As IDMObjects.Library)


InitializeComponent()


objLibreria = libreria


End Sub



C#


//secondo costruttore


public FrmInserisciDocumento(IDMObjects.Library libreria)


{


objLibreria = libreria;


InitializeComponent();



}



Inserimento del file


Per inserire un file in Fiilenet CS o IS, possiamo utilizzare gli oggetti folder (per la cartella) document, che permette la gestione del file, e library, il quale rappresenta la classe della libreria di cui abbiamo effettuato il login.


La proprietà Properties dell'oggetto document, permette di impostare il valore di una determinata proprietà, mentre il metodo savenew, salva il file. Il metodo file, dell'oggetto folder, assegna all'oggetto document, la cartella in cui verranno inseriti i file.


Di seguito si riporta il codice completo per l'inserimento di un file (situato nell'evento click del pulsante per l'inserimento dei file).


Vb.Net


'oggetto cartella


Dim ObjFolder As IDMObjects.Folder


'oggetto document


Dim ObjDocumento As New IDMObjects.Document


Try


'si possono inserire anche le array - creo l'oggetto di tipo documeto, indicandogli la classe documentale come secondo argomento



ObjDocumento = objLibreria.CreateObject(IDMObjects.idmObjectType.idmObjTypeDocument, "ClasseTest")



'imposto la proprietà name


'assegno il nome del file


ObjDocumento.Properties("idmName").Value = "test.txt"


'imposto il valore di un altra proprietà



If ObjDocumento.Properties.Item(2).PropertyDescription.GetState(IDMObjects.idmPropDescState.idmPropReadOnly) = False Then ObjDocumento.Properties.Item(2).Value = "prova"



'imposto la cartella in cui salvare il file, si può anche evitare - il secondo parametro è il codice identificativo della cartella


ObjFolder = objLibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeFolder, "1156511789")



'imposto la cartella per l'oggetto documento


ObjFolder.File(ObjDocumento)


Dim StrArrFile() As String


ReDim Preserve StrArrFile(lstFile.Items.Count - 1)


For intConta As Integer = 0 To lstFile.Items.Count - 1



StrArrFile(intConta) = lstFile.Items(intConta).ToString()


Next


'salvo il documento, il secondo parametro indica di non spostarlo ma solo copiarlo


ObjDocumento.SaveNew(StrArrFile, IDMObjects.idmSaveNewOptions.idmDocSaveNewKeep)




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



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



ObjFolder = Nothing


ObjDocumento = Nothing


End Try



C#



//oggetto cartella


IDMObjects.Folder objFolder = new IDMObjects.Folder();


//oggetto document


IDMObjects.Document ObjDocumento = new IDMObjects.Document();


//si possono inserire anche nomi di tipo array



ObjDocumento = (IDMObjects.Document)objLibreria.CreateObject(IDMObjects.idmObjectType.idmObjTypeDocument, "ClasseTest", System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);


//imposto la proprietà nome ed un altra personalizzata


//assegno il nome del file


ObjDocumento.Properties["idmName"].Value = "test.txt";



if (ObjDocumento.Properties[2].PropertyDescription.GetState(IDMObjects.idmPropDescState.idmPropReadOnly) == false )


ObjDocumento.Properties[2].Value = "prova";


//imposto la cartella in cui salvare il file, si può evitare


objFolder = (IDMObjects.Folder)objLibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeFolder, "1156511789", null, null, null);


//imposto la cartella del documento


objFolder.File(ObjDocumento);


string[] StrArrFile;


StrArrFile = new string[lstFile.Items.Count - 1 ];


for (int IntConta = 0; IntConta < lstFile.Items.Count - 1; IntConta++)


{



StrArrFile[IntConta] = lstFile.Items[IntConta].ToString();


}


//salvo il documento lasciando un copia sul pc



ObjDocumento.SaveNew(StrArrFile, IDMObjects.idmSaveNewOptions.idmDocSaveNewKeep);


}


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");


}


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 esempio 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



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


'distruggo l'oggetto


objLibrary = Nothing


End 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 inserire un documento in filenet, utilizzando l'oggetto folder, document e library, possiamo inserire uno o più file in determinate cartelle di filenet e con determinati nomi. Tramite la parola download è possibile effettuare scaricare l'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)

martedì 20 marzo 2007

Filenet visualizzare un documento di filenet tramite Visual basic net e C#

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.OleDb


C#


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.Library


C#


//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



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


'chiudo i vari oggetti


DtaDati = Nothing


dtsDati = Nothing


If ConDati.State = ConnectionState.Open Then ConDati.Close()



ConDati = Nothing


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)


{



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");


}


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



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



ObjDocument = Nothing


End Try



C#


try


{


//oggetto per la visualizzazione



IDMObjects.Document ObjDocument;


//ottengo l'oggetto documento selezionato nella lista


ObjDocument = (IDMObjects.Document) ObjLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeDocument, ListBox1.SelectedItem, null,null,null);


//"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)


{



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");


}



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



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


'distruggo l'oggetto


objLibrary = Nothing


End 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.


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)