<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Content update problem: url is unmodified in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/content-update-problem-url-is-unmodified/m-p/227213#M180343</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi to everyone, I've a strange problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First I introduce briefly what I'm trying to do:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to create a tool so that a workflow could write its history into its package documents (open offcice). To do this, i have a 'javascript' action (that is, a BaseProcessorExtension mapped into a javascript variable so that I could invoke that operation by a custom action or by a 'normal' org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The action is called in the right manner, an I'm able to use a sort of template filler (greatly based on jooreports) with the following syntax (inside the wf):&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;if(bpm_package.children[i].name.endsWith(".odt")){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;template = {};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;template.name = person.properties.firstName;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;template.surname = person.properties.lastName;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;template.date = new Date().toString();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ooTemplateWriter.transform(bpm_package.children[i], bpm_package.children[i], template);&lt;BR /&gt;}&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;The document produced is correct. However from the user interface the document is unmodified in its content (the mod date is updated).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Debugging I finally found the problem: the contentUrl part of property cm:content is updated (in the sense that DbNodeServiceImpl.setProperty(NodeRef nodeRef, QName qname, Serializable value) is normally called and returns without errors, but in the node browser it is not. The correct url points to a .bin file that is the correct openOffice file, but the node browser points instead to the old url, so when downloading I get the template document.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The code I'm using is similar to the one inside the OpenOffice translator:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;ContentReader reader = contentService.getReader(source.getNodeRef(), ContentModel.PROP_CONTENT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // create temporary files to convert from and to&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File tempFromFile = TempFileProvider.createTempFile("OpenOfficeContentFiller-source-", ".odt");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File tempToFile = TempFileProvider.createTempFile("OpenOfficeContentFiller-target-", ".odt");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // download the content from the source reader&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reader.getContent(tempFromFile);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream is = new FileInputStream(tempFromFile);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ZippedDocumentTemplate zippedDocumentTemplate = new ZippedDocumentTemplate(is);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream os = new FileOutputStream(tempToFile);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zippedDocumentTemplate.createDocument(m, os);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is.close();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContentWriter writer = contentService.getWriter(destinationNode.getNodeRef(), ContentModel.PROP_CONTENT, true);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // upload the temp output to the writer given us&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.putContent(tempToFile);&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Note that I'm sure that everything besides the last line is absolutely correct.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;An interesting thing might be the following: Copying the first snippet in a js file and put that in the Scrips directory, replacing every "bpm_package.children&lt;/SPAN&gt;&lt;EM&gt;" with "document" works perfectly.&lt;BR /&gt;What could it be?&lt;/EM&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 13 Jul 2009 12:41:15 GMT</pubDate>
    <dc:creator>ale_carraro</dc:creator>
    <dc:date>2009-07-13T12:41:15Z</dc:date>
    <item>
      <title>Content update problem: url is unmodified</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/content-update-problem-url-is-unmodified/m-p/227213#M180343</link>
      <description>Hi to everyone, I've a strange problem.First I introduce briefly what I'm trying to do:I'm trying to create a tool so that a workflow could write its history into its package documents (open offcice). To do this, i have a 'javascript' action (that is, a BaseProcessorExtension mapped into a javascrip</description>
      <pubDate>Mon, 13 Jul 2009 12:41:15 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/content-update-problem-url-is-unmodified/m-p/227213#M180343</guid>
      <dc:creator>ale_carraro</dc:creator>
      <dc:date>2009-07-13T12:41:15Z</dc:date>
    </item>
    <item>
      <title>Re: Content update problem: url is unmodified</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/content-update-problem-url-is-unmodified/m-p/227214#M180344</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I found something interesting. If I save the document (using the custom action: script) I have the same behavior of the workflow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Looking into the ScriptNode class, I also found something interesting: in method setContent(String) the operations are apparently the same as I followed, but at the end of the method we have: &lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;writer.putContent(content.getInputStream());&lt;BR /&gt;// update cached variables after putContent()&lt;BR /&gt;this.contentData = (ContentData) services.getNodeService().getProperty(nodeRef, this.property);&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Is it possible that I write the 'good' url into the Node but not on the ScriptNode using the writer.putContent (since I see it is explicitly set in ScriptNode), and then at the end of the Workflow task we have a sort of autosave on the ScriptNode that is overwriting the contentUrl with the old one?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2009 14:49:53 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/content-update-problem-url-is-unmodified/m-p/227214#M180344</guid>
      <dc:creator>ale_carraro</dc:creator>
      <dc:date>2009-07-13T14:49:53Z</dc:date>
    </item>
    <item>
      <title>Re: Content update problem: url is unmodified</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/content-update-problem-url-is-unmodified/m-p/227215#M180345</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I found something interesting. If I save the document (using the custom action: script) I have the same behavior of the workflow.&lt;BR /&gt;&lt;BR /&gt;Looking into the ScriptNode class, I also found something interesting: in method setContent(String) the operations are apparently the same as I followed, but at the end of the method we have: &lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;writer.putContent(content.getInputStream());&lt;BR /&gt;// update cached variables after putContent()&lt;BR /&gt;this.contentData = (ContentData) services.getNodeService().getProperty(nodeRef, this.property);&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;Is it possible that I write the 'good' url into the Node but not on the ScriptNode using the writer.putContent (since I see it is explicitly set in ScriptNode), and then at the end of the Workflow task we have a sort of autosave on the ScriptNode that is overwriting the contentUrl with the old one?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Ok, the analysis was right: the ScripNode didn't update automatically the contentUrl property, so doing manually worked. Here is the complete code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File tempFromFile = TempFileProvider.createTempFile("OpenOfficeContentFiller-source-", ".odt");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File tempToFile = TempFileProvider.createTempFile("OpenOfficeContentFiller-target-", ".odt");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // download the content from the source reader&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reader.getContent(tempFromFile);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream is = new FileInputStream(tempFromFile);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ZippedDocumentTemplate zippedDocumentTemplate = new ZippedDocumentTemplate(is);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream os = new FileOutputStream(tempToFile);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zippedDocumentTemplate.createDocument(m, os);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.close();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream is2 = new FileInputStream(tempToFile);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScriptContentData contentData = (ScriptContentData)destinationNode.getProperties().get(ContentModel.PROP_CONTENT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentData.write(is2);&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt; notice the last 2 lines&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2009 15:20:05 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/content-update-problem-url-is-unmodified/m-p/227215#M180345</guid>
      <dc:creator>ale_carraro</dc:creator>
      <dc:date>2009-07-13T15:20:05Z</dc:date>
    </item>
  </channel>
</rss>

