Changeset 30267

Show
Ignore:
Timestamp:
02/19/08 15:25:56 (9 months ago)
Author:
ogrisel
Message:

more work on NXP-2019: moving new LiveEdit? specifications into the nuxeo book as technical reference

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • doc/nuxeo-book/trunk/src/docbook/desktop-integration/index.xml

    r30248 r30267  
    565565      </section> 
    566566 
     567      <section> 
     568        <title>The bootstrap client module (part 2)</title> 
     569 
     570        <para> 
     571          The bootstrap module receives and parses the content of the 
     572          XML bootstrap file. According to a set of configurable rules 
     573          the bootstrap module launch the right editor with bootstrap 
     574          file as command line parameter. 
     575        </para> 
     576 
     577      </section> 
     578 
     579      <section> 
     580        <title>Authentication management during bootstrap</title> 
     581 
     582        <para> 
     583          The Bootstrap client will need to do an http call to get the 
     584          xml file from the server. This call must be authenticated. So 
     585          the protocol handler must reuse the browser session. 
     586        </para> 
     587 
     588      </section> 
     589 
     590      <section> 
     591        <title>The client editor and its plugin</title> 
     592 
     593        <para> 
     594          In case of document editing (use case #1): 
     595          <itemizedlist> 
     596            <listitem>call WS to get list of pre-edit actions</listitem> 
     597            <listitem> 
     598              display a dialog for letting user select action 
     599            </listitem> 
     600            <listitem>call WS to download the file</listitem> 
     601            <listitem> 
     602              call WS to get list of post-edit actions 
     603            </listitem> 
     604            <listitem> 
     605              display a dialog for letting user select action 
     606            </listitem> 
     607            <listitem> 
     608              save and upload the file to Nuxeo Server 
     609            </listitem> 
     610            <listitem>terminate (close the WS session)</listitem> 
     611          </itemizedlist> 
     612        </para> 
     613 
     614        <para> 
     615          In case of document creation (use case #2 and #3): 
     616          <itemizedlist> 
     617            <listitem>call WS to get list of pre-edit actions</listitem> 
     618            <listitem> 
     619              display a dialog for letting user select action 
     620            </listitem> 
     621            <listitem> 
     622              call WS to download the template file (use case #3) 
     623            </listitem> 
     624            <listitem> 
     625              call WS to get list of post-edit actions (e.g. choose 
     626              title) 
     627            </listitem> 
     628            <listitem> 
     629              call WS for the list of candidate server locations 
     630            </listitem> 
     631            <listitem> 
     632              display a dialog with actions and dropdown list of 
     633              candidate locations 
     634            </listitem> 
     635            <listitem> 
     636              create new document and upload the file to Nuxeo Server 
     637            </listitem> 
     638            <listitem>terminate (close the WS session)</listitem> 
     639          </itemizedlist> 
     640        </para> 
     641      </section> 
     642 
     643      <section> 
     644        <title>Authentication of the client editor</title> 
     645      </section> 
     646 
     647      <para> 
     648        All WS requests (SOAP and RESTful) from the editor plugin back 
     649        to the WS server should reuse all the HTTP cookies along with 
     650        any basic auth parameters to ensure the request will pass 
     651        through any authenticating reverse proxies (e.g. CAS, mod_sso, 
     652        ...) as if they were the original browser. 
     653      </para> 
    567654    </section> 
    568655 
     656    <section> 
     657      <title>The Web Service component</title> 
     658 
     659      <para> 
     660        It is responsible to answer the WS calls of the editor client. 
     661        Most of its business logics should be defined has an overridable 
     662        extension point so that customer project can change most of the 
     663        LiveEdit global behavior without having to re-compile / 
     664        re-package the client part. 
     665      </para> 
     666 
     667      <para> 
     668        In particular the list of candidate locations to 'save as new 
     669        document' is provided by the WS server-side API to the LiveEdit 
     670        client. The list should default to the list of Workspaces the 
     671        user currently has the "AddChildren" permission. The WS server 
     672        should dynamically compute that list according to an extensible 
     673        service (i.e. overridable by a extension point) so that customer 
     674        project can register a custom Java class that is responsible to 
     675        implement the custom business logics in case the list of 
     676        workspaces is not enough. 
     677      </para> 
     678 
     679      <para> 
     680        The location selected by default should also be defined on the 
     681        server side and overridable by the same extension point. 
     682      </para> 
     683    </section> 
     684 
     685    <section> 
     686      <title>More on editor launch</title> 
     687 
     688      <para> 
     689        Based on a configuration file containing mimetype/editor 
     690        mapping, the bootstrap module will launch an editor. This 
     691        configuration file should look like that: 
     692 
     693        <programlisting> 
     694          &lt;editors&gt; &lt;editor name="MSOOfficePlugin"&gt; 
     695          &lt;pluginType&gt;.net&lt;pluginType&gt; &lt;mime-types&gt; 
     696          &lt;mime-type&gt;application/msword&lt;/mime-type&gt; ... 
     697          &lt;/mime-types&gt; &lt;/editor&gt; &lt;editor 
     698          name="OOfficePlugin"&gt; 
     699          &lt;pluginType&gt;exec&lt;pluginType&gt; &lt;mime-types&gt; 
     700          &lt;mime-type&gt;application/vnd.oasis.opendocument&lt;/mime-type&gt; 
     701          ... &lt;/mime-types&gt; &lt;/editor&gt; ... &lt;/editors&gt; 
     702        </programlisting> 
     703      </para> 
     704 
     705      <para> 
     706        This is very important that bootstrap client can be separated 
     707        from the editors plugins, because there will plugins contributed 
     708        for specific editors. The simplest and most neutral way of 
     709        launching an editor plugin is just executing the editor plugin 
     710        passing it a copy of the bootstrap file. This file will be the 
     711        same as the one returned by Nuxeo server with additional 
     712        authentication information : cookies and Login/Password. 
     713      </para> 
     714    </section> 
     715 
     716    <section> 
     717      <title>More on pre- and post-editing actions</title> 
     718 
     719      <para> 
     720        Actions available on the document may depend on the custom 
     721        project specifications, and it is important that it is totally 
     722        transparent for the client plugin UI: we don't want to build a 
     723        version of the client plugins for each project. 
     724      </para> 
     725 
     726      <para> 
     727        So the idea is that the WebService will provide the client 
     728        editor plugin a simple list of actions, the client will simply 
     729        display available actions, and eventually ask the server to 
     730        execute them without knowing the underlying logic. 
     731      </para> 
     732 
     733      <para> 
     734        This "action logic" is somehow close to what we already do in 
     735        the web layer, an action defines an action id and a label. 
     736      </para> 
     737 
     738      <para> 
     739        If several actions can be done (like checkout + lock), then they 
     740        will be combined as compound actions: chekout, lock, 
     741        checkout_and_lock. This way we won't have to handle associations 
     742        conditions on the client side: the user can always select at 
     743        most one action: none / lock / checkout / chekout_and_lock 
     744      </para> 
     745 
     746    </section> 
    569747  </section> 
    570748 
    571749 
    572  
    573750</chapter>