venerdì 23 marzo 2007
Download Microsoft SQL Server 2005 Mobile Edition Device SDK
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.OleDbC#
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.LibraryC#
//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
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
For Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
Finally
'chiudo i vari oggetti
DtaDati =
NothingdtsDati =
NothingIf ConDati.State = ConnectionState.Open Then ConDati.Close()
NothingConDati =
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){
//ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors;
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
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
For Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
Finally
NothingObjDocument =
End Try
C#
try
{
//oggetto per la visualizzazione
null,null,null);IDMObjects.Document ObjDocument;
//ottengo l'oggetto documento selezionato nella lista
ObjDocument = (IDMObjects.Document) ObjLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeDocument, ListBox1.SelectedItem,
//"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)
{
//ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors;
foreach (IDMError.Error objErrore in ObjErrori)
{
StrTestoErrore = objErrore.Description;
}
}
else
MessageBox.Show(StrTestoErrore, "FileNet");{
StrTestoErrore = ex.Message;
}
}
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
'ciclo per tutti gli erroriObjErrori = ObjErrorManager.Errors
For Each objErrore In ObjErrori
StrTestoErrore = objErrore.Description
Next
Else
StrTestoErrore = ex.Message
End If
MsgBox(StrTestoErrore)
Finally
'distruggo l'oggetto
objLibrary =
NothingEnd 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.
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
Che dirvi... buona ricerca.
Office on line
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
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
(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
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)