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

In questo articolo conclusivo vedremo come eliminare le queue (code) in Filenet IS tramite la tecnologia .Net, in particolare con il linguaggio VB.Net e C#.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

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

Figura 1

Introduzione

In questo articolo conclusivo sulla programmazione Filenet, vedremo l'ultima parte riguardante le queue, in particolare come cancellare una coda (queue) tramite la tecnologia .Net, in particolare con il linguaggio VB.Net e C#, le classi che utilizzeremo a tale scopo, sono queue, queuequeryspecification e queueentry. Si crea una nuova form, nella quale inseriamo tre label per i vari titoli, due controlli listbox, che avranno il compito di riportare i dati da cancellare e due pulsante, uno per eliminare il dato selezionato e l'altro per chiudere la finestra. La form dovrà avere un aspetto simile a quella illustrata in figura 1.

Variabili a livello di form e modifica del costruttore

Si creano a livello di form, due oggetti, uno di tipo queue e l'altro di tipo queuequeryspecification, di seguito si riporta un esempio di codice.

 

Fatta tale operazione, si modifica il costruttore della form, aggiungendo come argomento un oggetto library, usato in precedenza per effettuare il login a filenet, tale oggetto avrà il compito di creare un isanza dell'oggetto queue, da un  determinato workspace (Anagrafica) e queue (dati).

Di seguito si riportano i frammenti di codice delle suddette operazioni.

Vb.Net

Public

InitializeComponent()

 

Sub New(ByVal Objlibreria As IDMObjects.Library)'inizializzo

ObjQueue =

ObjQueueQuery =

 

New IDMObjects.QueueNew IDMObjects.QueueQuerySpecification'imposto la classe

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

ObjQueueQuery = ObjQueue.CreateQuerySpecification()

CaricaDati()

 

 

"ANAGRAFICA/DATI")End Sub

 

C#

public

{

InitializeComponent();

ObjQueue =

ObjQueueQuery =

 

FrmEliminaCoda(IDMObjects.Library objlibreria)new IDMObjects.Queue ();new IDMObjects.QueueQuerySpecification();//imposto la classe

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

ObjQueueQuery = ObjQueue.CreateQuerySpecification();

}

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

Funzione per il caricamento dei dati

La funzione carica dati, ha il compito di valorizzare i controlli listbox con i valori delle queue. Tramite l'oggetto QueueQuerySpecificatio viene eseguita una query, ossia permette di fare una ricerca di determinati valori, mentre con l'oggetto QueueBrowseSet, valorizziamo gli oggetti tramite la proprietà value. Mentre con il metodo movenext scorriamo per tutti i dati.

Di seguito si riporta il frammento di codice di tale funzionalità.

Vb.Net

Private

 

Sub CaricaDati()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.idmIncompleteOK

ObjQueueQuery.MinPriority = 0

 

'restituisce tutti gli entry anche se sono loccati ossia bloccati

ObjQueueQuery.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK

 

'oggetto per il risultato della query

 

ObjQueueBrowser = ObjQueueQuery.Browse()

 

 

 

Dim ObjQueueBrowser As New IDMObjects.QueueBrowseSetDim ObjErrorManager As New IDMError.ErrorManagerDim ObjErrori As IDMError.ErrorsDim StrTestoErrore As String = ""

 

 

Dim objErrore As IDMError.Error'se la ricerca ha esito negativo ossia no trova nulla restituisce il seguente numero di errore

 

If ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors

 

If objErrore.Number = -2147208689 Then

MessageBox.Show(

 

"non ci sono code", "FileNet", MessageBoxButtons.OK, MessageBoxIcon.Information)Exit Sub

 

End If

 

End If

 

lstNome.Items.Add(ObjQueueBrowser.Entry.Properties(

lstCognome.Items.Add(ObjQueueBrowser.Entry.Properties(

 

For inconta As Integer = 1 To ObjQueueBrowser.RecordCount"Nome").Value)"Cognome").Value)'mi sposto avanti di un record

 

If ObjQueueBrowser.MoreResults = True Then

ObjQueueBrowser.MoveNext()

 

End If

 

Next

 

 

 

 

 

Catch ex As ExceptionDim ObjErrorManager As New IDMError.ErrorManagerDim ObjErrori As IDMError.ErrorsDim StrTestoErrore As String = ""

 

 

Dim objErrore As IDMError.ErrorIf ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors

 

'ciclo per tutti gli errori

 

StrTestoErrore = objErrore.Description

 

For Each objErrore In ObjErroriNext

 

Else

StrTestoErrore = ex.Message

 

End If

MsgBox(StrTestoErrore)

End Try

 

End Sub

 

C#

 

{

 

private void CaricaDati()try

{

 

 

}

 

{

IDMError.ErrorManager ObjErrorManager =

IDMError.Errors ObjErrori;

 

IDMError.Error ObjErrore;

 

 

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

 

//oggetto per le query

IDMObjects.QueueBrowseSet ObjQueueBrowser =

ObjQueueBrowser = ObjQueueQuery.Browse();

 

{

lstNome.Items.Add(ObjQueueBrowser.Entry.Properties[

lstCognome.Items.Add(ObjQueueBrowser.Entry.Properties[

 

}

new IDMObjects.QueueBrowseSet();for (int intconta = 1; intconta <= ObjQueueBrowser.RecordCount; intconta++)"Nome"].Value);"Cognome"].Value);//verifico la fine

 

{

ObjQueueBrowser.MoveNext();

}

if (ObjQueueBrowser.MoreResults == true)catch (Exception ex)new IDMError.ErrorManager();string StrTestoErrore = "";//verifico che in filenet ci siano errori

 

{

ObjErrori = ObjErrorManager.Errors;

 

}

if (ObjErrorManager.Errors.Count > 0)//ciclo per tutti gli errori

 

{

StrTestoErrore = objErrore.Description;

}

foreach (IDMError.Error objErrore in ObjErrori)else

{

StrTestoErrore = ex.Message;

}

 

}

 

 

}

MessageBox.Show(StrTestoErrore, "FileNet");

Funzione per eliminare la coda selezionata.

Per eliminare una queue (coda) dobbiamo utilizzare il metodo delete dell'oggetto queueentry, il quale elimina il record selezionato.

La  funzionalità di elimina, situato nell'evento click del pulsante elimina, permette di eliminare il record selezionato nella lista box, in particolare filtrando per il campo cognome. E' buona norma prima di eliminare il dato accertarsi che esso esista. Di seguito si riporta il codice delle suddette operazioni..

Vb.net

Try

ObjQueueQuery = ObjQueue.CreateQuerySpecification()

ObjQueueQuery.Filters(

 

 

 

 

 

 

 

"Cognome").Value = lstCognome.Text'verifico se ho trovato il record

 

ObjQueueBrowser = ObjQueueQuery.Browse()

 

 

 

Dim ObjQueueBrowser As New IDMObjects.QueueBrowseSetDim ObjErrorManager As New IDMError.ErrorManagerDim ObjErrori As IDMError.ErrorsDim StrTestoErrore As String = ""

 

 

Dim objErrore As IDMError.Error'se la ricerca ha esito negativo ossia no trova nulla restituisce il seguente numero di errore

 

If ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors

 

If objErrore.Number = -2147208689 Then

MessageBox.Show(

 

"Attenzione il record non esiste", "FileNet", MessageBoxButtons.OK, MessageBoxIcon.Information)Exit Sub

 

End If

 

End If

 

ObjQueueEntry = ObjQueueBrowser.Entry

ObjQueueEntry.MakeReadWrite()

ObjQueueEntry.Delete()

CaricaDati()

Dim ObjQueueEntry As New IDMObjects.QueueEntryCatch ex As ExceptionDim ObjErrorManager As New IDMError.ErrorManagerDim ObjErrori As IDMError.ErrorsDim StrTestoErrore As String = ""

 

 

Dim objErrore As IDMError.ErrorIf ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors

 

'ciclo per tutti gli errori

 

StrTestoErrore = objErrore.Description

 

For Each objErrore In ObjErroriNext

 

Else

StrTestoErrore = ex.Message

 

End If

MsgBox(StrTestoErrore)

End Try

 

C#

 

try

{

ObjQueueQuery = ObjQueue.CreateQuerySpecification();

ObjQueueQuery.Filters[

 

 

}

 

{

IDMError.ErrorManager ObjErrorManager =

IDMError.Errors ObjErrori;

 

IDMError.Error ObjErrore;

 

            }

 

"Cognome"].Value = lstCognome.Text ;//verifico se ho trovato il record

IDMObjects.QueueBrowseSet ObjQueueBrowser =

ObjQueueBrowser = ObjQueueQuery.Browse();

IDMError.ErrorManager ObjErrorManager =

IDMError.Errors ObjErrori;

 

 

 

new IDMObjects.QueueBrowseSet();new IDMError.ErrorManager();string StrTestoErrore = "";//se la ricerca ha esito negativo ossia no trova nulla restituisce il seguente numero di errore

 

{

ObjErrori = ObjErrorManager.Errors ;

 

{

 

{

 

 

}

StrTestoErrore = ObjErrore.Description;

}

}

IDMObjects.QueueEntry ObjQueueEntry =

ObjQueueEntry = ObjQueueBrowser.Entry;

ObjQueueEntry.MakeReadWrite();

ObjQueueEntry.Delete();

CaricaDati();

if (ObjErrorManager.Errors.Count > 0)foreach (IDMError.Error ObjErrore in ObjErrori)if ( ObjErrore.Number == -2147208689)MessageBox.Show("Attenzione il record non esiste", "FileNet", MessageBoxButtons.OK, MessageBoxIcon.Information);return ;new IDMObjects.QueueEntry();catch (Exception ex)new IDMError.ErrorManager();string StrTestoErrore = "";//verifico che in filenet ci siano errori

 

{

ObjErrori = ObjErrorManager.Errors;

 

if (ObjErrorManager.Errors.Count > 0)//ciclo per tutti gli errori

 

{

StrTestoErrore = objErrore.Description;

}

foreach (IDMError.Error objErrore in ObjErrori)        else

            {

StrTestoErrore = ex.Message;

}

 

}

MessageBox.Show(StrTestoErrore, "FileNet");

 

Conclusioni:

In questo articolo, si è visto come eliminare le code (queue), informazioni importanti relative ai documenti, gli oggetti utilizzati (queue, QueueQuerySpecification,  QueueBrowseSet  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

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)

 

 

Vb.Net

 

 

Dim ObjQueue As IDMObjects.QueueDim ObjQueueQuery As IDMObjects.QueueQuerySpecification

 

C#

IDMObjects.Queue ObjQueue;

IDMObjects.QueueQuerySpecification ObjQueueQuery;