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)

Nessun commento: