xpages för utvecklare

23
Workshop xPages Thomas Adrian www.notessidan.se

Upload: thomas-adrian

Post on 05-Dec-2014

2.350 views

Category:

Technology


2 download

DESCRIPTION

en presentation av xPages för utvecklare

TRANSCRIPT

Page 1: Xpages för utvecklare

Workshop xPages

Thomas Adrianwww.notessidan.se

Page 2: Xpages för utvecklare

Agenda

– Kunskapströskeln– Fördelar– Nackdelar– En snabb demo av notessidan.se– Demo av olika funktioner– Fika– Workshop Projektrum

● Formulär + validering och actions● Vyer

Page 3: Xpages för utvecklare

Hur jag lärt mig xPages● Läst bloggar,

planetlotus.org

● Läst dokumentationenhttp://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp

● Läst och deltagit på notes.net forum

● Chat forum #dojo

● Xpages Wiki: http://www.youatnotes.de/web/youatnotes/wiki-xpages.nsf/home.xsp

● Domino Designer Wiki: http://www-10.lotus.com/ldd/ddwiki.nsf

● http://www.jmackey.net/

● Byggt själv

Page 4: Xpages för utvecklare

Kunskapströskeln● Eclipse (Outline, Navigator, Problem, Properties, Events, controls)

● HTML

● Stylesheet / Themes

● Ajax, partial refresh

● Lotusscript/@formulas/Javascript (ev. java)

● Dojo och Dijit

● Controls (32) och Custom Controls

● Client side js (csjs)

● Server side js (ssjs)

● Globala object och Scoped variables

● JSF + navigator

Page 5: Xpages för utvecklare

Fördelar● Man behöver inte förändra befintliga applikationerna.

● Man kan bygga väldigt komplicerade applikationer utan att skriva en rad kod, man får mycket gratis. t.ex. validering och type-ahead

● Flera datakällor på samma xPage, tex. Join i en vy

● Varje kontroll är bunden till en data källa

● Lätt att göra flerspråkiga websidor

● Lätt att bygga ett ramverk med ”editable area”

● Inbyggt stöd för dojo och oneui

● En xpage behöver inte ligga i databasen där datat ligger

● Kan köras i notesklienten 8.5.1 (med klientens ECL)

Page 6: Xpages för utvecklare

Nackdelar● Många klick

● Svårt att kombinera ”egen kod” med xPage funktionalitet. tex. Egna <script></script>

● ID hanteringen är omständig<div id="view:_id1:_id13:repeat1:0:divSubject">

● En xPage kan bara generera HTML, (inte xml, json, sql etc)

● Bristfällig dokumentation

● Säkerhetsmodellen, agenter?

● All UI kod i lotusscript måste skrivas om (men det är inte på grund av xpages)

● Buggig

Page 7: Xpages för utvecklare

Verktyg för Webutveckling

● Utveckla för Firefox, testa i IE● Firefox eller Chrome● Firebug (FF tillägg)● JSView (FF tillägg)● Firebug lite (IE)● Live HTTP headers (FF tillägg)

Page 8: Xpages för utvecklare

En Xpage● Är i webläsaren kompilerad java kod som körs som en servlet

● Är bara en ”dum” html sida innan du binder kontroller och datakällor till den

● Liknar ett formulär.

● En container för att lagra controller

● Kan bindas till flera datakällor

● Kan innehålla Custom Controls

● Är JSF

● Har events för load ( typ WQO)

Page 9: Xpages för utvecklare

Custom Controls

● Liknar subformulär● Kan innehålla andra custom controls● Kan inte användas utan en xpage● Kan ta parametrar (bra om man t.ex. Vill

skapa custom controls som kan användas var som heltst, tex. Tooltip, eller Dialoger)

● Har events för load ( typ WQO)

Page 10: Xpages för utvecklare

Controlsrepeat, panels , edit box etc..

● några har event, andra inte● några kan nestlas i varandra, andra inte● Alla har sina egna egenskaper och API● Några kan man koppla till data källor, andra

inte● Man kan göra egna

Page 11: Xpages för utvecklare

Repeat Control

● Antagligen den coolaste funktionen i hela xPages , (en del tycker Editable Areas)

● Data behöver inte se ut som en tabell● I stort sett vad som helst kan repeteras● Repeat kan nestlas● Inte bara för dokument

– Arrays– Json– Multivalue fields

Page 12: Xpages för utvecklare

Exempel på egna controls

● Tooltips● Dialoger● Create PDF● Movie/Flash● Actionbar● Drop down Menu● Document history● Cloud

● Tree ● Workflow● Picture gallery● Rating● Charting● Login/Logot● Multi file upload● ....

Page 13: Xpages för utvecklare

Scoped Variablescookies på servern

● ApplicationScopeTillgänglig för alla användareTas bort efter en viss tid

● SessionScopeTillgänglig för aktuell användare

● ViewScopeTillgänglig för aktuell websida

● RequestScopeTillgänglig för aktuell request

Page 14: Xpages för utvecklare

Programmering● SSJS kräver alltid en request till servern● CSJS utförs alltid på klienten, (id konverteras av servern)● Javascript på servern SSJS

– @formulas– Dominoklasser– XSP

● Javascript på klienten CSJS- Dojo

● Java på servern med CSJS● Lotusscript/Java på servern via agenter

Page 15: Xpages för utvecklare

Notesformulär

● Traditionella Notesformulär används av xpages men bara för att definiera fält

● Xpages kräver att alla fält finns på formulären

● Ett formulär som ska accesssas av en xpage kan inte innehålla subforms

● Mitt tips är att göra ett nytt formulär som innehåller bara dom fält jag behöver i min xpage

● Använd formuläret för att dokumentera

Page 16: Xpages för utvecklare

Notesvyer

● Används för Lookups och Sortering

Page 17: Xpages för utvecklare

ID och Class● ID och Class är det man i vanliga fall använder när man

utvecklar webapplikationer● I xPages sköter Domino ID hanteringen eftersom data på en

xPage kan repeteras● Utvecklare av xpages får nöja dig med ”Class”:er

Page 18: Xpages för utvecklare

Åtkomst till ID i CSJSFör att hitta denna div

<div id="view:_id1:_id12:repeat1:0:divBody" class="docBody"></div>

använd följande som hittar alla id som slutar på divBody

dojo.query("[id$='divBody']")[0];

var div = dojo.query("[id$='divBody']")[0];dojo.toggleClass(div,"bodyhide");

Om man behöver hitta ett id på en control använd syntaxen "#{id:mittid}"

Exempel: dojo.byId("#{id:searchData}")

Resulterar i följande efter Domino konverterat id't

dojo.byId("view:_id1:searchData")

Page 19: Xpages för utvecklare

SSJS● getClientId(”button1”)

● getComponent(”repeat1”).

● getComponent(”repeat1”).getRowCount()

● getComponent(”...”).onclick=”alert('test');”

● facesContext.getExternalContext().getRequest().getRemoteAddr()

● sessionScope.put(”param”,”value”);

● sessionScope.get(”param”);

● context.redirectToPage(&quot;xstart.xsp&quot;);

● context.getLocale();

● context.getUrlParameter(&quot;post&quot;);

● var pager:com.ibm.xsp.component.xp.XspPager= getComponent(””);pager...

● GetComponent finns inte i CSJS

Page 20: Xpages för utvecklare

Xpage på olika språk

● Skapa propertyfiler för olika språk med några klick från databasen

● Exportera propertyfilerna● Skicka propertyfilerna till översättning● Importera propertyfilerna till databasen

● Obs: kräver att man har använt controller

Page 21: Xpages för utvecklare

DDE och programmeringstips● CTRL-M (öppna vy i fulläge)

● Outline ( organisera controls)

● CTRL-L x 2

● F3 (på en control markerar ”parent control”)

● All Properties på en control (visar alla egenskaper)

● print(”test”) i ssjs skriver till server console

● Aktivera debug i application properties

● Hjälpen som ett eget fönster

● Använd Alltid try/catch i SSJS

● @formulas returnerar String(ett värde) eller Array(flera värden)

● Firebug , console.log(...)

Page 22: Xpages för utvecklare

Demo

● Theme OneUI● ID hanteringen

● Panels● Repeat Control● Custom Controls● Editable Area● View Control/Pager● Partial Refresh

Page 23: Xpages för utvecklare

Demo

xpages.notessidan.se