domenica 4 novembre 2007

Recensione libro: Programmare Microsoft Sql Server 2005

Eccomi qua, vi segnalo questa mia recensione del libro: Programmare Microsoft Sql Server
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)

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

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à 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.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 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


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)


giovedì 1 novembre 2007

Segnalazione Tools: Editor Code Snippet per Visual Studio 2005

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.