[ 
https://jira.nuxeo.com/browse/NXP-7577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=103048#comment-103048
 ] 

Thierry Delprat commented on NXP-7577:
--------------------------------------

http://hg.nuxeo.org/nuxeo/nuxeo-features/rev/c87e193a64a8

> Improve Document.Create and Document.Update operations
> ------------------------------------------------------
>
>                 Key: NXP-7577
>                 URL: https://jira.nuxeo.com/browse/NXP-7577
>             Project: Nuxeo Enterprise Platform
>          Issue Type: Improvement
>          Components: Automation
>            Reporter: Thierry Delprat
>            Assignee: Thierry Delprat
>             Fix For: 5.4.3
>
>
> In the context of Android SDK, I use Automation API to Create and Update 
> documents.
>  - Document.Create
>  - Document.Update
> I hit some limitations I would like to fix, and since I don't want to add new 
> Create/Update operation, I plan to update the existing ones.
> There are several aspects :
> h2. Complex types
> Create/Update operation use Properties to represent the data to be added.
> From my understanding it does not allow Complex properties, only scalar and 
> List<String> are managed.
> On the automationClient complex properties are represented as PropertyMap.
> => I would like to allow a value in the properties to be expressed as a 
> JSONObject like :
> dc:title = my title
> file:content = {filename="toto.txt", mimetype="text/plain" ...}
> h2. Blobs management
> The current way of adding a Blob to a document is to call Document.AttachBlob.
> My problem is that if I create a Document with some properties and want to 
> attache 2 Blobs : 
>  - I have to create a dedicated chain so that I have only one Http Call (then 
> 1 Tx)
>  - I have to post all content as multi-part encoded
> In the context of Android I don't really like this idea :
>  - I would lile to rely as much as possible on built-in Operations
>  - I can not easily do a multipart post (ok, I am lazy)
>  - I don't want to have a big post : If network connectivity comes and goes 
> having big post is not a good idea
> I had similar problems with Html5 Dnd and JS.
> So I added to Automation server :
>  - an API to upload Blobs one by one and associate them to a batchId
>  - run an operation Chain that will use these Blobs as input
> It works because in the Dnd use case I want to create one document per blob
> In the Andoid case I would like to :
>  - upload the Blobs and associated them to a give batchId
>  - call Create/Update
>  - have complexe Blob properties sent as parameter referece the Blobs
> dc:title = my title
> file:content = {batchId="XXX", batchFileIdx="0"}
> h2. Conflict management
> Because Android will support Offline updates it will introduce the risk of 
> dirty update.
> Here again I would like to have a standard system to handle that
> => integrate in standard Create/Update operation
> For conflix detection, my plan is to rely on an additionnal ChangeToken that 
> can be passed to the Operation.
> ??The CMIS base object-type definitions include an opaque string 
> "ChangeToken" property that a Repository MAY use for optimistic locking 
> and/or concurrency checking to ensure that user updates do not conflict??
> As a first step, we can use dc:modified even if it's not ideal.
> h3. Conflict detection
> Add a parameter ChangeToken parameter to the Create/Update operation
> => if the parameter is set, the operation should check for Diry update
> ==> in case of problem it should raise a Exception and ideally automation 
> server should send back an Http 409 Conflict return code
> h3. Conflict resolution
> Once conflict is detected, the client can choose to abandon his changes and 
> refetch from the server.
> In the other case, we should allow the client to force push :
>  - either ommit ChangeToken parameter to bypass the check
>  - use an other parameter that asks the server to do something like :
>     - save previous version as a version
>     - save client update with a comment
>     - create a task for managing merge ?
> Related ticket : https://jira.nuxeo.com/browse/NXP-6351

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to