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)