SlideShare une entreprise Scribd logo
1  sur  10
Malte Timmermann – Head of Development Open-Xchange Hamburg
April 2013
OX Documents Explained
From a technical point of view
OX Documents
Customer Requirements
2 OX Documents Explained
Documents
Round-trip
Support for MS Office and Apache OpenOffice / LibreOffice documents
Preserve content and layout of complex documents
Work together on shared documents, see other‘s people edits
Users want document editing inside OX App Suite
Collaboration
Integration
Key Concept: Operations
3 OX Documents Explained
Operations
• Describe document changes and entire document
 Examples: insertParagraph, insertText, setAttributes
• Abstraction of file formats
• Building block for “Operational Transformation“ (OT)
• Allow collaborative editing (several authors change a
document at the same time, conflict resolution)
• Used in Client-Server communication, could also be used
for macro recording, scripting, ...
Key Concept: Hybrid Edit Mode
4 OX Documents Explained
Hybrid Edit Mode
• Use the browser‘s edit mode for rendering as well as for
cursor and selection handling, but not for editing
• Intercept keyboard/mouse events and create operations for
desired actions
• Apply operations with own logic using direct DOM
manipulations – do not let the browser do any DOM
manipulations!
• Transfer operations to the server for persistence and for
further distribution to other clients
Architecture Overview
5 OX Documents Explained
OX Text
App
OX Text
Editor
Lorem ipsum dolor sit
amet, consectetuer
adipiscing elit. Aenean
commodo ligula eget dolor. Aenean
massa. Cum sociis natoque
penatibus et magnis dis parturient
montes, nascetur ridiculus mus.
Donec quam felis, ultricies nec,
Operations
DOM
Manipulations
Browser
OX Text
OSGi
Document
Converter
OpenOffice
ODF <=>
Operations
ODFDOM
OOXML <=>
Operations
DOCX4J
OX Files
> ODF
< Operations
ODF / OOXML / Operations / other
> Non-ODF/OOXML
< ODF
Operations
(JSON)
Client Server
> OOXML
< Operations
Operations Processing
Step 1 – Decomposing the document (on server)
6 OX Documents Explained
Lorem ipsum dolor
sit...
Duis autem vel eum
iriure dolor in
hendrerit…
Unknown object – will be ignored
OOXML to Operations
insertParagraph start:[0]
insertDrawing start:[1,0] imageUrl:“pic.jpg“,
width=100, height=100, …
insertText start:[2,0], text=„Duis autem…“
setAttributes start:[2,5] end:[2,10]
attrs:{fontweight=bold}
insertText start:[0,0], text:“Lorem ipsum…“
insertParagraph start:[1]
Operations describe how to manipulate the document – including how to build it up from scratch
insertParagraph start:[2]
Operations Processing
Step 2 – Apply operations to editor (on client)
7 OX Documents Explained
<html>
<p> <p> <p>
„Lorem…“ „Duis…“<img>
insertText
insertParagraph
Operations to
HTML DOM
The browser will do the layout and the rendering
Lorem ipsum dolor sit...
Duis autem vel eum iriure
dolor in hendrerit…
insertDrawing
insertParagraph
insertText
insertParagraph
Operations Processing
Step 3 – Edit document in browser (on client)
8 OX Documents Explained
• Intercept all events – do not let the browser do any DOM manipulations
• Create operations for desired document manipulations
 For mouse/keyboard input as well as for actions triggered in the user interface
• Apply these operations to HTML DOM (see step 2 on last slide)
 The browser will display the updated document
• Send operations to the server - for persistence and for further distribution
Lorem ipsum dolor sit...
Duis autem vel eum iriure
dolor in hendrerit…
Ut wisi enim ad minim…
User Input
to Operations delete start:[2,5] end:[2,10]
delete start:[1,0]
splitParagraph start:[2,42]
insertText start:[3,0], text:“Ut wisi...“
Operations Processing
Step 4 – Apply operations to document (on server)
9 OX Documents Explained
<XML>
<p> <p> <p>
„Lorem…“ „Ut…“„Duis…“
delete1
Operations
to XML DOM
*.docx, *.odt
• This step is optional (for supporting legacy applications)
 It would also be possible to just make the operations list persistent
<p>
• Duplicate original document, build DOM tree
• Use only the newly created operations to update the DOM tree
• Do not touch any DOM nodes that you don‘t understand or don‘t care about,
so the round-trip is nearly perfect!
delete2
splitParagraph3
insertText4
2
3
41
Unknown object – still there!
© 2013 Open-Xchange
OX Documents Explained

Contenu connexe

Similaire à OX Documents Explained

Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365Arno Flapper
 
Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015Rubén Mondéjar Andreu
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Why Browser Debugger is a Developer's Best Friend
Why Browser Debugger is a Developer's Best FriendWhy Browser Debugger is a Developer's Best Friend
Why Browser Debugger is a Developer's Best FriendOdoo
 
metaLogic Lotus Integratio
metaLogic Lotus IntegratiometaLogic Lotus Integratio
metaLogic Lotus IntegratioNuxeo
 
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...Martijn de Jong
 
Copy of Silk performer - KT.pptx
Copy of Silk performer - KT.pptxCopy of Silk performer - KT.pptx
Copy of Silk performer - KT.pptxssuser20fcbe
 
SharePoint Designer Workflows - Nuts, Bolts and Examples
SharePoint Designer Workflows - Nuts, Bolts and ExamplesSharePoint Designer Workflows - Nuts, Bolts and Examples
SharePoint Designer Workflows - Nuts, Bolts and ExamplesDrew Madelung
 
Xml part 6
Xml part 6Xml part 6
Xml part 6NOHA AW
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - TalkMatthias Noback
 
Company Visitor Management System Report.docx
Company Visitor Management System Report.docxCompany Visitor Management System Report.docx
Company Visitor Management System Report.docxfantabulous2024
 
Legacy system migration workbench
Legacy system migration workbenchLegacy system migration workbench
Legacy system migration workbenchSD Tutorial
 
OPEN TEXT ADMINISTRATION
OPEN TEXT ADMINISTRATIONOPEN TEXT ADMINISTRATION
OPEN TEXT ADMINISTRATIONSUMIT KUMAR
 

Similaire à OX Documents Explained (20)

Bp309
Bp309Bp309
Bp309
 
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
 
Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015
 
JavaScripts & jQuery
JavaScripts & jQueryJavaScripts & jQuery
JavaScripts & jQuery
 
Responsive interfaces
Responsive interfacesResponsive interfaces
Responsive interfaces
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Why Browser Debugger is a Developer's Best Friend
Why Browser Debugger is a Developer's Best FriendWhy Browser Debugger is a Developer's Best Friend
Why Browser Debugger is a Developer's Best Friend
 
metaLogic Lotus Integratio
metaLogic Lotus IntegratiometaLogic Lotus Integratio
metaLogic Lotus Integratio
 
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
 
Copy of Silk performer - KT.pptx
Copy of Silk performer - KT.pptxCopy of Silk performer - KT.pptx
Copy of Silk performer - KT.pptx
 
Final ppt
Final pptFinal ppt
Final ppt
 
HTML literals, the JSX of the platform
HTML literals, the JSX of the platformHTML literals, the JSX of the platform
HTML literals, the JSX of the platform
 
SharePoint Designer Workflows - Nuts, Bolts and Examples
SharePoint Designer Workflows - Nuts, Bolts and ExamplesSharePoint Designer Workflows - Nuts, Bolts and Examples
SharePoint Designer Workflows - Nuts, Bolts and Examples
 
Xml part 6
Xml part 6Xml part 6
Xml part 6
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 
Company Visitor Management System Report.docx
Company Visitor Management System Report.docxCompany Visitor Management System Report.docx
Company Visitor Management System Report.docx
 
Legacy system migration workbench
Legacy system migration workbenchLegacy system migration workbench
Legacy system migration workbench
 
Lotus Domino 8.5
Lotus Domino 8.5Lotus Domino 8.5
Lotus Domino 8.5
 
ASP DOT NET
ASP DOT NETASP DOT NET
ASP DOT NET
 
OPEN TEXT ADMINISTRATION
OPEN TEXT ADMINISTRATIONOPEN TEXT ADMINISTRATION
OPEN TEXT ADMINISTRATION
 

Plus de Malte Timmermann

OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)Malte Timmermann
 
OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006Malte Timmermann
 
OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004Malte Timmermann
 
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006Malte Timmermann
 
OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006Malte Timmermann
 
Linux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun AccessibilityLinux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun AccessibilityMalte Timmermann
 
Sun ODF Plugin for MS Office
Sun ODF Plugin for MS OfficeSun ODF Plugin for MS Office
Sun ODF Plugin for MS OfficeMalte Timmermann
 

Plus de Malte Timmermann (7)

OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
 
OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006
 
OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004
 
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
 
OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006
 
Linux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun AccessibilityLinux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun Accessibility
 
Sun ODF Plugin for MS Office
Sun ODF Plugin for MS OfficeSun ODF Plugin for MS Office
Sun ODF Plugin for MS Office
 

OX Documents Explained

  • 1. Malte Timmermann – Head of Development Open-Xchange Hamburg April 2013 OX Documents Explained From a technical point of view
  • 2. OX Documents Customer Requirements 2 OX Documents Explained Documents Round-trip Support for MS Office and Apache OpenOffice / LibreOffice documents Preserve content and layout of complex documents Work together on shared documents, see other‘s people edits Users want document editing inside OX App Suite Collaboration Integration
  • 3. Key Concept: Operations 3 OX Documents Explained Operations • Describe document changes and entire document  Examples: insertParagraph, insertText, setAttributes • Abstraction of file formats • Building block for “Operational Transformation“ (OT) • Allow collaborative editing (several authors change a document at the same time, conflict resolution) • Used in Client-Server communication, could also be used for macro recording, scripting, ...
  • 4. Key Concept: Hybrid Edit Mode 4 OX Documents Explained Hybrid Edit Mode • Use the browser‘s edit mode for rendering as well as for cursor and selection handling, but not for editing • Intercept keyboard/mouse events and create operations for desired actions • Apply operations with own logic using direct DOM manipulations – do not let the browser do any DOM manipulations! • Transfer operations to the server for persistence and for further distribution to other clients
  • 5. Architecture Overview 5 OX Documents Explained OX Text App OX Text Editor Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, Operations DOM Manipulations Browser OX Text OSGi Document Converter OpenOffice ODF <=> Operations ODFDOM OOXML <=> Operations DOCX4J OX Files > ODF < Operations ODF / OOXML / Operations / other > Non-ODF/OOXML < ODF Operations (JSON) Client Server > OOXML < Operations
  • 6. Operations Processing Step 1 – Decomposing the document (on server) 6 OX Documents Explained Lorem ipsum dolor sit... Duis autem vel eum iriure dolor in hendrerit… Unknown object – will be ignored OOXML to Operations insertParagraph start:[0] insertDrawing start:[1,0] imageUrl:“pic.jpg“, width=100, height=100, … insertText start:[2,0], text=„Duis autem…“ setAttributes start:[2,5] end:[2,10] attrs:{fontweight=bold} insertText start:[0,0], text:“Lorem ipsum…“ insertParagraph start:[1] Operations describe how to manipulate the document – including how to build it up from scratch insertParagraph start:[2]
  • 7. Operations Processing Step 2 – Apply operations to editor (on client) 7 OX Documents Explained <html> <p> <p> <p> „Lorem…“ „Duis…“<img> insertText insertParagraph Operations to HTML DOM The browser will do the layout and the rendering Lorem ipsum dolor sit... Duis autem vel eum iriure dolor in hendrerit… insertDrawing insertParagraph insertText insertParagraph
  • 8. Operations Processing Step 3 – Edit document in browser (on client) 8 OX Documents Explained • Intercept all events – do not let the browser do any DOM manipulations • Create operations for desired document manipulations  For mouse/keyboard input as well as for actions triggered in the user interface • Apply these operations to HTML DOM (see step 2 on last slide)  The browser will display the updated document • Send operations to the server - for persistence and for further distribution Lorem ipsum dolor sit... Duis autem vel eum iriure dolor in hendrerit… Ut wisi enim ad minim… User Input to Operations delete start:[2,5] end:[2,10] delete start:[1,0] splitParagraph start:[2,42] insertText start:[3,0], text:“Ut wisi...“
  • 9. Operations Processing Step 4 – Apply operations to document (on server) 9 OX Documents Explained <XML> <p> <p> <p> „Lorem…“ „Ut…“„Duis…“ delete1 Operations to XML DOM *.docx, *.odt • This step is optional (for supporting legacy applications)  It would also be possible to just make the operations list persistent <p> • Duplicate original document, build DOM tree • Use only the newly created operations to update the DOM tree • Do not touch any DOM nodes that you don‘t understand or don‘t care about, so the round-trip is nearly perfect! delete2 splitParagraph3 insertText4 2 3 41 Unknown object – still there!
  • 10. © 2013 Open-Xchange OX Documents Explained