xwiki: a web development runtime platform

Post on 01-Nov-2014

3.283 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

When developing a web application the traditional way is to develop the application from scratch using a general purpose language such as PHP, Grails, Java/JSP, etc. This presentation will show that a second generation wiki (examples based on XWiki: http://xwiki.org) can be used as a web development platform to develop applications on top of it, providing much if not all the needed infrastructure scaffolding.The advantages are similar to those of using an application sever. However whereas an application server offers technical services only, a wiki platform offers higher level services such as content management, rendering, storage, WYSIWYGeditor, user management, and a lot more.Not only are these services offered, you can develop using them in your traditional IDE or in the runtime, directly in wiki pages. This allows developing web applications extremely quickly with a fast turnaround time, which is perfect for adhoc web application development.

TRANSCRIPT

Copyright (c) Vincent Massol - 2011

XWikiA collaborative development platform runtime based

on the wiki paradigm

September 2011

Copyright (c) Vincent Massol - 2011

Agenda

• What is XWiki?

• Development Capabilities

• Why use XWiki?

• QA

Copyright (c) Vincent Massol - 2011

What is XWiki?

Copyright (c) Vincent Massol - 2011

Is it a first gen Wiki?

Copyright (c) Vincent Massol - 2011

Is it a first gen Wiki?

Not only!

Copyright (c) Vincent Massol - 2011

Is it an Advanced Wiki?

Copyright (c) Vincent Massol - 2011

Is it an Advanced Wiki?

Not only!

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

It’s a dev platform!

... and a lot more...

Copyright (c) Vincent Massol - 2011

XWiki Platform

... for developing (collaborative) web applications

Copyright (c) Vincent Massol - 2011

Multiple Usages

Copyright (c) Vincent Massol - 2011

Long tail of AppsExcel of the

Web

Copyright (c) Vincent Massol - 2011

Development Capabilities

Copyright (c) Vincent Massol - 2011

Scripting in Pages (1/2){{groovy}}@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.1')import groovyx.net.http.*

def http = new HTTPBuilder( 'http://nexus.xwiki.org/nexus/' )def resp = http.get( path: 'service/local/repositories')

println "|=Name|=Type|=Location"resp.data."repositories-item".each() { println "|${it.name}|${it.repoType}|${it. contentResourceURI}"}{{/groovy}}

Demo

Copyright (c) Vincent Massol - 2011

Scripting in Pages (2/2){{velocity}}#set ($xwql = "where doc.content like '%welcome%'")#foreach ($item in $services.query.xwql($xwql).execute()) #if ($request.confirm == "1") #set ($itemDoc = $xwiki.getDocument($item)) $itemDoc.setContent($itemDoc.getContent().replaceAll( "welcome", "bienvenue")) $itemDoc.save("Replaced bienvenue") * [[$item>>$item]] replaced! #else * [[$item>>$item]] #end#end

[[Replace "welcome" by "bienvenue">>?confirm=1]]{{/velocity}}

Demo

Copyright (c) Vincent Massol - 2011

Adding MetaData• Ability to associate arbitrary

data to any wiki page

• Enable structure in the wiki

• Enable Application development

• Future: Application Within Minutes

Demo

Copyright (c) Vincent Massol - 2011

Wiki MacrosDemo

Copyright (c) Vincent Massol - 2011

Skinning & ThemingDemo

Copyright (c) Vincent Massol - 2011

Components@ComponentRolepublic interface Macro{    List<Block> execute();}

Demo

@Component@Named("message")@Singletonpublic class MessageMacro implements Macro{    @Inject    private Execution execution;

   @Inject    @Named("box")    private Macro boxMacro;

   public List<Block> execute()    {       ...    }}

org.xwiki.rendering.internal.macro.message.MessageMacro

META-INF/components.txt

Copyright (c) Vincent Massol - 2011

extensions.xwiki.org

Copyright (c) Vincent Massol - 2011

Why use XWiki?

Copyright (c) Vincent Massol - 2011

Pros (1/2)

• Iterative, Need-based development

• Continuous Delivery

• Online immediately (no deployment needed)

• Works from day one, immediate feedbacks

Copyright (c) Vincent Massol - 2011

Pros (2/2)

• Work collaboratively on creating applications

• Designers can style while devs create logic

• Open source

• Strong and meritocratic community

Copyright (c) Vincent Massol - 2011

Cons• Save code in SCM

• ... but SVN Application

• Low integration with existing dev tools

• ... but XEclipse

• ... but WebDAV

• Not an official standard

• Higher “risk”, less trained devs, etc

Copyright (c) Vincent Massol - 2011

Q&A

Me

Copyright (c) Vincent Massol - 2011

Vincent Massolvincent@xwiki.comskype: vmassolhttp://about.me/vmassol

http://xwiki.orghttp://xwiki.com

top related