domenica 4 novembre 2007
Recensione libro: Programmare Microsoft Sql Server 2005
2005. La potete leggere dal seguente sito http://blog.shareoffice.it/emanuele/archive/2007/11/04/9270.aspx
venerdì 2 novembre 2007
Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net
Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)
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 l'etichette saranno nome e cognome come visto nell'articolo precedente) 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 dobbiamo modificare il costruttore della nostra form, che tramite l'oggetto library utilizzato nella form di login discussa negli articoli precedenti, possiamo istanziare i vari oggetti. Di 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)
'inizializzoInitializeComponent()
ObjQueue =
New IDMObjects.QueueObjQueueQuery =
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){
new IDMObjects.Queue ();InitializeComponent();
ObjQueue =
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 accertarsi 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.
Vb.Net
'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
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
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)
{
new IDMError.ErrorManager();IDMError.ErrorManager ObjErrorManager =
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano errori
if (ObjErrorManager.Errors.Count > 0)
{
//ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors;
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à denominata 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.TextObjQueueEntry(
"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
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
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)
{
new IDMError.ErrorManager();IDMError.ErrorManager ObjErrorManager =
IDMError.Errors ObjErrori;
string StrTestoErrore = "";
IDMError.Error ObjErrore;
//verifico che in filenet ci siano errori
if (ObjErrorManager.Errors.Count > 0)
{
//ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors;
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 per le 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
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)
giovedì 1 novembre 2007
Segnalazione Tools: Editor Code Snippet per Visual Studio 2005
Da questo sito http://www.codeplex.com/CodeSnippetEditor potete scaricare i sorgenti del progetto riguardante l'editor per la creazione e gestione dei CodeSnippet di Visual Studio 2005.
Un ottimo strumento per gestire i frammenti di codice.