Filenet inserire le queue (code) in Filenet IS 4.0 tramite la tecnologia .Net (VB.Net e C#)

In questo articolo vedremo come inserire nuovi queue (code) in Filenet Image Services 4.0. tramite la tecnologia .Net, in particolare con il linguaggio Visual Basic Net e C# (versione del Framework 2.0).

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

 

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 saranno nome e cognome) 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, dovremmo modificare il costruttore della nostra form, che tramite  l'oggetto library utilizzato nel login della form precedente, possiamo stanziare i vari oggetti. Si 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 verificare 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 

'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à 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 delle 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)