
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)