Emanuele Mattei

Il blog di Emanuele Mattei.....il suo diario :-)

Blog Amici

Compact Framework

Web e win application

Siti Gratuiti

Siti Vari

Tools per .Net

Chi sono

elenco siti

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()

'inizializzo

ObjQueue = New IDMObjects.Queue

ObjQueueQuery = New IDMObjects.QueueQuerySpecification

'imposto la classe

ObjQueue = 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 classe

ObjQueue = (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 query

Dim 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 If

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

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 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 = 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 fine

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

}

 

 

}

 

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

Dim 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 If

Dim ObjQueueEntry As New IDMObjects.QueueEntry

ObjQueueEntry = ObjQueueBrowser.Entry

ObjQueueEntry.MakeReadWrite()

ObjQueueEntry.Delete()

CaricaDati()

 

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

 

C#

try

{

ObjQueueQuery = ObjQueue.CreateQuerySpecification();

ObjQueueQuery.Filters[
"Cognome"].Value = lstCognome.Text ;

//verifico se ho trovato il record

IDMObjects.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 errore

if (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 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 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)

Posted: dic 03 2007, 10:45 by emanuelem | with no comments
Filed under: