Articolo Filenet: Eliminare le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)
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.
Vb.Net
Dim ObjQueue As IDMObjects.Queue
Dim ObjQueueQuery As IDMObjects.QueueQuerySpecification
C#
IDMObjects.Queue ObjQueue;
IDMObjects.QueueQuerySpecification ObjQueueQuery;
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 Sub New(ByVal Objlibreria As IDMObjects.Library)
InitializeComponent()
'inizializzoObjQueue = New IDMObjects.Queue
ObjQueueQuery =
New IDMObjects.QueueQuerySpecification
'imposto la classeObjQueue = Objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI")
ObjQueueQuery = ObjQueue.CreateQuerySpecification()
CaricaDati()
End Sub
C#
public FrmEliminaCoda(IDMObjects.Library objlibreria)
{
InitializeComponent();
ObjQueue = new IDMObjects.Queue ();
ObjQueueQuery =
new IDMObjects.QueueQuerySpecification();
//imposto la classeObjQueue = (IDMObjects.Queue) objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI", null, null, null );
ObjQueueQuery = ObjQueue.CreateQuerySpecification();
}
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 queryDim ObjQueueBrowser As New IDMObjects.QueueBrowseSet
ObjQueueBrowser = ObjQueueQuery.Browse()
Dim ObjErrorManager As New IDMError.ErrorManager
Dim ObjErrori As IDMError.Errors
Dim 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 IfFor inconta As Integer = 1 To ObjQueueBrowser.RecordCount
lstNome.Items.Add(ObjQueueBrowser.Entry.Properties(
"Nome").Value)lstCognome.Items.Add(ObjQueueBrowser.Entry.Properties("Cognome").Value)
'mi sposto avanti di un record
If ObjQueueBrowser.MoreResults = True Then
ObjQueueBrowser.MoveNext()
End IfNext
Catch ex As Exception
Dim ObjErrorManager As New IDMError.ErrorManagerDim 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 erroriFor Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
End Try
End Sub
C#
private void CaricaDati()
{
try
{
//flag per l'accesso al sistema di filenet
ObjQueueQuery.CheckUser = false;
//Indica i valori delle codeObjQueueQuery.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 queryIDMObjects.QueueBrowseSet ObjQueueBrowser = new IDMObjects.QueueBrowseSet();
ObjQueueBrowser = ObjQueueQuery.Browse();
for (int intconta = 1; intconta <= ObjQueueBrowser.RecordCount; intconta++)
{
lstNome.Items.Add(ObjQueueBrowser.Entry.Properties[
"Nome"].Value);
lstCognome.Items.Add(ObjQueueBrowser.Entry.Properties[
"Cognome"].Value);
//verifico la fineif (ObjQueueBrowser.MoreResults == true)
{
ObjQueueBrowser.MoveNext();
}
}
}
catch (Exception ex)
{
IDMError.ErrorManager ObjErrorManager =
new IDMError.ErrorManager();
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano erroriif (ObjErrorManager.Errors.Count > 0)
{
ObjErrori = ObjErrorManager.Errors;
//ciclo per tutti gli erroriforeach (IDMError.Error objErrore in ObjErrori)
{
StrTestoErrore = objErrore.Description;
}
}
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 recordDim ObjQueueBrowser As New IDMObjects.QueueBrowseSet
ObjQueueBrowser = ObjQueueQuery.Browse()
Dim ObjErrorManager As New IDMError.ErrorManager
Dim ObjErrori As IDMError.Errors
Dim 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 IfDim ObjQueueEntry As New IDMObjects.QueueEntry
ObjQueueEntry = ObjQueueBrowser.Entry
ObjQueueEntry.MakeReadWrite()
ObjQueueEntry.Delete()
CaricaDati()
Catch ex As Exception
Dim ObjErrorManager As New IDMError.ErrorManagerDim 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 erroriFor Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
End Try
C#
try
{
ObjQueueQuery = ObjQueue.CreateQuerySpecification();
ObjQueueQuery.Filters[
"Cognome"].Value = lstCognome.Text ;
//verifico se ho trovato il recordIDMObjects.QueueBrowseSet ObjQueueBrowser = new IDMObjects.QueueBrowseSet();
ObjQueueBrowser = ObjQueueQuery.Browse();
IDMError.ErrorManager ObjErrorManager = new IDMError.ErrorManager();
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
//se la ricerca ha esito negativo ossia no trova nulla restituisce il seguente numero di erroreif (ObjErrorManager.Errors.Count > 0)
{
ObjErrori = ObjErrorManager.Errors ;
foreach (IDMError.Error ObjErrore in ObjErrori)
{
if ( ObjErrore.Number == -2147208689)
{
MessageBox.Show("Attenzione il record non esiste", "FileNet", MessageBoxButtons.OK, MessageBoxIcon.Information);return ;
}
StrTestoErrore = ObjErrore.Description;
}
}
IDMObjects.QueueEntry ObjQueueEntry = new IDMObjects.QueueEntry();
ObjQueueEntry = ObjQueueBrowser.Entry;
ObjQueueEntry.MakeReadWrite();
ObjQueueEntry.Delete();
CaricaDati();
}
catch (Exception ex)
{
IDMError.ErrorManager ObjErrorManager =
new IDMError.ErrorManager();
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano erroriif (ObjErrorManager.Errors.Count > 0)
{
ObjErrori = ObjErrorManager.Errors;
//ciclo per tutti gli erroriforeach (IDMError.Error objErrore in ObjErrori)
{
StrTestoErrore = objErrore.Description;
}
}
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 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)