IMPOSTAZIONE DELLE APPLICAZIONI
Sicurezza
I modelli di sicurezza per utenti Notes e utenti Web sono diversi. L'accesso Gestione e Impostazione ai database non è disponibile per gli utenti Web, a differenza di quanto accade per gli utenti di client Notes. Quindi è opportuno non includere operazioni o agenti LotusScript che richiedano all'utente l'accesso Gestione o Impostazione per poter eseguire un'attività.
L'autenticazione degli utenti comporta un ulteriore lavoro di pianificazione per le applicazioni accessibili da un browser Web. La maggior parte delle applicazioni Web fornisce alcuni livelli di accesso per gli utenti anonimi. Per livelli di accesso superiori è necessario definire una corrispondenza tra i nomi degli utenti Web e i nomi presenti nell'Elenco indirizzi di Domino. Poiché generalmente gli utenti Web accedono a un'applicazione utilizzando un nome abbreviato, si consideri l'opportunità di usare il comando @UserName per ottenere i nomi distinti completi Notes e poter eseguire un'autenticazione appropriata.
Moduli
Il più delle volte i moduli possono essere utilizzati sia in un'applicazione per client Notes, sia in un'applicazione Web. È possibile compensare le eventuali lievi differenze di funzionalità utilizzando formule "nascondi se" per gli elementi di impostazione di un modulo. A volte potrebbe essere necessario visualizzare un sottomodulo per un client Notes e un altro sottomodulo per un browser Web. Nell'esempio che segue, la formula richiama uno dei due sottomoduli calcolati, denominati NS e IE e contenenti codice specifico per il browser, utilizzando la variabile CGI per il tipo browser in @BrowserInfo:
@If(@BrowserInfo("BrowserType")="Netscape";"NS";"IE")
Ciascun sottomodulo contiene la relativa intestazione JavaScript(TM), quindi utilizzando i sottomoduli calcolati, è possibile includere selettivamente nei moduli i dati JavaScript(TM) e gli altri tipi di dati .
Tutti i sottomoduli si aprono simultaneamente con il modulo principale. Non è possibile visualizzare un sottomodulo calcolato in base a calcoli eseguiti dopo l'apertura della pagina.
In un ambiente con client misti, i moduli sono alquanto flessibili. Una programmazione progettata in modo da supportare più tipi di client permette di creare un evento del modulo che prevede l'esecuzione di un insieme di comandi quando l'accesso è effettuato da un client Notes e di un altro insieme di comandi se l'accesso avviene da un client Web. In alcuni casi, è consigliabile progettare due moduli distinti, uno per il client Notes e uno per il client Web. In questo caso, a entrambi i moduli vengono assegnati gli stessi alias e si rende invisibile un modulo al client Notes e l'altro modulo al client Web, in modo che venga visualizzato il modulo corretto nel contesto appropriato.
Campi
È importante ricordare che non tutti i tipi di campi utilizzati nelle applicazioni di Notes sono supportati anche nelle applicazioni Web. Ad esempio, il Web non supporta campi con parole chiave a valori multipli che permettono agli utenti di immettere scelte non presenti nell'elenco. Per ottenere un risultato simile in un'applicazione Web, è necessario utilizzare due campi distinti, uno destinato ad accettare nuove scelte per l'elenco, un secondo destinato alla creazione e alla visualizzazione di tale elenco. Se gli utenti possono accedere all'applicazione sia da client Notes che da client Web, è necessario sincronizzare i valori del campo in modo che tutti gli utenti vedano i medesimi valori.
Se il problema può essere risolto creando due versioni di una formula del campo, una per Notes e l'altra per il Web, si devono includere entrambe le formule nel modulo selezionando "Nascondi in Notes/Nascondi nel browser Web" nella finestra delle proprietà del campo per visualizzare l'una o l'altra.
Se si utilizza lo stesso modulo per entrambi i client, l'uso dell'attributo "Nascondi in Notes/Nascondi nei browser Web" nelle proprietà degli elementi di impostazione può risultare estremamente utile. Ad ogni modo, è opportuno notare che la parola "nascosto" ha un significato diverso per ciascun client. In Notes, i campi nascosti sono comunque presenti nel documento e possono essere utilizzati per calcoli eseguiti mediante script. Per contro, i campi nascosti nei browser Web vengono rimossi dal documento da IBM® Lotus® Domino(TM) prima che la pagina venga resa disponibile per il browser. Il contenuto del campo non è disponibile per l'utilizzo in JavaScript(TM).
Suggerimento: Se si intende rendere invisibili i campi all'interno di un browser, ma si desidera che il loro contenuto sia disponibile per JavaScript(TM), non utilizzare la funzione "Nascondi in Notes/Nascondi nei browser Web" e non inserire "type=hidden" all'interno degli oggetti Attributi testo HTML dei campi. Assicurarsi che siano verificate le condizioni elencate di seguito.
<input type="hidden" name="fieldname" value="fieldcontents">
Si ricordi che i nomi e i valori trattati in questo modo non sono protetti. Essi possono ancora essere visti da qualsiasi utente selezioni l'opzione del browser che visualizza il codice sorgente della pagina.
Si ricordi inoltre che non tutti i campi possono essere trasferiti in un browser in questo modo, ad esempio il campo della password, "$Updatedby", "$HtmlHead" e qualsiasi altro oggetto che contiene caratteri NULL (incluse le chiavi pubbliche degli utenti), poiché i caratteri NULL non possono essere tradotti in HTML.
Operazioni
Le operazioni hanno un ruolo maggiormente significativo nelle applicazioni Web, poiché gli utenti di un browser Web non hanno accesso ai comandi dei menu di Notes. È necessario prevedere un'operazione per attività quali la creazione di un documento, il passaggio alla modalità Modifica, la navigazione tra le viste o l'inoltro dei documenti. Quindi, in molti casi è necessario impostare una barra delle operazioni progettata specificatamente per applicazioni Web da nascondere agli utenti del client Notes.
Suggerimento Per abilitare per il Web i pulsanti di un database, selezionare "Per accesso Web: Usa JavaScript(TM) quando si generano le pagine nella finestra delle proprietà del database. Senza questa impostazione, Domino riconosce solo il primo pulsante presente in un documento e lo considera per impostazione predefinita come il pulsante Invia che chiude e salva il documento.
Viste
La visualizzazione delle viste di Notes nelle applicazioni Web comporta la perdita di alcuni elementi, a meno che la vista non sia precedentemente incorporata nella pagina. È possibile incorporare più viste all'interno di una pagina in modo da ottenere un aspetto molto elaborato. È inoltre possibile specificare un modello di vista per applicare proprietà di stile uniformi alle viste incorporate da utilizzare nelle applicazioni Web.
Per maggiori informazioni vedere Visualizzazione delle viste nelle applicazioni Web.
Navigazione
L'utilizzo di uno schema di navigazione permette di garantire una struttura uniforme per gli utenti di client Notes e di browser Web. Uno schema consente agli utenti di aprire viste, pagine o URL. Incorporando lo schema in una pagina vengono mantenute tutte le proprietà di visualizzazione per gli utenti di browser Web.
Anche una mappa immagine può essere usata come strumento di navigazione.
Per maggiori informazioni vedere Schemi, navigatori e mappe immagini.
Agenti
La programmazione mediante agenti fornisce alle applicazioni le più potenti funzioni di elaborazione. Proprio nell'utilizzo degli agenti si riscontrano le differenze più significative in relazione allo sviluppo di applicazioni per client Notes e browser Web. Sebbene sia possibile condividere una grande quantità di codice, esistono alcune circostanze per le quali sono necessari agenti diversi per il Web e per Notes. I principali eventi del server programmabili per le applicazioni Web sono WebQueryOpen e WebQuerySave. Per evitare problemi di prestazioni, utilizzare questi eventi per eseguire le attività principali e riservare le elaborazioni più complesse per gli agenti in background. Gli agenti possono essere eseguiti dal Web utilizzando le formule @Command([ToolsRunMacro]) o @URLOpen.
Per impostazione predefinita, gli agenti vengono eseguiti con l'identità dell'autore (la persona che ha salvato l'agente). Per eseguire gli agenti come utente Web, aprire la finestra delle proprietà dell'agente, fare clic sulla linguetta Impostazione e selezionare "Esegui come utente Web" nella sezione Per accesso Web. Questa opzione fornisce maggiori garanzie di sicurezza, poiché quando un utente Web cerca di eseguire un agente e questa proprietà è impostata, Domino chiede all'utente in questione il nome e la password e li confronta con i relativi diritti nella LCA del database.
Nel client Notes, molti eventi di moduli, campi e pulsanti possono essere compilati sia in JavaScript(TM), sia in LotusScript (o, per essere sicuri, tramite formule @). A seconda di come l'applicazione utilizza gli eventi associati a script, si potrebbero scrivere gli agenti in JavaScript(TM), utilizzando lo stesso modulo per i client Notes e Web. Esistono comunque delle differenze relative alle rispettive funzionalità. Nel client Notes, JavaScript(TM) ha accesso solo ai dati del modulo attivo e non prevede l'accesso agli oggetti Domino front-end e back-end di LotusScript. L'applicazione potrebbe funzionare meglio utilizzando LotusScript per l'esecuzione nel client Notes e JavaScript(TM) per l'esecuzione nei browser, utilizzando formule "Nascondi se" o moduli separati per rendere più efficiente l'esecuzione.
Ricordare che molte funzioni e comandi @ non funzionano in un browser. I motivi per cui le funzioni @ non sono utilizzabili possono essere suddivisi in tre categorie principali:
Per un elenco completo vedere Funzioni @ di Domino non supportate nel Web
Sostituzione delle finestre di dialogo per applicazioni Web
È opportuno valutare la possibilità di progettare per la propria applicazione dei moduli che sostituiscano i messaggi di errore e le finestre di dialogo di aiuto che sono assenti nel Web. In particolar modo, se si richiede l'autenticazione degli utenti per consentire l'utilizzo dell'applicazione, è consigliabile creare un modulo $$ReturnAuthenticationFailure che informi l'utente che l'autenticazione è fallita e fornisca i collegamenti da utilizzare per tornare alle sezioni dell'applicazione già note all'utente.
Creare il modulo e salvarlo con il nome $$ReturnAuthenticationFailure. Per rendere il modulo disponibile per l'accesso pubblico, sono necessarie due operazioni. Prima di tutto, è necessario impostare il ruolo predefinito nella LCA in modo che sia permessa la lettura di documenti pubblici.
Quindi, impostare le proprietà di sicurezza del modulo per renderlo disponibile agli utenti pubblici selezionando "Disponibile per l'accesso pubblico" nella pagina Sicurezza della finestra di dialogo Proprietà del modulo.
Esistono quattro nomi di modulo riservati da utilizzare per creare messaggi d'errore personalizzati per gli utenti di browser: $$ReturnAuthenticationFailure, $$ReturnAuthorizationFailure, $$ReturnDocumentDeleted e $$ReturnGeneralError.
Per ulteriori informazioni relative a tali campi e al loro utilizzo, vedere Visualizzazione di un messaggio di errore personalizzato.
Programmazione per piattaforme multiple
È possibile ora programmare in Designer lo stesso evento per il client Notes e per il browser Web. È possibile ottimizzare i codici all'interno di un evento (ad esempio l'evento Click di un pulsante) in relazione alla piattaforma su cui dovrà essere eseguito. Il codice fornito per la piattaforma Client viene eseguito quando un utente utilizza l'applicazione nel client Notes. Il codice fornito per la piattaforma Web viene eseguito quando un utente utilizza l'applicazione in un browser. Gli eventi validi per due diverse piattaforme sono disponibili per eventi specifici di moduli, pagine, sottomoduli, campi, pulsanti, operazioni e punti di attivazione.
Pianificazione delle differenze tra browser
Se gli utenti accedono all'applicazione Web utilizzando browser o versioni di browser differenti, è necessario verificare il funzionamento dell'applicazione e adeguarne gli elementi in funzione delle differenze tra i browser. Nei casi in cui sia necessario adeguare i codici a tali differenze, è possibile utilizzare @BrowserInfo per conoscere quale browser o versione sta eseguendo l'utente.
Per maggiori informazioni su @BrowserInfo vedere @BrowserInfo.
Vedere anche