Upload
vincent-massol
View
1.633
Download
6
Embed Size (px)
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, Play, Java/JSP, etc. This presentation will show that a next 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 a strong infrastructure scaffolding to building web applications. 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, collaboratively and with a fast turnaround time, which is perfect for adhoc web application development.
Citation preview
XWikiA web development runtime platform based
on the wiki paradigm
Vincent Massol, February 2014
Agenda
• Developing on XWiki
• A runtime platform
• Usages
• QA
Copyright (c) Vincent Massol - 2012
Developing on XWiki
Copyright (c) Vincent Massol - 2012
Metadata!
• Ability to associate arbitrary data to any wiki page
• 1: Create metadata definition in a wiki page (a.k.a xclass)
• 2: Use it in wiki pages (a.k.a xobjects)
• 3: Use scripting in wiki pages to access it
• Allows application development
Demo
Copyright (c) Vincent Massol - 2012
Skinning & Theming
Copyright (c) Vincent Massol - 2012
Skin ExtensionsCSS JS
== Grease Monkey
Copyright (c) Vincent Massol - 2012
Scripting in Pages (1/2){{groovy}} import groovy.json.* !def url = "https://api.github.com/users/xwiki/repos".toURL().text def root = new JsonSlurper().parseText(url) !println "|=Project|=Description|=Use Wiki?|=Use Issues?" root.each() { repo -> println "|[[${repo.name}>>http://github.com/xwiki/${repo.name}]]|${repo.description}|${repo.has_wiki}|${repo.has_issues}" } {{/groovy}}
Copyright (c) Vincent Massol - 2012
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}}
Copyright (c) Vincent Massol - 2012
Components in Java@Role!public interface Macro!{! List<Block> execute();!}
@Component!@Named("message")!@Singleton!public 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
+ Wiki Components!
Copyright (c) Vincent Massol - 2012
Extensions
Copyright (c) Vincent Massol - 2012
A runtime platform
Copyright (c) Vincent Massol - 2012
Building an Application
Traditional way
Runtime
Copyright (c) Vincent Massol - 2012
Building an Application
XWiki way - Morphing!
RuntimeRuntime
Copyright (c) Vincent Massol - 2012
XWiki Platform
... for developing (collaborative) web applications
Copyright (c) Vincent Massol - 2012
Usages
Copyright (c) Vincent Massol - 2012
Multiple Usages
Copyright (c) Vincent Massol - 2012
http://www.xwiki.org/xwiki/bin/view/Main/Screenshots
Copyright (c) Vincent Massol - 2012
Long tail of AppsExcel of the
Web
Copyright (c) Vincent Massol - 2012
Pros• Iterative, Need-based development
• Continuous Delivery
• Work collaboratively on creating applications
• Designers can style while devs create logic
• Works from day one, immediate feedbacks
• Open source and community-based
Copyright (c) Vincent Massol - 2012
Q&A
Me
Copyright (c) Vincent Massol - 2012
Vincent [email protected] skype: vmassol http://about.me/vmassol !http://xwiki.org http://xwiki.com