<?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 Re: Behavior Execution onCommit and not beforeCommit in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/behavior-execution-oncommit-and-not-beforecommit/m-p/258019#M211149</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;The action service allows you to queue actions that will run post commit, it underpins the RuleService. That's probably your best bet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't think a policy will help, although you could register a TransactionListener to listen for the commit.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 17 Nov 2010 20:48:59 GMT</pubDate>
    <dc:creator>mrogers</dc:creator>
    <dc:date>2010-11-17T20:48:59Z</dc:date>
    <item>
      <title>Behavior Execution onCommit and not beforeCommit</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/behavior-execution-oncommit-and-not-beforecommit/m-p/258018#M211148</link>
      <description>HiI have a policy that detects node creation and passes the reference to another thread for processing. The problem is that the policies behaviour is executed before the transaction has finished committing and so the worker thread can't 'see' the new node in its transaction if it begins execution so</description>
      <pubDate>Wed, 17 Nov 2010 14:56:05 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/behavior-execution-oncommit-and-not-beforecommit/m-p/258018#M211148</guid>
      <dc:creator>xian</dc:creator>
      <dc:date>2010-11-17T14:56:05Z</dc:date>
    </item>
    <item>
      <title>Re: Behavior Execution onCommit and not beforeCommit</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/behavior-execution-oncommit-and-not-beforecommit/m-p/258019#M211149</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;The action service allows you to queue actions that will run post commit, it underpins the RuleService. That's probably your best bet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't think a policy will help, although you could register a TransactionListener to listen for the commit.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Nov 2010 20:48:59 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/behavior-execution-oncommit-and-not-beforecommit/m-p/258019#M211149</guid>
      <dc:creator>mrogers</dc:creator>
      <dc:date>2010-11-17T20:48:59Z</dc:date>
    </item>
    <item>
      <title>Re: Behavior Execution onCommit and not beforeCommit</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/behavior-execution-oncommit-and-not-beforecommit/m-p/258020#M211150</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I had quite a bit of help on email too and have implemented the TransactionListener. It's quite simple and works well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;You should look at the "SDK Custom Aspect" in the SDK, which uses a TransactionListenerAdapter to execute stuff in its afterCommit() method so that it is effectively executed &lt;SPAN style="text-decoration: underline;"&gt;after&lt;/SPAN&gt; the transaction has been committed.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;The working code is below. The Aggregator is just another bean that starts a thread to do the work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;package com.culturenetcymru.unc;&lt;BR /&gt;&lt;BR /&gt;import com.culturenetcymru.unc.senders.Aggregator;&lt;BR /&gt;import org.alfresco.repo.node.NodeServicePolicies;&lt;BR /&gt;import org.alfresco.repo.policy.Behaviour.NotificationFrequency;&lt;BR /&gt;import org.alfresco.repo.policy.JavaBehaviour;&lt;BR /&gt;import org.alfresco.repo.policy.PolicyComponent;&lt;BR /&gt;import org.alfresco.repo.transaction.AlfrescoTransactionSupport;&lt;BR /&gt;import org.alfresco.repo.transaction.TransactionListenerAdapter;&lt;BR /&gt;import org.alfresco.service.cmr.repository.ChildAssociationRef;&lt;BR /&gt;import org.alfresco.service.cmr.repository.NodeRef;&lt;BR /&gt;&lt;BR /&gt;/**&lt;BR /&gt; *&lt;BR /&gt; * @author Xian Stannard&lt;BR /&gt; */&lt;BR /&gt;public class SendStatePolicy extends TransactionListenerAdapter implements NodeServicePolicies.OnCreateNodePolicy {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static final String NODE_KEY = SendStatePolicy.class.getName() + ".node";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private PolicyComponent policyComponent;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private Aggregator sender;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void setPolicyComponent(PolicyComponent policyComponent) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.policyComponent = policyComponent;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void setSender(Aggregator sender) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.sender = sender;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void init() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;policyComponent.bindClassBehaviour(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeServicePolicies.OnCreateNodePolicy.QNAME,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UncModel.TYPE_STATE,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new JavaBehaviour(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"onCreateNode",&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NotificationFrequency.TRANSACTION_COMMIT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&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;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void onCreateNode(ChildAssociationRef car) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AlfrescoTransactionSupport.bindListener(this);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AlfrescoTransactionSupport.bindResource(NODE_KEY, car.getChildRef());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void afterCommit() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeRef node = AlfrescoTransactionSupport.getResource(SendStatePolicy.NODE_KEY);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(node != null)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sender.queueItem(node, false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;/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;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;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Nov 2010 14:19:41 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/behavior-execution-oncommit-and-not-beforecommit/m-p/258020#M211150</guid>
      <dc:creator>xian</dc:creator>
      <dc:date>2010-11-18T14:19:41Z</dc:date>
    </item>
  </channel>
</rss>

