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