Confluence as a Platform - Atlassian Summit 2010

  • Published on
    17-May-2015

  • View
    1.511

  • Download
    3

Embed Size (px)

DESCRIPTION

Confluence as a Platform Jonathan Gilbert, Atlassian

Transcript

  • 1. 1 1

2. Conuence as a PlatformJonathan GilbertSenior DeveloperAtlassian 2 2 3. Agenda Why Build on Conuence? Conuence Advantages Example Application Architecture Application Audience The Road Ahead33 4. Why build on Confluence?? ?44 5. When to build on Conuence? When to choose Conuence When to avoid Conuence Content based Structured data storage needs Collaborative Specic, unsupported technology Conuence already being used byrequirementstarget audience Core product customisation is required55 6. Conuence Advantages Content Persistence Content Discovery Integration Easy Development 6 6 7. Content PersistencePages & Blogs Attachments Comments Bandana 7 7 8. Content PersistencePages & Blogs Attachments CommentsBandanaVersioning Import & Export Backup & Restore 88 9. Content Discovery Labels 9 9 10. Content Discovery LabelsFeedsNotications Activity StreamSearch1010 11. Integration Microsoft Ofce Support External Systems IntegrationUsers & GroupsIntegrated UI Page GadgetAuthentication & Authorisation 1111 12. Easy Development Atlassian Plugin SDK Dependency Injection Hot Deploy12 12 13. Easy Development UI Reusable Components Fully Customisable Internationalisation Shared Access Layer13 13 14. Easy Development Conuence Source Provided Huge Development Community Forums Online Documentation Public issue tracking Tons of examples 400+ existing plugins14 14 15. Architecture Example Application Service UIsjQuerVelREST APIXWAPIFeedsPlugin Core Blogs Label Page Band Attac Com User Search & Persistence15 15 16. Architecture - Core Conuence Managers Service UI LabelssjQuer Vel Bandana REST APIXW API Feeds Plugin CoreBlogsLabelPageBandAttacComUserSearch & Persistence 1616 17. Architecture - Core Dependency Injection Spring Framework Service UIsjQuerVelREST APIXWAPIFeedsPlugin Core Blogs Label Page Band Attac Com User Search & Persistence17 17 18. Architecture - Core Dependency Injection Spring FrameworkService UI public class ExampleProcessor { sjQuer public ExampleProcessor(PageManager pageManager) {Vel ... } REST APIXW public void setSpaceManager(SpaceManager spaceManager){ API Feeds ... } Plugin Core }BlogsLabelPageBandAttacComUserSearch & Persistence 1818 19. Architecture - Core Shared Components - OSGi Service UI sjQuer Vel REST APIXW API Feeds Plugin CoreBlogsLabelPageBandAttacComUserSearch & Persistence19 20. Architecture - Core Shared Components - OSGi ServiceUI ExportsjQuerVel com.atlassian.example.AppServiceREST APIXW APIFeeds Plugin Core Blogs Label Page Band Attac Com User Search & Persistence 20 21. Architecture - Core Shared Components - OSGi ServiceUI ExportsjQuerVel com.atlassian.example.AppServiceREST APIXW Import APIFeeds com.atlassian.example.AppService Plugin Core Blogs Label Page Band Attac Com User Search & Persistence 21 22. Architecture - Core New Features Service UI Commentable objectssjQuer Spaced UserStatusVel Custom Space Types REST APIXW Multi-label queries API Feeds Plugin CoreBlogsLabelPageBandAttacComUserSearch & Persistence 2222 23. Architecture - Core New Features Service UI Bandana 3.0sjQuer Custom storage contexts Vel Enumeration of stored keys per context Custom serialisersREST APIXW API Feeds Plugin CoreBlogsLabelPageBandAttacComUserSearch & Persistence 2323 24. Architecture Traditional UI XWork ActionsService UI VelocitysjQuer Vel Web Resources REST APIXW API Feeds Plugin CoreBlogsLabelPageBandAttacComUserSearch & Persistence 2424 25. Architecture Traditional UI Service UI sjQuer Vel/example/templates/action/dostuff.vmREST API XWAPI FeedsPlugin CoreBlogsLabelPageBandAttacComUserSearch & Persistence 2525 26. Architecture Traditional UI Service UI sjQuer Vel/example/templates/action/dostuff.vmREST API XWAPI Feeds Plugin Core BlogsLabelPageBandAttacComUser Search & Persistence 2626 27. Architecture REST UI Client Service UI JQuerysjQuer Atlassian User InterfaceVel ServerREST APIXW MacrosAPI Feeds REST Framework 2.0 Jersey Plugin Core InterceptorsBlogsLabelPageBandAttacComUserSearch & Persistence 2727 28. Architecture REST UI Service UI @XmlRootElement(name = example") public class ExampleEntity {{sjQuer @XmlElement public String name; name: name, id: idVel @XmlAttribute public long id; } }REST APIXW @Path("/example") APIFeeds public class ExampleResource { @GET public Response get() { Plugin Core ExampleEntity exampleEntity = Blogs Label Page Band Attac Com User return Response.ok(exampleEntity).build(); } }Search & Persistence 3030 31. Architecture REST UI

Service UIsjQuerVelREST APIXWAPIFeedsPlugin Core Blogs Label Page Band Attac Com User Search & Persistence31 31 32. Architecture REST UI

Service UI

{id}sjQuer

VelREST APIXWAPIFeedsPlugin Core Blogs Label Page Band Attac Com User Search & Persistence32 32 33. Architecture REST UI

Vel REST APIXWAPIFeedsPlugin Core Blogs Label Page Band Attac Com User Search & Persistence33 33 34. Architecture REST UI

jQuery.ajax({ REST APIXW url: contextPath + '/rest/exampleService/1.0/example', API Feeds type: 'GET', dataType: 'json', contentType: 'application/json; charset=utf-8', Plugin Core success: function(entity) {BlogsLabelPageBandAttacComUser } }); Search & Persistence 3434 35. Architecture REST UI

jQuery.ajax({REST APIXW url: contextPath + '/rest/exampleService/1.0/example', APIFeeds type: 'GET', dataType: 'json', contentType: 'application/json; charset=utf-8', Plugin Core success: function(entity) { Blogs Label Page Band Attac Com User AJS.$('#exampleArea').append(AJS.template.load('entity-template').fill(entity).toString()); } });Search & Persistence35 35 36. Architecture - Federation REST Service UI XMLsjQuer JSON Vel Feeds REST APIXW Gadgets API Feeds Page GadgetPlugin CoreBlogsLabelPageBandAttacComUserSearch & Persistence 3636 37. Application Audience Organisation Specic Commercial & Open Source37 37 38. Organisation Specic Conuence is already deployed No Resource Requirements Infrastructure Support Political Support 3838 39. Commercial & Open Source Conuence has a huge customer base (22,000) Hosting on plugins.atlassian.com Open or closed source Free or commercial Conuence Blog Codegeist AtlasCamp3939 40. The Road Ahead Full REST APIs AppLinks Unied Plugin Manager Structured Data Storage 40 41. Summary Content based & Collaborative Applications will benet Confers number of benets Development is easy REST Application Architecture Audience Conuence Rocks for Small, Content-Driven Applications! 4141 42. Where next? Sign up to the forums http://forums.atlassian.com/ Download the plugin SDK Check out the Atlassian Developer Blog http://blogs.atlassian.com/developer/ Check out the Conuence docs http://conuence.atlassian.com/42 42