Lotus Designer 8.5.2: Desarrollo básico con XPages

Descripción

La aparición de XPages introduce a Domino 8.5 en el grupo de plataformas que permiten construir aplicaciones web de última generación basadas en un gestor de bases de datos de probadas funcionalidad y seguridad, el toolkit Dojo y la tecnología JavaServer Faces.
Este curso guía hacia los pasos esenciales de adaptar una aplicación construida originálmente para Notes y posteriormenete modificada como una aplicación web clásica de Domino, para que llegue a ser una aplicación XPage totalmente funcional.

Objetivos

En este curso, se aprende cómo:

  • Comparar y contrastar aplicaciones web clásicas Notes y Domino y aplicaciones XPages desde la perspectiva del usuario y del desarrollador.
  • Utilizar formularios y vistas como esquemas para los Data Sources en una XPage.
  • Establecer un entorno de desarrollo cliente/servidor seguro y correcto para desarrollar, testear, y desplegar aplicaciones XPage.
  • Utilizar todas las características de desarrollo de DDE relacionadas con las XPages.
  • Utilizar las características de arrastrar y soltar de la solapa de Diseño y las características de edición de código fuente de la solapa de Fuentes.
  • Utilizar las propiedades activables directamente y las acciones simples cuando sea posible, pero también a conocer Javascript de servidor y de cliente para la programación de manejadores de eventos avanzados haciendo uso del DOM del navegador, Domino y métodos del objeto XSP.
  • Convertir una aplicación clásica web Domino en una aplicación con funcionalidades de XPages.
  • Añadir y configurar entradas de usuario y controles contenedores mientras se desarrolla una XPage paso a paso.
  • Añadir y configurar DataSources de vistas y documentos y asociar los controles a campos y columnas.
  • Proporcionar navegación al usuario para crear, refrescar, editar, guardar y borrar documentos y documentos de respuesta.
  • Maximizar las características de los controles de vistas añadiendo ordenación al pulsar, marcas de no leídos, categorías y filtrado de categorías, jerarquías de documentos respuesta, paginación con contadores de filas, marcas de selección, operaciones en documentos a nivel de vista, borrados no permanentes, filtrado por clave, búsquedas de texto completo, columnas calculadas, imágenes en columnas, y columnas que efectúan búsquedas en DataSources.
  • Aprender a localizar y resolver errores de sintáxis y programación, así como a capturar e informar de errores de ejecución
  • Implementar la traducción y validación estándar y crear validadores y conversores personalizados para validaciones avanzadas.
  • Emular los campos calculados, calculados al visualizar y calculados al crear de Notes.
  • Aprovechar los recursos de archivo internos y externos como bibliotecas de javascript de cliente y de servidor, CSS e imágenes.
  • Implementar mecanismos de seguridad a nivel de documento, de XPage, de aplicación y de servidor, incluyendo campos de lectores y autores y filtrado de contenido activo paa prevenir ataques de cross-site scripting.
  • Usar variables de ámbito y documentos de perfil para mantener la información de estado de las aplicaciones de navegador.
  • Cargar y visualizar de manera condicional todo tipo de controles y controles contenedores basados en condiciones de tiempo de ejecución y aprender los secretos detrás de las aplicaciones de “una sóla página”.
  • Diseñar el estilo de aplicaciones haciendo uso de HTML convencional, así como mediante temas y CSS de manera similar al usado en los temas OneUI.
  • Mostrar arrays de Javascript, campos multivaluados, colecciones de entradas de vista y colecciones de documentos en controles de tipo Repetición y Tabla.
  • Hacer uso de todos los tipos de controles y controles contenedores y cuando estos no sean suficiente, añadir Dijit widgets que ejecuten javascript de servidor y de cliente.
  • Integrar aplicaciones XPage con aplicaciones web Domino.

Audiencia

Este curso está diseñado para programadores Notes que conocen el uso de Domino Designer, pero que son nuevos en Xpages. Se asume un mínimo de estos conocimientos:

  • Conocimiento del entorno de desarrollo Domino Designer, incluyendo diseño de vistas y formularios,@funciones, así como la gestión de las ACLs.
  • Conocimiento de las clases de los objetos de Domino, tanto en lenguaje LotusScript como en lenguaje Java.
  • Conocimiento básico de tecnologías de desarrollo web, incluyendo DOM, (X)HTML, XML, AJAX, CSS y JavaScript básico.

Este curso NO es una introducción al desarrollo de aplicaciones de Lotus Domino. Es un curso avanzado para conocer el desarrollo basado en XPages.

Duración

La duración del curso es de 4 jornadas

Esquema

Topic  1: Classic Applications and XPage Applications 
Classic applications for both Lotus Notes and browsers 
How classic applications use Forms 
XPage applications 
Exercise: Open XPage application in a browser 
How XPage applications use Forms 
Document Universal NoteID (UNID) and NoteID refresher 
XPage applications use XPages 

Topic  2: Server and Client Software Requirements
 
XPages 8.5 versus 8.5.2 
Domino Server installation 
XPages are run by the Domino HTTP task 
Security enforcement for XPages 
Domino Web Server settings 
XPages server properties files 
Lotus Notes and Lotus Domino Designer
Exercise: Open XPage application in Notes 

Topic  3: Eclipse Framework
 
Eclipse Perspective and Eclipse Views 
Open and remove applications from Applications View 
Open applications in the Applications View 
Working Sets of applications 
Application properties 
Design element properties 
Multiple Editor View tabs 
Customize Eclipse Views 
Customize and save a Perspective 
Eclipse Help System 
Search 
Code Compare 

Topic  4: XPages in Domino Designer
 
Eclipse Views used for XPage development 
Complementary design elements 
Exercise: Create project application from a template 
Exercise: Set database ACL 
Exercise: Create local replica 
Exercise: Create Product document in your database from Notes 
Exercise: Open the application in browser 
Build Project automatically 

Topic  5: Create an XPage and Controls
 
Create a new XPage 
Exercise: Create a new XPage 
Add a Label Control 
Exercise: Add a Label Control and test the XPage 
Add a Data Source and Fields 
Exercise: Add a Data Source and Fields 
Edit Box Control properties 
Edit Box tab 
Data tab simple binding 
Data tab Default value and Display type 
Validation tab 
Exercise: Set Edit Box Control properties 

Topic  6: Save a Document
 
Submit XPage to create a document 
Button Control to save the document 
Save and Close button onclick event handler 
Exercise: Add Save and Close Button Control 
Exercise: Add Refresh Button Control 
Navigate away warning 

Topic  7: List Documents in a View Control
 
Exercise: Create XPage with View Control 
Open document from link in View 
How Domino picks an XPage to open a document 
Exercise: Open product documents from the allProducts XPage 
Add, delete, reorder Columns 
Add a Column 
Delete a Column 
Reorder Columns 
Click-to-sort and categorized Columns 
View Control Display properties 
View Control Style properties 
Show Unread marks 
Pager Control 
Navigation between XPages 
Launch application to XPage 
Exercise: Launch project application to allProducts XPage 

Topic  8: Controls that Use Simple Actions
 
Add Button Control 
Simple Actions 
Open Page Simple Action 
Execute Script (server-side) 
Confirm Action 
Action Group 
Exercise: Create product from allProducts XPage 
Exercise: Go to allProducts after saving a product document 
Exercise: Close, edit, or delete document from Read mode 
Link Control 
Simple Actions Help 

Topic  9: Computed Properties & Edit Box Default Value
 
Static property values 
Data type of a computed property value 
Compute a property value 
Two types of JavaScript 
Example of server-side JavaScript: redirectToPage() method 
Compute the defaultValue property of an Edit Box Control 
Technique 1: Set value from Form Field with computeWithForm 
Technique 2: Server-side script using Domino objects 
Exercise: Server-side script using Domino objects 
Colon operator shows data type 
Technique 3: Server-side script using @Functions 
Exercise: Server-side script using @Functions 
Technique 4: Bind data using Advanced options 

Topic  10: Debugging
 
Locate JavaScript syntax errors 
When things don’t seem to be working 
Catch and print runtime errors 
Get XPage and Domino object information 
Default error page 
Client-side JavaScript debugging using Firebug 
Firebug Lite Debug Console 
Developer Tools in IE8 

Topic  11: Input Translation and Custom Converters
 
Input translation in general 
Technique 1: Client-side using browser DOM 
Technique 2: Server-side onblur/onchange using Domino objects 
Technique 3: Server-side beforeRenderResponse event handler 
Built-in converters 
Technique 4: Custom Converter for Strings 
Exercise: Add custom converter 

Topic  12: Computed Field Controls
 
Computed Field Control value property 
Emulate classic computed Fields 
Client-side JavaScript to change a Computed Field 
Exercise: Compute and save the value of Total 
Simple Action to Set Value 

Topic  13: JavaScript Script Libraries
 
Create a JavaScript Script Library 
Exercise: Server-side JavaScript Library 
External JavaScript library files 
Load Dojo module 

Topic  14: Data Entry Validation
 
DIY Field validation using client-side JavaScript 
DIY Field validation using server-side JavaScript 
Client-side and server-side event handler interaction 
Reusing classic onSubmit event handler validation code 
Client-side validation using the Validation tab 
Server-side validation using the Validation tab 
Array of validators property 
Add validators using the All Properties tab 
Exercise: validateConstraint validator 
customValidator validator 
Exercise: Create customValidator validator 
Exercise: validateExpression validator 
Rules of the validators 
Demo: Server-side event handler model 
Exercise: beforeRenderResponse event handler 

Topic  15: XPage and Document Security
 
XPage ACL entries array of properties 
Document security: Name storage 
Technique 1: computeWithForm property 
Problem with a multi-value list of names 
Technique 2: JavaScript to set Field Flag in Data Source 
Exercise: Set Authors Field programmatically 
Authors Fields you should always include 
Readers Fields 
Other ways to protect an XPage and its document data 
Save/replication conflicts 
Document Locking 
Document Locking and document deletion 
Active Content Filtering 

Topic  16: Fixed Option Controls
 
List Box Control 
Combo Box Control 
Check Box Control 
Checkbox group Control 
Programmatic access to values selected in Checkbox group Control 
Radio Button and Radio Button group Controls 
Exercise: Grouped Radio Button Controls bound to a Field 
Programmatic access to grouped Radio Button Controls 
Dependent Fixed Option Controls 
Exercise: Dependent Fixed Option Controls 
Edit Box Control with Type Ahead 
Type Ahead Computed Suggestions list 
Exercise: Add Categories (Department) Field to product XPage 
Exercise: Type Ahead Computed Suggestions list 
Split multiple entries in Edit Box Control into a multi-value Field 

Topic  17: Scoped Variables and Profile Documents
 
Scoped variable objects 
Default value of an Edit Box Control 
Bind value of Control to scoped variable 
The scope of scoped variables 
Client-side JavaScript access to a scoped variable 
Exercise: Display view information 
Exercise: Scoped variable for Type Ahead Computed Suggestions 
Profile Documents 
Create Profile Document 
Set Profile Document Field 
Read Profile Document Field 
Delete Profile Document 
Exercise: Profile Document 

Topic  18: View Operations
 
Display database and View information 
Show check boxes 
Exercise: Select and delete documents from View Control 
View Control object methods 
Go to top of View 
Change rows property from a Button Control 
Return to same View page after opening document 
Soft deletions 
Categorized Views 
Set expandLevel property in View Control 
Pass expandLevel parameter in URL 
Show single category 
Set categoryFilter property in View Control 
Pass categoryFilter parameter in URL 
Filter column(s) by key 
Set keys property in View Control 
Pass keys parameter in URL 
Exercise: Filter View Control by two keys 
Full Text Search 
Search items using [FIELD] 
Pass search parameter in URL 
Exercise: Create Full Text Search XPage 

Topic  19: Response Documents
 
Create the response document Form 
Establish the response relationship 
Exercise: Create adjustInventory XPage 
Real-time display of item value from parent document 
Views that show responses 
Traditional hierarchical View to show responses 
Display a computed value 
Single Category View to show responses 
Exercise: Single Category View to show responses 

Topic  20: Container Controls
 
Panel Control 
Exercise: Panel Control 
Tabbed Panel Control 
Exercise: Tabbed Panel Control 
Section Control 
Exercise: Section Control 
Custom Controls 
Exercise: Basic Custom Control 
Custom Control properties 
Step 1: Create the custom properties in the Custom Control 
Step 2: Read the custom properties inside the Custom Control 
Step 3: Set the custom properties from the XPage 
Exercise: Custom Control parameters 
Complex data Type and Editor in Property Creator 
Editable Area Control (Facet) 
Step 1: Add the Editable Area Control to a Custom Control 
Step 2: Add the Custom Control to XPage and add more controls to it 
Change the appearance of Custom Control in the XPage design 
Shop for Custom Controls 

Topic  21: Conditional Display and Styles
 
Properties that affect control display and access 
Ways to set display properties 
Some conditions to test 
Example from the Discussion template 
Exercise: Conditionally display Save and Edit Button Controls 
Exercise: Conditionally display Adjust Inventory Button Controls 
Top down styling with Themes 
Tweak the defaults 
Pick a new Theme 
Exercise: Apply a Theme 
Add a style sheet to an XPage 
Exercise: Alternating row backgrounds 
CSS frameworks 
Exercise: Add a style to a Panel 
Framework resources 

Topic  22: Computed View Elements
 
XPage and View designs 
Computed View Column Header label 
Computed Column value for InStock icon 
Computed Column value with lookup to Domino Directory 
Display HTML from underlying View column 
Display paperclip icon if there is an attached file 
Display picture of the attached file 
Buttons to toggle the display of the paper clip and picture 
Array of NoteIDs from documents selected in a View Control 
Delete documents at the View level with Document Locking enabled 

Topic  23: Rich Text and File Upload/Download
 
Rich Text Control 
Exercise: Add Rich Text Control to XPage 
Backend methods to create a Rich Text Field 
Rich Text fidelity between storage formats and clients 
Stop XPage users from editing Notes Rich Text 
File Upload and Download Controls 

Topic  24: Repeat and Data Table Controls
 
Repeat Control Data Source 1: JavaScript Array 
Additional ways to build an Array as a Data Source 
Repeat Control Data Source 2: Simple binding to a View 
Use JavaScript instead to get value of column 
Repeat Control Data Source 3: Collection of ViewEntries 
Repeat Control Data Source 4: Collection of documents 
Layout inside a Repeat Control 
Nested Repeat Controls 
Data Table Control 
Review of Data Sources and value access 

Topic  25: Dijit Widgets
 
What this Topic  doesn’t cover 
dijit.form.Button 
dijit.form.Slider 

Topic  26: Navigation
 
Review of codeless navigation mechanisms you have used 
Link Control for navigation 
Exercise: Navigation menu using Link Controls 
Programmatic redirection to an XPage inside the application 
Get URL and parameters of current XPage request 
Login/Logout Link Control 
Toggle between Edit and Read mode 
Programmatic redirection to URL outside the application 
“One-Page” applications 
Exercise: Move adjustInventory into product XPage 
Integrate XPages with classic Domino web applications 
1. Open document to XPage from a hyperlink in a View 
2. Open document using a Form from a View Control 
3. Run Agent 
WebQuerySave Agent 
Web Agents