venerdì 23 marzo 2007

Download Microsoft SQL Server 2005 Mobile Edition Device SDK

Da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=5bd8abaa-5813-4db3-b23a-24551de2ecc1&DisplayLang=en è disponibile un nuovo aggiornamento per la programmazione mobile. In particolare si può scaricare SDK di Sql Server 2005 Mobile.

Software per i centralini telefonici


Dal sito Devspy è stata fatta una simpatica segnalazione http://www.devspy.com/public/viewer/show.aspx?guid=194 un software per la gestione dei centralini telefonici, i primi 100.000 che faranno richiesta di tale software, potranno usufruirlo gratuitamente.


Davvero una simpatica iniziativa.


Per maggiori informazioni e sottoscrizione, visitate il sito ufficiale http://www.3cx.it/


Che dirvi... buona coversazione :-))))))

martedì 20 marzo 2007

Filenet visualizzare un documento di filenet tramite Visual basic net e C#

Articolo: Visualizzare un documento di Filenet con Visual Basic Net e C#



Figura 1


Introduzione


In questo articolo, vedremo come visualizzare un documento, inserito in filenet, in una nostra applicazione windows, tramite la tecnologia .net, i linguaggi che utilizzeremo sono Visual Basic Net e C#.


Tramite i controlli messi a disposizione da filenet, ed in particolare del controllo Filenet Panagon IDM VIEW Control, possiamo visualizzare in una nostra applicazione per windows, i file (immagini, .doc, ecc) inseriti in filenet. Tale controllo, permette una visualizzazione di tale file all'interno del controllo, come mostrato in figura 1.


Inserimento del controllo nella barra degli strumenti.


Continuando dal progetto sviluppato nell'articolo precedente, si crea una form, il cui compito è quello di aprire (tramite appositi pulsanti) altre finestre. Dopo aver creato tale finestra, si aggiunge al progetto una nuova form, la quale avrà il compito di visualizzare i documenti. Aggiungiamo al progetto il controllo Filenet Panagon Idm View control, tramite il tasto destro del mouse, sulla barra degli strumenti, selezioniamo dal menu di scelta rapida, la voce aggiungi controllo. Verrà aperta una finestra, contenente i controlli installati sul pc, da questa finestra selezioniamo il controllo Filenet Panagon IDM VIew control, come mostrato in figura 2.



Figura 2


Dopo aver selezionato tale voce, mettiamo una spunta a tale controllo, e chiudiamo la finestra tramite il pulsante ok, in questo modo verrà visualizzato il controllo nella barra degli strumenti, come mostrato in figura 3.



Figura 3


Creazione della finestra per la visualizzazione del documento.


Si crea una finestra, nella quale saranno visualizzati i documenti, la finestra avrà una lista dei nomi (corrispondenti al codice id, impostato da filenet) ed il controllo idm view di filenet, per la visualizzazione dei documenti. Inseriamo nella finestra, due controlli label, un pulsante, un controllo listbox ed infine il controllo filenet idm viewer, inserito precedentemente, la finestra dovrà avere un aspetto simile alla figura 1.


Inseriamo lo spazio dei nomi, per la gestione dei database generali, oledb. Di seguito si riporta tale codice:


Vb.Net


Imports System.Data.OleDb


C#


using System.Data.OleDb;



Si dichiara a livello generale della form, un oggetto di tipo idmlibrary per la gestione delle librerie


Vb.Net


Private objLibrary As New IDMObjects.Library


C#


//oggetto libreria


IDMObjects.Library ObjLibrary = new IDMObjects.Library();


Siccome l'oggetto library, è quel oggetto per le gestione dei documenti che in precedenza abbiamo utilizzato tramite il metodo logon per effettuare il login, quindi l'autenticazione a filenet, dobbiamo utilizzare l'istanza di quell'oggetto, per gestire i vari documenti nella nostra form, a tal fine si crea un nuovo costruttore, che accetta come parametro un oggetto di tipo library.


Di seguito si riporta un frammento di codice.


Vb.Net


Sub New(ByVal libreria As IDMObjects.Library)


InitializeComponent()


objLibrary = libreria


End Sub


C#


public FrmVisualizzaDocumento(IDMObjects.Library libreria)


{


InitializeComponent();


ObjLibrary = libreria;


}


Caricamento dei nomi dei file


Nell'evento load della form, carichiamo nel controllo lista tutti i nomi dei documenti inseriti in filenet, in particolare, per rilevare tali nomi, dobbiamo effettuare una query, nel provider di filenet, tale query è diversa se utilizziamo la versione IS (Image Services) o CS (content Services) perchè i nomi dei campi della tabella sono differenti. La query che andremo ad eseguire, avrà il compito di restituire tutti quei nomi dei documenti, in cui hanno il campo classe documentale impostato secondo un nostro valore (Es. "classeTest"). Le Classi che utilizzeremo sono le seguenti:


Oledbconnection per la connessione al database, oledbcommand (occorre lavorare in modalità connessa) per effettuare le query, un oledbdatareader per il rilevamento dei dati trovati. Infine utilizzeremo le classi messi a disposizione da filenet per la gestione degli errori. Di seguito si riporta il codice, da inserire nell'evento load della form.


Vb.Net


'carico i dati nella listbox


Dim ConDati As OleDbConnection


Dim DtaDati As OleDbDataAdapter


Try


' Query per la versione IS



' Dim StrSql As String = "Select F_DOCNUMBER, F_DOCCLASSNAME,F_ENTRYDATE from FnDocument where F_DOCCLASSNAME='Fatture' order by F_DOCNUMBER,F_ENTRYDATE"


'Queri per la versione CS


Dim StrSql As String = "Select idmId , idmName,idmDateAdded from FnDocument where idmDocType ='ClasseTest' order by idmId,idmDateAdded "


Dim StrConnessione As String = "provider=FnDBProvider;data source=" _


& objLibrary.Name _


& ";Prompt=4;SystemType=" & objLibrary.SystemType _



& ";user id=Admin;password=MiaPassword;LogonID=" & objLibrary.LogonId & ";"


ConDati = New OleDbConnection(StrConnessione)


ConDati.Open()


'Effettuo la query


Dim oledbcommand As New OleDbCommand(StrSql, ConDati)


'Rilevo i dati



Dim oledbReader As OleDbDataReader = oledbcommand.ExecuteReader()


oledbReader.Read()


ListBox1.Items.Add(oledbReader(0).ToString())


'valorizzo la lista



While oledbReader.Read()



ListBox1.Items.Add(oledbReader(0).ToString())


End While


'Eccezione



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)


Finally


'chiudo i vari oggetti


DtaDati = Nothing


dtsDati = Nothing


If ConDati.State = ConnectionState.Open Then ConDati.Close()



ConDati = Nothing


End Try



C#


try


{



//DA UTILIZZARE SOLO PER IS - string StrSql = "Select F_DOCNUMBER,F_DOCCLASSNAME,F_ENTRYDATE from FnDocument where F_DOCCLASSNAME='ClasseTest' order by F_DOCNUMBER,F_ENTRYDATE" ;


//Query da utilizzare per la versione CS


string StrSql = "Select idmId , idmName,idmDateAdded from FnDocument where idmDocType ='ClasseTest' order by idmId,idmDateAdded" ;



string StrConnessione = "provider=FnDBProvider;data source=" + ObjLibrary.Name + ";Prompt=4;SystemType=" + (int)ObjLibrary.SystemType +


";user id=Admin;password=MiaPassword;LogonID=" + ObjLibrary.LogonId + ";";


OleDbConnection ConDati = new OleDbConnection (StrConnessione);


ConDati.Open();


//Eseguo la query


OleDbCommand oledbcommand = new OleDbCommand(StrSql, ConDati);


//Ricavo i dati


OleDbDataReader oledbReader = oledbcommand.ExecuteReader();


oledbReader.Read();


ListBox1.Items.Add(oledbReader[0].ToString());


//valorizzo la lista


while (oledbReader.Read())


{




ListBox1.Items.Add(oledbReader[0].ToString());


}


}


catch (Exception ex)



{


//Gestione dell'eccezioni tramite classe di filenet


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


}


Visualizzare un documento


In questa parte viene descritto come visualizzare nel controllo di filenet, un documento, in particolare quando selezioniamo dalla lista, il nome del documento, verrà visualizzato nel controllo idm view il file selezionato. Utilizzeremo un oggetto di tipo document, il quale tramite la proprietà Id, ci fornirà l'identificativo univoco che filenet assegna ai file, con questo valore, impostiamo la proprietà DocumentId del controllo IDM View, e tramite il metodo refresh aggiorniamo il controllo con il documento selezionato.


Il codice riportato qui di seguito va inserito nell'evento SelectedIndexChanged della listbox, inserita precedemente.


Vb.Net


'oggetto per la visualizzazione


Dim ObjDocument As IDMObjects.Document


Try


'ottengo l'oggetto documento del nome selezionato nella lista


ObjDocument = objLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeDocument, ListBox1.SelectedItem.ToString())


'"pulisco" l'immagine precedente


AxIDMViewerCtrl1.Clear()


AxIDMViewerCtrl1.DocumentID = ObjDocument.ID


AxIDMViewerCtrl1.Refresh()



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)


Finally



ObjDocument = Nothing


End Try



C#


try


{


//oggetto per la visualizzazione



IDMObjects.Document ObjDocument;


//ottengo l'oggetto documento selezionato nella lista


ObjDocument = (IDMObjects.Document) ObjLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeDocument, ListBox1.SelectedItem, null,null,null);


//"pulisco" l'immagine precedente


axIDMViewerCtrl1.Clear();


axIDMViewerCtrl1.DocumentID = ObjDocument.ID;


axIDMViewerCtrl1.Refresh();


}



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


}



Chiusura della form


Per concludere, quando si chiude la finestra, prima di eliminare gli oggetti in memoria, dobbiamo chiudere la connessione a filenet, questo avviene tramite il metodo logoff, verificando che la connessione è ancora attiva. Queste operazioni vanno effettuate nell'evento closing della form. Di seguito si riporta un esempo di codice:


Vb.Net


Try



If objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) = True Then



'chiudo la connessione


objLibrary.Logoff()


End If


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)


Finally


'distruggo l'oggetto


objLibrary = Nothing


End Try



C#


try



{


if (objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) = True )


{



//chiudo la connessione


ObjLibrary.Logoff();


}



}


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


}


finally


{



//distruggo l'oggetto


ObjLibrary = null;


}



Conclusioni


In questo articolo, si è visto come visualizzare un documento tramite un apposito controllo di filenet, da notare che non tutti i file possono essere visualizzati in quel controllo per esempio quelli in formato .zip, o altri tipi. Tramite la parola download è possibile effettuare il donwload dell'esempio utilizzato in questo articolo.


Download esempio


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

domenica 18 marzo 2007

Motore di ricerca per blog

Vi segnalo questo simpatico motore di ricerca http://www.google.it/blogsearch?hl=it in partica effettua delle ricerche nei blog. Visto il numero di blog e la qualità, uno strumento che può tornare utile.
Che dirvi... buona ricerca.

Office on line

Vi segnalo questi interessanti siti. In particolare la possibilità di utilizzare office o meglio alcuni programmi di video scrittura (tipo word) e foglio di calcolo (tipo excel) dal web, senza installare nulla.
Per maggiori informazioni ed utilizzo vedete il seguente sito.
http://www.thinkfree.com/common/main.tfo
http://docs.google.com/?hl=it

sabato 17 marzo 2007

Come effettuare il login in Filenet tramite Visual Basic Net e C#


Articolo Filenet. Come effettuare l'autenticazione (login)
tramite il metodo logon in Filenet, tramite la tecnologia .net(
Visual Basic Net e C#.)


Introduzione:


In questo articolo
introduttivo alla programmazione, si vedrà come utilizzare le
operazioni più comuni di filenet con la tecnologia .Net 2.0 ossia
con Visual Studio 2005. Tale articolo si può applicare sia alla
versione di filenet Content Services 52 e sia per la versione
Content Services 53 ed idmdesktop versione 3.2.A. In particolare
vedremo in questa serie di articoli, come creare un applicazione
che avrà il compito di effettuare le operazioni più comuni, quali,
il login, inserimento, modifica eliminazione e visualizzazione dei
documenti e delle code. Questo articolo, illustra la tecnica per
effettuare l'autenticazione a Filenet, nei successivi articoli,
tutti dedicati alla programmazione, vedremo le operazione che si
possono effettuare sul programma Filenet. In ogni articoli si potrà
scaricare il file di esempio utilizzato.


Aggiunta di
riferimento


Si crea un nuovo
progetto di tipo windows application, utilizzando il linguaggio
(Visual Basic.Net o C#) con cui avete più famigliarità.


Per la gestione di
Filenet, occorre referenziare (figura 1) nel progetto le dll
panagon, in particolare IDM Objects 3.2. (il numero è riferito alla
versione installato, per tanto può cambiare da pc a pc) la quale
permette la gestione delle librerie, classi, documenti ecc. Da
notare che la libreria idm error object 3.2 permette la gestione
degli errori e buona norma aggiungere anch’essa. Per aggiungere un
riferimento al progetto, andate nel menu progetto e selezionate la
voce aggiungi riferimento, a questo punto verrà aperta una finestra,
selezionate la pagine con la scritta “COM”.




Figura 1


Chiudiamo le
finestre tramite il pulsante ok, in questo modo, si conferma la
scelta di inserire nel nostro progetto i componenti panagon per la
gestione di filenet.


Dopo aver aggiunto
al progetto i riferimenti a Filenet, non ci resta che creare la
nostra applicazione, si crea una finestra di login , la quale
permette di accedere al nostro programma e di conseguenza a filenet.
Inseriamo nella form, due caselle di testo (una per username e
l’altra per la password) una casella combinata, la quale elenca
tutte le librerie installate e due pulsanti, uno per il login è
l’altro per la chiusura del programma.


La finestra dev’essere simile a quella
illustrato qui di seguito (figura 2).



Figura 2


Caricamento delle librerie


Quando si devono fare delle operazioni sui
documenti, quali ricerca, inserimento, cancellazione, ecc, ci si
deve loggare, ossia si deve avere accesso al sistema filenet, per
far ciò, dobbiamo ricorrere al metodo logon.


Quando la form, viene avviata, dobbiamo
caricare nella casella combinata, tutte le librerie che sono incluse
in filenet, in ogni libreria, possiamo trovare cartelle e documenti.
La form di login, avrà il compito di fare il login nella libreria
selezionata dall'utente in cui vuole effettuare le operazione sui
documenti.


Per rilevare i nomi delle librerie, dobbiamo
utilizzare l'oggetto Neighborhood il quale è utilizzato per
la gestione dell’insieme delle librerie.


Mentre per la gestione delle librerie, dobbiamo
utilizzare l'oggetto Library il quale effettua operazione sui
documenti e cartelle di ogni libreria. Infine utilizziamo nel
progetto anche l'oggetto ErrorManager il quale permette la
gestione degli errori.


Si crea nella form, tre oggetti, del tipo
precedentemente illustrato. Il codice dev'essere simile a quello
riportato qui di seguito.


Vb.Net




Private
objLibrary
As
New
IDMObjects.Library


Private
objNeighborhood
As
New
IDMObjects.Neighborhood


Private
objErrorManager
As
New
IDMError.ErrorManager

C#




//oggetto neighborhhod


private
IDMObjects.Neighborhood objNeighborhood =

new
IDMObjects.Neighborhood();


//oggetto library


private
IDMObjects.Library ObjLibrary =

new
IDMObjects.Library();


//oggetto error


private
IDMError.ErrorManager ObjErrorManager =

new
IDMError.ErrorManager();

Mentre per il rilevamente delle libreria
installate, il codice da inserire nell'evento load della form,
dev'essere simile a quello riportato qui di seguito.


Vb.Net



'gestione dell'errore




Dim
ObjErrori
As
IDMError.Errors


Dim
dttLibreria
As
New
DataTable(
"Dati")


Dim
dtcNomeLibreria
As
New
DataColumn(
"Libreria")


Dim
dtcNomeCompleto
As
New
DataColumn(
"NomeCompleto")


Dim
dtrRiga
As
DataRow


'riempio la combo con le varie
librerie di filenet


Dim
oblLibreria
As
New
IDMObjects.Library


Try


'inserisco le colonne

dttLibreria.Columns.Add(dtcNomeLibreria)


dttLibreria.Columns.Add(dtcNomeCompleto)



For
Each
objLibrary
In
objNeighborhood.Libraries

dtrRiga = dttLibreria.NewRow()


dtrRiga(0) = objLibrary.Label.ToString()


dtrRiga(1) = objLibrary.Name.ToString()


dttLibreria.Rows.Add(dtrRiga)




Next

cmbLibreria.DisplayMember =


"Libreria"

cmbLibreria.ValueMember =


"NomeCompleto"

cmbLibreria.DataSource = dttLibreria



'imposto il primo valore


If
cmbLibreria.Items.Count > 0

Then

cmbLibreria.SelectedIndex = 0



End
If


Catch
ex
As
Exception


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 = StrTestoErrore & objErrore.Description




Next


Else

StrTestoErrore = ex.Message



End
If

MsgBox(StrTestoErrore)


objErrore =


Nothing


Finally

objErrorManager =


Nothing


End
Try


C#




this.Cursor
=
Cursors.WaitCursor;


//gestione dell'errore


//riempio la combo con le
varie librerie di filenet


try

{



DataTable
dttLibreria =
new
DataTable("Dati");


DataColumn
dtcNomeLibreria =
new
DataColumn("Libreria");


DataColumn
dtcNomeCompleto =
new
DataColumn("NomeCompleto");


DataRow
dtrRiga;

dttLibreria.Columns.Add(dtcNomeLibreria);


dttLibreria.Columns.Add(dtcNomeCompleto);




foreach
(IDMObjects.Library ObjLibrary

in
objNeighborhood.Libraries)

{



dtrRiga = dttLibreria.NewRow();


dtrRiga[0] = ObjLibrary.Label.ToString();


dtrRiga[1] = ObjLibrary.Name.ToString();


dttLibreria.Rows.Add(dtrRiga);




}



cmbLibreria.DisplayMember =



"Libreria";

cmbLibreria.ValueMember =


"NomeCompleto";

cmbLibreria.DataSource = dttLibreria;



//imposto il primo valore


if
(cmbLibreria.Items.Count > 0)

cmbLibreria.SelectedIndex = 0;



}



catch (Exception
ex)

{



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

}



finally

{





this.Cursor
=
Cursors.Default;

}




Nell’evento load
della form login, viene riempita la casella combinata, con i nomi
delle libreria,, per conoscere il nome delle librerie si utilizza la
proprietà label dell’oggetto library, mentre la
proprietà name ci ritorna il nome completo. Come si vede dal codice,
tramite un ciclo otteniamo il valore di tutte le libreria, tramite
la proprietà Libraries dell l'oggetto
Neighborhood .


Il login,
tramite il metodo logon della classe library.


Una volta che
l'utente a selezionato il nome della libreria ed impostato il nome
utente e password, tramite il pulsante Entra, deve effettuare il
login. Va ricordato che il testo per i nomi utenti e le password,
sono differenti tra le lettere minuscole e maiuscole, quindi fare
molta attenzione nel digitare . Tramite il metodo GetState
con il parametro IDMObjects.idmLibraryState.idmLibraryLoggedOn
dell'oggetto library, permette di verificare se il login è stato
effettuato o no. Se qualora abbiamo una transizione aperta,
effettuiamo il login, senza username e password, altrimenti
inseriamo tali valori. Il metodo per fare il login è Logon il quale
accetta diversi valori, quali, nome utente, password, e parametro
per visualizzare o no a video la maschera di filenet.


Prima di utilizzare
il metogo logon, impostare alcune proprietà, quale, il nome della
libreria, tramite la proprietà Name, ed il tipo di sistema di
accesso (ds o is) . Di seguito si riporta il codice da inserire
nell'evento click del pulsante entra.


Vb.Net




Try





Me.Cursor
= Cursors.WaitCursor


'effettuo il login



'objLibrary.SessionManager =
objSessionManager

objLibrary.Name = cmbLibreria.SelectedValue.ToString()


objLibrary.SystemType = IDMObjects.idmSysTypeOptions.idmSysTypeDS



''variabile booleana che
indica il login effettuato


Dim
blnLoggato
As
Boolean


If
objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn) =
True
Then



'effettuo il login senza
utilizzare le credenzialità

blnLoggato = objLibrary.Logon(


"",
"", ,
IDMObjects.idmLibraryLogon.idmLogonOptNoUI)


Else

blnLoggato = objLibrary.Logon(txtutente.Text,
txtpassword.Text, , IDMObjects.idmLibraryLogon.idmLogonOptNoUI)




End
If


'eventualmente verifare di
nuovo lo stato tramite getfiles


If
objLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn)
Then



'avvio la form principale
'dalle form successive fare il logoof


Dim
FrmPrincipale
As
New
FrmPrincipale(objLibrary, objNeighborhood)

FrmPrincipale.ShowDialog()



Else

MsgBox(



"Errore di login",
MsgBoxStyle.Information,

"Filenet"
)


End
If






Catch ex
As
Exception



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)



Finally


'riporto il cursore allo stato
iniziale


Me.Cursor
= Cursors.Default


End
Try

C#




//effettuo il login





try

{





ObjLibrary.Name = cmbLibreria.SelectedValue.ToString();


ObjLibrary.SystemType =
IDMObjects.idmSysTypeOptions.idmSysTypeDS;





//variabile booleana che
indica il login effettuato


Boolean
blnLoggato;


if
(ObjLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn)
==
true
)

{



blnLoggato = ObjLibrary.Logon(



"","","",
IDMObjects.idmLibraryLogon.idmLogonOptNoUI);

}



else

{



blnLoggato = ObjLibrary.Logon(txtutente.Text,
txtpassword.Text,



"",
IDMObjects.idmLibraryLogon.idmLogonOptNoUI);

}



//eventualmente verifare di
nuovo lo stato tramite getfiles


if (
ObjLibrary.GetState(IDMObjects.idmLibraryState.idmLibraryLoggedOn)
==
true
)

{





FrmPrincipale
frmprincipale =
new
FrmPrincipale(ObjLibrary,
objNeighborhood);

frmprincipale.Show();


}



else

{





MessageBox.Show("Errore
di login"
,
"Filenet");

}


}






catch (Exception
ex)

{


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



}




finally

{





this.Cursor
=
Cursors.Default;

}




Conclusioni:


In questo articolo,
si è visto come effettuare il login, una fase molto importante e che
comunque viene sempre applicata, qualora si deve interagire con
filenet. Tramite la parola donwload è possibile scaricare il file di
esempio, utilizzato in questo articolo




Download esempio


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

La programmazione di Filenet - Le clasi per la gestione documentale



Articolo: La programmazione di Filenet - le classi per la
gestione documentale.


Introduzione:


Di seguito si riportano gli oggetti, le proprietà ed i metodi
frequentemente utilizzati nella programmazione con filenet.


Per la gestione dei file


Classe Neighborhood:


Oggetto: Neighborhood:
Gestisce tutte le librerie installate sulla workstation, per esempio
indica qual’è la libreria di default. Da notare che ogni client è
configurata in modo da avere una o più librerie.




Proprietà
:
library: Visualizza i nomi delle librerie installate
sulla workstation.


Classe
Library:


Oggetto: Library: E’
l’oggetto che contiene i vari documenti, essi vengono memorizzati
nel database FileNet.


Proprietà: Label: La proprietà
label restituisce il nome delle librerie.



Proprietà: SystemType: Identifica il tipo di sistema
della libreria in cui si sta lavorando. Il tipo in cui è formato
tale oggetto.



Proprietà: Name: Permette di impostare o ricavare il
nome della libreria



Metodo: GetState: Il metodo GetState restituisce un
valore booleana in riferimento allo stato di connessione sulla
propria macchiana (utenza) con il database filenet.

Esso è seguito da una costante, per esempio per sapere se siamo già
loggati bisogna usare la constante idmLibraryLoggedOn la quale
restituisce true se siamo già connessi altrimenti false.



Metodo: Logon: Il metodo Logon, permette di
autenticarsi passandogli come valore il nome utente, e la password
inoltre tramite la idmLogonOptNoUI vietiamo al sistema fileNet di
visualizzare la maschera di login, se invece la vogliamo
visualizzare useremo la constante, idmLogonOptWithUI.





Metodo: GetObject Il metodo restituisce un singolo
oggetto a secondo il tipo di creazione.

se viene utilizzata la costante idmObjTypeDocument seguita dal
numero id del file questa ritorna un oggetto documento di quell’id.

SE è utilizzata la queue restituisce una coda.


Classe
Document:


Oggetto: Document: Quest’oggetto ha il compito di
manipolare gli oggetti (documenti) che si trovano o si creano nel
database FileNet.



Proprietà: Properties: (Nome_Campo) Questa proprietà
settandola con il nome del campo che si vuole gestire, restituisce
un insieme di proprietà di quel campo, come per esempio value ossia
il valore. Essa serve anche per assegnare un valore al documento che
si sta creando.



Metodo:CreateObject: (Tipo di oggetto, Classe). Questo
metodo crea un nuovo oggetto, inserendo un valore per tipo di
oggetto, ossia che oggetto si vuole creare per esempio document, è
la classe dove creare questo oggetto.



Metodo: SaveNew: (nome_Files). Il metodo SaveNew salva
uno o più file nel database fileNEt. Come valore si può passare un
array dei file o un solo file, naturalmente indicando il percorso e
nome del file.


Per la gestione delle code:


Classe Queue:


Oggetto: QUEUE: Quest’oggetto ha il compito di
registrare e visualizzare i dati che si vogliono salvare sul
database FileNet.


Oggetto: QueueQuerySpecification. L’oggetto
QueueQuerySpecification ha il compito di effettuare delle ricerche
secondo i parametri che vengono indicati.



Proprietà. CheckUser:( true/false) La proprietà
checkuser ha il compito di restituire o impostare un flag per
l’accesso di sicurezza al sistema FileNEt nel user/group. Impostato.



Proprietà: EvenIfDelayed (true/false) Questa proprietà
restituisce o imposta un flag per ricavare le informazioni
sull’inserimento delle varie queue ossia code.



Proprietà: Incomplete (Costanti)Questa proprietà
restituisce o imposta un valore in base allo stato della ricerca, i
valori che si possono impostare sono:


idmIncompleteNotOK = non ritorna nessuna coda se c’è qualche
entrys incompleto



idmIncompleteOK = ritorna tutti entry



idmIncompleteOnly = ritorna solo gli entry incompleti



Proprietà: Status: (Costanti) Questa proprietà
restituisce gli entry in base allo stato ossia se sono bloccati
(lock) o No.

I valori sono:



idmBusyNotOK = Restituisce solo i entry non bloccati (lock)



idmBusyOK = Restituisce tutti gli entry anche se sono bloccati



idmBusyOnly = Restituisce gli entry bloccati.



Classe QueueEntry:


Oggetto: QueueEntry: L’oggetto QueueEntry permette
l’inserimento di nuove code.



Proprietà: Value: Assegna o restituisce un valore alla
proprietà della coda.



Metodo:Insert: Inserisce una nuova coda.


Classe
QueueBrowseSet
:


Oggetto: QueueBrowseSet: l’oggetto QueueBrowseSet
contiene i risultati della ricerca.



Proprietà: RecordCount: Restituisce il numero totale
del risultato della query effettuata.



Proprietà: Entry: Restituisce una riga dell’oggetto
queuentry, in particolare, della coda



Proprietà: Properties: Contiene un insieme di
proprietà dell’oggetto queuentry



Proprietà: value: Restituisce o imposta il valore
della proprietà.



Proprietà: Filters:(Nome_Campo) : restituisce uno o
più valori qualora la condizione di ricerca sia valida.


Conclusioni


Lo scopo di questo articolo è quello di introdurre il lettore
alla conoscenza delle classi, metodi e proprietà messe a
disposizione da filenet per la gestione documentale.


Nel prossimo articolo vedremo come utilizzare tali classi, nella
gestione dei documenti.


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

Installare Filenet Image Services 4.0



Articolo: Installazione di FileNet Image Services 4.0


Introduzione


In questo articolo vedremo come installare Filenet Image services
4.0 (IS 4.0) con un database sql server installato su un server
diverso da quello in cui viene installato il servizio di Filenet.


Requisiti


Il software va installato su un server dotato di sistema
operativo Windows 2000 server o windows 2003 server. Va ricordato
che sul sistema operativo operativo Windows 2003, dev’essere
instalalto il service pack 1 , mentre per la versione 2000 il
service pack 4. Il server deve avere un indirizzio Ip-statico ed il
client di sql server 2000 con la service pack 4.0. L’installazione
deve esere effettuata con una utenza amministrativa. Se effettuata
da remoto, la sessione deve essere eseguito con l’opzione /console.


Architettura di riferimento


Di seguito si riporta in forma grafica,L'achitettura di
installazione del servizio FileNet .

Il servizio Image Services 4.0 si trova su un server differente
dalla macchina in cui è installato Sql server 2000 . Di seguito
riportiamo una rappresentazione grafica dell'architettura di
installazione, nella parte destra, si trova il server per il
servizio Filenet mentre in quello di sinistra, il server database.



Figura 1


Creazione del database Sql server


Dopo aver verificato i requisiti d’ installazione, ed aver
configurato il Server, procedere alla creazione di un database su
sql server. Il nome del database è a piacere . Nel nostro esempio si
chiamerà IndexDb.

Opzionale:

Aggiungere il file dati: Fnsys_Fg (nome a piacere) ; nel percorso :
…\mssql\data\Fnsys_Fg_data.Ndf nel file group FNSYS_FG.


Verifica utenze


Quando si installa il servizio Image service, il programma tenta
di creare sul server Filenet utenze e gruppi, in particolare le
utenze fnsw e ORACLE. Tali utenze hanno come password il rispettivo
nome utenza. Se le policy dell’azienda non permette la password di
questo tipo (per esempio la password dev’essere composta da
maiuscole e caratteri alfanumerici) verrà visualizzato un messaggio
di errore durante il setup (user oracle…) e la procedura di
installazione verrà interrotta e le utenze e i gruppi mancanti
dovranno essere creati manualmente (con password arbitraria
preferibilmente non soggetta a scadenza).



Di seguito si riportano le utenze e gruppi da creare sul server.

Le utenze da creare sono: fnsw e ORACLE, e devono far parte dei
gruppi sotto elencati e del gruppo Administrators.



Gruppi:



DBA

FNADMIN

FNOP

FNUSER

ORA_DBA



Utenti:

fnsw

ORACLE


A questo punto, dopo aver creato l'utenze, bisogna fare il login
sul server, con l'utenza fnsw.


Installazione IS 4.0


Prima di procedere all’installazione di FileNet Image Services,
autenticarsi sul Server, con l’utenza di filenet (FNSW) .

Eseguire il setup di installazione, se non parte automaticamente
lanciare nuovamente setup.exe.

La prima schermata (figura 2) chiede il percorso degli eseguibili
(FNSW) ed il percorso dei file di configurazione (FNSW_LOC).

Non cambiare le folders preimpostate.

Ignoare il pulsante Addition Datasets.




Figura 2


La prima casella indica il percorso in cui risiederà il servizio
di IS 4.0,mentre la seconda casella, quella con l’etichetta IS
Shared Files, indica la cartella in cui saranno salvati i file di
configurazione.

Durante l’installazione verrà richiesto se effettuare una
installazione combined( si intende combined una installazione in cui
il Permament il Transient, Security e la Cache risiedono sullo
stesso server).

(figura 3) digitare il pulsante yes, se risiede tutto sullo
stesso server.


figura 3


L’ultima finestra (figura 4) ci chiede di impostare il SSN
(system serial Number) e NCH Domain Name.

Nel SSN, va inserito un valore numerico, composto da 10 numeri, di
cui i primi 4 devono sempre iniziare per 1100 gli altri 6 sono il
SID (Site Identification--Cenci). Non deve essere mai duplicato
nella stessa rete.



La casella NCH DOMAIN NAME deve essere composta da due stringhe
separate dai due punti (:)

Es.: MioTesto:FileNet la prima stringa è un valore che siamo noi a
decidere è preferibile che non superi gli otto (8) caratteri e che
non contenga caratteri speciali, mentre la seconda stringa è fissa
con il seguente valore : FileNet .

Per i restanti parametri lasciare i valori impostati



Figura 4


Alla richiesta di Licence, selezionare il file UISSQL.Key (nel
caso SQL senza Visual Work...)sotto la folder SLAC del CD di
installazione.


PreConfigurazione del Server IS

In caso in cui il database server è differente dal server filenet
(scenario 1), e non si disponga delle utenze di dominio FNSW, ORACLE
effettuare le seguenti configurazioni:

creare o modificare la seguente chiave di registro tipo String
Value:
/HKEY_LOCAL_MACHINE/SOFTWARE/FileNet/IMS/CurrentVersion/MSSQL_OS_AUTH


Il valore da impostare a tale chiave dev’esser OFF.

Inoltre va creato in windows, una variabile di ambiente (Proprietà
di risorse di computer->avanzate->variabili d’ambiente) essa va
chiamata:

MSSQL_SA_PW

Deve contenere il valore della password dell’utente SA di Sql
Server.

Di seguito si riporta la dicitura del manuale di installazione di
Image Services 4.0.



The fn_mssql.exe tool uses OS Authentication conditionally, based on

the registry information. The fn_mssql.exe tool looks for the
following

registry entry:

/HKEY_LOCAL_MACHINE/SOFTWARE/FileNet/IMS/

CurrentVersion/MSSQL_OS_AUTH

If the registry value does not exist - or exists and is set to ON -
OS

Authentication is used.

If the registry variable exists and is set to OFF or FALSE, OS

Authentication is turned off and a password is required for isql. If
the

password is not in the MSSQL_SA_PW environment variable, you are

prompted for the password.


Configurazione.

Terminata la fase di installazione, dobbiamo avviare il programma
per la gestione delle impostazioni di Filenet. Tale editor, si avvia
tramite riga di comando (Cmd) digitare il seguente comando
Fn_edit
.

Qualora è la prima volta, verrà visualizzato un wizard.



Enter the base directory vuole la folder di installazione dei
datasets.



Tape Drive :NO



Printer :NO



Configurare la Storage Library: NO


Scheda Services Server Application Services - Cache:

Le prime due colonne non devono eccedere il valore di 90 – 95 %, la
figura 5 mostra una tipica configurazione di sviluppo.

Preferibilmente lasciare le colonne seguenti come di default o
consultare FileNet.




Figura 5


SCHEDA Relational Database - MS-SQL

Impostare il parametro Remote Server Name con il nome del server Sql
Server.

Impostare il parametro Instance Name, con eventuale nome dell’instanza
sql.

Nel dubbio impostare gli altri parametri come mostrato in figura 6



Figura 6


Scheda Relational Database – RDB Objects:

Impostare per il parametro db_Name il nome del database creato in
precedenza (Es.: Indexdb).

Impostare le voci tmp_data, usr_data, fn_data, con il valore del
file group creato in precedenza (es.: fnsys_fg). Figura 7




Figura 7


SCHEDA DATASETS:

Impostare la dimensione dei dataset come opportuno.

Una tipica configurazione di sviluppo.

E’ buona norma dividere i recovery da i datasets.

E’ buona norma separare la Cache.

Limiti per la Cache:

255 x 16 Gb (Cache)

8 x 2 Gb (Permanent)



ATTENZIONE i volumi definiti vengono allocati all’inizializzazione.



Queste configurazioni vanno valutate con FileNet.




figura 8


Chiudere il programma di editor, salvando le impostazioni.


Build della configurazione


Per creare i file di configurazione a partire dal file
C:\fnsw_LOK\sd\IMS.cdb eseguire il seguente comando da dos
(cmd) fn_build –a (all)


Per inizializzare i datasets ed il database eseguire il seguente
comando da dos.



Inizializzazione



Verificare lo stato dei servizi : Solo imsservice deve essere in
stato Started.



Se stesse Stopped eseguire:



net start imsservice (con flag off) -> initfnsw –y stop



Se non parte probabilmente va cambiata la password



fn_util init (il commando comprende la serie di
comandi (fn_util initrdb + fn_util initperm + ....) )

Attenzione è distruttivo e non è recuperabile





Verificare che i percorsi dei dataset listati siano effettivamante
stati creati.

Verificare che il Database sia stato inizializzato.



Se SQL non è stato inizializzato eseguire:



SET MSSQL_SA_PW=<sa password>




E rilanciare:



fn_util initrdb



Verificare che il Database sia stato inizializzato.



Installazione della Service Pack 4

Verificare lo stato dei servizi Filenet: devono essere completamente
stoppati.

initfnsw –y stop

killfnsw –ySD

net stop imsservice




controllare che la folder c:\fnsw\procs sia vuota (contattare
FileNet)



Avviare il setup ed seguire il wizard.

Eventualmente in questa fase è impostabile tramite voce di menu:

Start->Programmi->Filenet->setup il parametro: Autostart IS
Processes

Al termine dell’installazione avviare i servizi con il comando



initfnsw –y start



Per visualizzare il file di Log corrente eseguire il comando da
prompt:



vl –t


Definizioni classi ed indici

Da RUN eseguire il comando xapex.

Effettuare il login, con utenza SysAdmin e password SysAdmin (case
sensitive)

Creare il family, gli indici, le classi documentali e gli utenti
come richiesto dal contesto.


Installazione client IDM Desktop 4.0

Eseguire il setup ed seguire il wizard.

Tramite il configure, creare la libreria per il collegamento ad IS.

Library Name : a piacere

Domain : prima parte del parametro NCH Domain Name

Organization : seconda parte del parametro NCH Domain Name



Figura 9


Per eventuali firewall tra client e IS service verificare che il
client possa risolvere la seguente stringa: Ping --nch-server
tutto in lower case In caso contrario impostare il file HOST o il
DNS in modo da far restituire l’IP del server IS.


Conclusioni:


In questo articolo, si è visto come installare il servizio
Filenet Imaga Services, a differenza del Content Services, richiede
maggiore attenzione e configurazione.



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

Creazione delle custom property e classi documentali in filenet

Articolo: Filenet - Creazione delle custom property e classi
documentali


Introduzione

Per la creazione delle classi documentali, utenti, cartelle, custom
properties, ecc, si deve utilizzare il tools Cs explorer, tale tools
si trova nel cd-rom di filnet admin tools. Esso può essere
installato sia sulla macchina client che server. Va ricordato che la
versione di tale programma dev’essere la stessa del server filenet,
se per esempio, sul server è installato filenet versione 5.2, tale
tools (CS Explorer) dev’essere la versione 5.2.


Utilizzo dell’applicativo.

Quando si avvia tale tools, viene aperta una finestra di login
(Figura 1) , la quale avrà dei campi da valorizzare. Di seguito si
riportano le informazioni di tali campi.





Figura 1


System: Nome del database,
dove risiede la base dati di filenet, questo dato è lo stesso
utilizzato nel programma configure

Server: Nome del pc dove si trova il database Sql Server ( o
altro database)

User Name: Utenza creata durante l’installazione del database
filenet

Password: Password per la relativa utenza (facoltativa)


Creazione delle custom properties:

Prima di creare la classe documentale, occorre eventualmente creare
delle custom properties, esse rappresentano delle proprietà
personalizzate per un documento. Per creare delle custom properties,
selezionare con il mouse la voce “Custom Properties”, situata nella
parte sinistra, nell’albero nelle varie impostazioni. Dopo aver
selezionato tale voce, fare click con il pulsante destro del mouse,
verrà aperto un menu contestuale, selezionare la voce “new custom
prorties…” (Figura 2)





Figura 2


A questo punto verrà aperta una finestra, la
quale permette la creazione delle custom propierts, le caselle di
testo, quelle contrassegnate con le voci in grassetto sono
obbligatorie, mentre quelle con la formattazione normale, non è
obbligatorio la loro compilazione (Figura 3).


Di seguito si riportano alcuni accorgimenti da
prendere nell’impostare tali voci.





Figura 3


Property Name: Nome della custom property (es: Versione )

Property Type: Tipo di proprietà (stringa, intero, in base al
suo utilizzo)

Property Lengh: Lunghezza di tale proprietà (es: Per la
stringa il numero di caratteri ammessi)

Parent Object: Oggetto da cui deriva tale proprietà (item,
version o checkout,) è il nome raccoglitore di un insieme di
proprietà, di cui farà parte la nuova custom property, di solito si
imposta il valore item, vedere nella parte della creazione delle
classe documentali.

Dopo aver creato la proprietà, digitare il pulsante ok, tale nome
verrà riportato nell’elenco delle custom properties.


Creazione della classe documentale

La classe documentale va vista come un contenitore per i documenti
che vengono inseriti in filenet, oltre alle classi documentali che
crea automaticamente filenet, se ne possono creare , personalizzare,
eliminare a proprio piacimento. Per creare una classe documentale,
selezionare la voce di menu “document class…”, situata nel
menu “tools”. Verrà aperta una finestra (finestra 4), in tale
finestra si possono eseguire le varie operazioni (creazione,
modifica, eliminazione) sulle classe documentali.

Nel primo riquadro, situato nella parte sinistra, vengono elencati
le classi documentali esistenti,mentre nella griglia situata al
centro della finestra, vengono elencati le custom property della
classe documentale selezionata.





Figura 4


Per creare una nuova classe
documentale, digitate il pulsante new dc, il quale apre una finestra
(figura 5), che permette di impostare il nome della classe
documentale, e le varie custom property.




Figura 5



Il nome della classe documentale, si imposta tramite la casella
di testo “DocClass Name” mentre per associare le proprietà a tale
classe, selezionare il nome della proprietà nella lista situata
nella parte di sinistra, tramite il pulsante della freccia direzione
destra (->) si può inserire l’elemento desiderato. Va ricordo che le
proprietà possono appartenere o all’oggetto item o version
(impostato nella creazione delle custom properties alla voce object
parent) . Dopo aver scelto la proprietà si può applicare
l’impostazione “requested” richiesto (valore di default: no) per
quella proprietà, obbligando l’utente a scrivere un valore durante
la fase di inserimento del documento.

Dopo aver selezionato le proprietà opportune per la nuova classe
documentale, salvate tale classe, tramite il pulsante add.


Conclusioni


In questo articolo, si è illustrato i passi per la creazione
delle classi documentali e delle relative proprietà, tramite il
programma CS Explorer, si possono creare altri parametri, come
utenza, cartelle, ecc.


Uno strumento che può tornare utile nel personalizzare la propria
gestione documentale.


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