XWiki
A web development runtime platform based
on the wiki paradigm

Vincent Massol, February 2014
Agenda
• Developing on XWiki	

• A runtime platform	

• Usages	

• QA
Developing on XWiki

Copyright (c) Vincent Massol - 2012
Metadata!

Demo

• Ability to associate arbitrary 

data to any wiki page	


• 1: Create metadata definition in a wiki
page...
Skinning & Theming

Copyright (c) Vincent Massol - 2012
Skin Extensions
CSS

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().te...
Scripting in Pages (2/2)
{{velocity}}
#set ($xwql = "where doc.content like '%welcome%'")
#foreach ($item in $services.que...
Components in Java
@Role!
public interface Macro!
{!
    List<Block> execute();!
}
@Component!
@Named("message")!
@Singlet...
Extensions

Copyright (c) Vincent Massol - 2012
A runtime platform

Copyright (c) Vincent Massol - 2012
Building an Application
Runtime

Traditional way
Copyright (c) Vincent Massol - 2012
Building an Application
Runtime

Runtime

XWiki way - Morphing!
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 Apps
Excel of the
Web

Copyright (c) Vincent Massol - 2012
Pros
• Iterative, Need-based development	

• Continuous Delivery	

• Work collaboratively on creating applications	

• Des...
Q&A

Me
Copyright (c) Vincent Massol - 2012
Vincent Massol
vincent@xwiki.com	

skype: vmassol	

http://about.me/vmassol	

!

http://xwiki.org	

http://xwiki.com	


Co...
Prochain SlideShare
Chargement dans…5
×

A web development runtime platform based on the wiki paradigm

2 058 vues

Publié le

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 shows 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.

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

A web development runtime platform based on the wiki paradigm

  1. 1. XWiki A web development runtime platform based on the wiki paradigm Vincent Massol, February 2014
  2. 2. Agenda • Developing on XWiki • A runtime platform • Usages • QA
  3. 3. Developing on XWiki Copyright (c) Vincent Massol - 2012
  4. 4. Metadata! Demo • 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 Copyright (c) Vincent Massol - 2012
  5. 5. Skinning & Theming Copyright (c) Vincent Massol - 2012
  6. 6. Skin Extensions CSS JS == Grease Monkey Copyright (c) Vincent Massol - 2012
  7. 7. 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
  8. 8. 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
  9. 9. 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()!    {!       ...!    }! } META-INF/components.txt org.xwiki.rendering.internal.macro.message.MessageMacro + Wiki Components! Copyright (c) Vincent Massol - 2012
  10. 10. Extensions Copyright (c) Vincent Massol - 2012
  11. 11. A runtime platform Copyright (c) Vincent Massol - 2012
  12. 12. Building an Application Runtime Traditional way Copyright (c) Vincent Massol - 2012
  13. 13. Building an Application Runtime Runtime XWiki way - Morphing! Copyright (c) Vincent Massol - 2012
  14. 14. XWiki Platform ... for developing (collaborative) web applications Copyright (c) Vincent Massol - 2012
  15. 15. Usages Copyright (c) Vincent Massol - 2012
  16. 16. Multiple Usages Copyright (c) Vincent Massol - 2012
  17. 17. http://www.xwiki.org/xwiki/bin/view/Main/Screenshots Copyright (c) Vincent Massol - 2012
  18. 18. Long tail of Apps Excel of the Web Copyright (c) Vincent Massol - 2012
  19. 19. 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
  20. 20. Q&A Me Copyright (c) Vincent Massol - 2012
  21. 21. Vincent Massol vincent@xwiki.com skype: vmassol http://about.me/vmassol ! http://xwiki.org http://xwiki.com Copyright (c) Vincent Massol - 2012

×