tag:blogger.com,1999:blog-8814445837745382002024-03-18T20:21:42.659-07:00Alfresco and stuffAnonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.comBlogger50125tag:blogger.com,1999:blog-881444583774538200.post-61638742811673526752015-02-26T13:24:00.001-08:002015-02-26T13:24:23.680-08:00Alfresco javascript debugger & spring-loadedsometimes these can conflict if you configure the spring-loaded wrong or use ... so if the javascript debugger does not open, try to removing the spring-loaded in the JVM args Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-82658348919518332582015-02-26T13:22:00.000-08:002015-02-26T13:23:03.378-08:00Alfresco - reusing printed xpaths in javascript consoleI had to hand export import via javascript console some custom node properties (categories) and association, which was done via xpaths, because the nodeRefs store in source system did not match the targets. But i found out that i had to use this little encode function to make it work:<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">function enc(nonenc) {
<br /> return jsonUtils.encodeJSONString(nonenc)</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"> .replace('\\/','/')</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"> .replace('\\','\\\\');
<br />}</span></span><br />
<br />
It encodes the international characters to escaped UTF like '\u00F8' instead of 'ΓΈ' and removes the "\/" and escapes backslashes.<br />
<br />
Used it in export:<br />
<span style="font-family: "Courier New",Courier,monospace;"> var xpath = enc(node.qnamePath);</span><br />
<br />
And in import:<br />
<span style="font-family: "Courier New",Courier,monospace;"> var nodes = search.xpathSearch(xpath);</span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-18548664734574541552015-01-29T12:26:00.002-08:002015-01-29T12:32:52.028-08:00Compile Tomcat native (with all enabled) for Alfresco on Ubuntu 14.04<b>First add some need packages</b><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">sudo apt-get install fakeroot make gcc openssl libssl-dev uuid uuid-dev libsctp1 libsctp-dev</span></span><br />
<br />
<b>Second compile APR</b><br />
#download site http://apr.apache.org/<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">wget http://ftp.download-by.net/apache/apr/apr-1.5.1.tar.gz<br />tar xzvf apr-1.5.1.tar.gz<br />cd apr-1.5.1/<br />./configure --enable-nonportable-atomics --enable-threads --enable-posix-shm --enable-allocator-uses-mmap<br />make<br />make test<br />sudo make install</span></span><br />
<br />
<b>Third compile Tomcat native</b><br />
#download http://tomcat.apache.org/download-native.cgi<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">wget http://ftp.download-by.net/apache/tomcat/tomcat-connectors/native/1.1.32/source/tomcat-native-1.1.32-src.tar.gz<br />tar xzvf tomcat-native-1.1.32-src.tar.gz<br />cd tomcat-native-1.1.32-src/jni/native<br />./configure --enable-ocsp --with-apr=/usr/local/apr --with-java-home=/usr/lib/jvm/java-7-openjdk-amd64<br />make<br />sudo make install</span></span><br />
<br />
<span style="font-family: inherit;"><b>Fourth edit start script</b></span><br />
<span style="font-family: inherit;">Add this to you alfresco/catalina</span>. For Loftux script in /etc/init/alfresco, for Alfresco installer in tomcat/bin/setenv.sh<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'</span><br />
<br />
Oberve in Alfresco.log or catalina.out something like:<br />
<span style="font-size: xx-small;"><span style="font-family: "Courier New",Courier,monospace;">Jan 29, 2015 9:12:11 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent<br /><b>INFO: Loaded APR based Apache Tomcat Native library 1.1.32 using APR version 1.5.1.</b><br />Jan 29, 2015 9:12:11 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent<br /><b>INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]</b>.<br />Jan 29, 2015 9:12:11 PM org.apache.catalina.core.AprLifecycleListener initializeSSL<br /><b>INFO: OpenSSL successfully initialized (OpenSSL 1.0.1f 6 Jan 2014)</b></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;">Note: </span></span><span style="font-size: xx-small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><span style="font-family: inherit;">accept filters will only work on BSD </span></span><b><br /></b></span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-38129954608326141752015-01-28T11:19:00.001-08:002015-01-28T11:19:53.647-08:00Huge datalists in Alfresco, yes you can (now)Novem-IT, novem-it.dk presentation of enhancement to extended datalist module allowing huge datalists in excess of 100000 <a class="twitter-timeline-link" data-expanded-url="http://youtu.be/gzvTibbThpo?a" dir="ltr" href="http://t.co/s3It9zbjkE" rel="nofollow" target="_blank" title="http://youtu.be/gzvTibbThpo?a"><span class="tco-ellipsis"></span><span class="invisible">http://</span><span class="js-display-url">youtu.be/gzvTibbThpo?a</span></a><br />
<br />
<span class="js-display-url">We do not know where the limit is .. The enhancement of the search could be a candidate for improving the search interface.</span><br />
<span class="js-display-url"><br /></span>
<span class="js-display-url">The magic is really an implementation of a count-query, that is the ability to perform an unlimited search returning no rows/results, but the number of matching nodes found (not returned nodes). Since we then know the total size of the query, the real data query need only do skip and fetch a single page (~50 nodes). SOLR4 performs super doing this, returning page results for given page in 0,4 seconds for webscript response with datalist size of 140000! </span><br />
<span class="js-display-url"><br /></span>
<span class="js-display-url"><br /></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-37395028686966884572015-01-22T23:24:00.001-08:002015-01-22T23:24:18.841-08:00Performance of new Aikau DocumentLibrary (5.0.c version)The new Aikau 'framework' is very promising, I tested the new Documentlibrary, and found it to be very functional with some functions not working and with some performance problems on the client-side (approx. 2x on my machine), due to many dojo scope initializations (hitch function)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJO9ltnaS4eeLjVdkZPIB8ReGeekOeiTKVUpxbtwNc5AKjNjTbtkm39Q3VDRF2fCtuTdfUvqkJ2DpsxpbhjHzSL-I1HEg5wpDtvyzLQzvpDO6CnEDcJ3YEY8IKYJF1h8qMtyudHYcGpr24/s1600/Alfresco-newDocLib_hitch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJO9ltnaS4eeLjVdkZPIB8ReGeekOeiTKVUpxbtwNc5AKjNjTbtkm39Q3VDRF2fCtuTdfUvqkJ2DpsxpbhjHzSL-I1HEg5wpDtvyzLQzvpDO6CnEDcJ3YEY8IKYJF1h8qMtyudHYcGpr24/s1600/Alfresco-newDocLib_hitch.png" height="276" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
New Feautures seem to be:<br />
- smother look and feel and details in the presentation making it nicer to the eye<br />
- paging is now added on top<br />
<br />
<br />Performance wise, here is the main cause:<br />
.cache["dojo/_base/lang"]/</a.hitch<br />
<br />
Calls: 3838 <br />
Procent: 81.57% <br />
Time: 58090.815ms <br />
<br />
This is probably improved in Alfresco HEAD. A resolve could be to make bigger components / less reuse?<br />
<br />
<br />
<table cellpadding="0" cellspacing="0" class="profileTable " role="grid" style="width: 100%px;"><tbody class="profileTbody " role="presentation">
<tr class="focusRow profileRow subFocusRow " role="row"><td class="profileCell " role="presentation"><br /></td><td class="profileCell " role="presentation"><br /></td><td class="profileCell " role="presentation"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td><td class="a11yFocus profileCell " role="gridcell"><br /></td></tr>
</tbody></table>
Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-89573012897716473702015-01-19T12:01:00.001-08:002015-01-19T12:01:25.360-08:00contributed to extended datalists community moduleas part of work for a customer we have done work on the https://github.com/deas/fme-alfresco-extdl extedned datalists module adding:<br />
<ul>
<li>Paging</li>
<li>sorting across filter changes</li>
<li>fix filters not working</li>
<li>performance enhanced</li>
</ul>
Tested on Alfresco community 4.2.f<br />
<br />
This way <a href="http://www.novem-it.dk/" target="_blank">Novem-IT</a> and our customer can contribute and gain from common future development on the module.<br />
<br />
Work was done on this fork https://github.com/tass01024/fme-alfresco-extdl and awaiting a pull request to the main site.Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-27690947415033680302015-01-19T11:37:00.000-08:002015-01-19T11:48:02.841-08:00started at Novem-ITThanks for a great time to Redpill-Linpro http://www.redpill-linpro.com, welcome to new experiences at Novem-IT http://www.novem-it.dk. Will continue work on Alfresco & Mule ESB, if the world does not pull me away :)Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-11025330870448640922014-10-30T22:42:00.001-07:002014-10-30T22:42:24.605-07:00Reindex in SOLR4 in Alfresco In Alfresco 5.0.b har been introduced which has a different (better!) SOLR folder layout. It is slightly different, so to reindex a SOLR4 instance in Alfresco 5.0.b. You should delete or move alf_data/solr4/*. This takes care of cached content nodes, models, and index.<br />
<b><br /></b>
<b>SOLR data/indexes</b><br />
<ALF_DATA>/solr4 or normally <ALFRESCO_HOME>/alf_data/solr4<br />
<br />
<br />
BTW <b>SOLR4 configuration</b> is now in alfresco root <ALFRESCO_HOME>/solr4Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-78216779339104687802014-10-22T03:36:00.001-07:002014-10-22T05:48:13.977-07:00Faceted forms - form based on node state (metadata)A nice thing about Alfresco Share is that, you get a lot of functionality for free and it is very adaptable. But often you want more client-side adaptability and the first think that comes into mind is client-side Javascript. To avoid client-side javascript customization on Share I made a special form evaluator, which gives you the power to have different forms for the same node type, depending on the state/metadata values.<br />
<br />
Normally you define a node type form for view and edit of existing nodes:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"> <config evaluator="node-type" condition="my:nodeType"> ...</span><br />
<br />
This is one time solution for alle nodes of this type and lifecycle. To use a facetted approach, you could now add form configuration depending on a metadata property, like:<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><config evaluator="facet-node-type" condition="my:nodeType,my:state=open"> </span></span><br />
<br />
and another<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><config evaluator="facet-node-type" condition="my:nodeType,my:state=closed"></span></span><br />
<br />
This means (given this facet-node-type exists and works :) you should have a resulting form configuration of the 'node-type' and one 'facet-node-type' given your node either have state 'open' or 'closed'<br />
<br />
<b><i>This evaluation is done Share-server-side, so the state (my:state) should preferable be read-only in the resulting forms.</i></b> <br />
<br />
In my example we could have a text field for an 'open' node and none for a 'closed' on.<br />
<br />
To make this work we need to define the 'facet-node-type' in the form-config xml<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><alfresco-config><br /> <plug-ins><br /> <evaluators><br /> <evaluator id="facet-node-type" class="com.redpill-linpro.alfresco.web.config.forms.FacetNodeTypeEvaluator" /><br /> </evaluators><br /> </plug-ins></span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">...</span></span><br />
<br />
and mainly the java code Source <a href="https://drive.google.com/file/d/0B_XaGyKEu3txdms1MTRUenA1TnM/view?usp=sharing" target="_blank">FacetNodeTypeEvaluator.java</a><br />
<br />
Finally lets show the full 'condition' definition available:<br />
<br />
General format<br />
<span style="font-family: "Courier New",Courier,monospace;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace;">condition="<node-type>,<property-evals>"</span><br />
<br />
Where <node-type> is the prefix-nodetype like in the standard node-type evaluator ...<br />
<br />
Where <property-evals> is of the format:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"> <property-eval>[,<property-eval>]*</span><br />
<br />
And <property-eval> is of the format<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><property-name>=<property-value>[|<property-value>]*</span><br />
<br />
<br />
So I could write the following to select only 'my:node-type' nodes with 'my:state' 'open' or 'closed' and 'my:color' set to 'blue'<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">condition="my:nodeType,my:state=open|closed,my:color=blue"</span></span><br />
<br />
This can be used to have a form definition where one-large common form (section) is defined and various small modifications of this is in facet-node-type sections depending on the metadata of the node.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-48586302539796137242014-09-19T03:13:00.003-07:002014-09-19T03:15:03.671-07:00Maven problems in 4.2.e-f and 4.20I you need access to some java classes in a Alfresco Maven project it might give you problems with an artifact which did not get properly inserted into the maven.alfresco.com repository. The issue is also described in various issues, among others: https://issues.alfresco.com/jira/browse/MNT-10118<br />
<br />
I solved access to <b><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">alfresco-repository,</span></span><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> alfresco-web-framework-commons, </span></span><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">alfresco-remote-api & </span></span></b><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><b>alfresco-web-client</b> </span></span><br />
<br />
<span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: x-small;"><span style="font-size: small;">Using these dependencies in my Alfresco repo maven pom, where the parent pom used the alfresco platform.</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><br /></span></span>
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <dependencies><br /> <dependency><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco</artifactId><br /> <type>war</type><br /> </dependency><br /> <dependency><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco-repository</artifactId><br /> <scope>provided</scope><br /> <exclusions><br /> <exclusion><br /> <groupId>org.alfresco</groupId><br /> <artifactId>alfresco-web-framework-commons</artifactId><br /> </exclusion><br /> </exclusions><br /> </dependency><br /> <dependency><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco-web-framework-commons</artifactId><br /> <scope>provided</scope><br /> <version>${alfresco.version}</version><br /> </dependency><br /> <br /> <dependency><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco-remote-api</artifactId><br /> <scope>provided</scope><br /> </dependency><br /> <dependency><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco-web-client</artifactId><br /> <scope>provided</scope><br /> <exclusions><br /> <exclusion><br /> <groupId>org.alfresco</groupId><br /> <artifactId>alfresco-web-framework-commons</artifactId><br /> </exclusion><br /> </exclusions><br /> </dependency></span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-84158099873408956122014-09-08T00:38:00.003-07:002014-09-08T00:38:23.730-07:00Resolving jobs kept in 'Sync Pending' in Alfresco Cloud syncIn Alfresco you can sync your on-premise documents to Alfresco Cloud, given you have a sync-enabled Alfresco Enterprise license and a Alfresco Cloud login/network.<br />
<br />
The Cloud sync (on premise) has a pull and a push job which pulls fron or pushes to the cloud. This works out of the box and in newer version 4.2.x. Cloud sync is only for one server ('PRODUCTION').<br />
<br />
Example for cloud sync enabling settings:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><b>system.serverMode=PRODUCTION</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b>syncService.mode=ON_PREMISE</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b>sync.pushJob.enabled=true</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b>sync.pullJob.enabled=true</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: inherit;">Troubleshooting the sync is described here: https://docs.alfresco.com/4.2/concepts/cloud_sync_troubleshooting.html</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">A detail which I discovered the hard-way is that the push job is dependent on the audit-system. It uses the audit messages to findout if anything has happen, since last sync (no audit -> do not run). Therefore, if you disable the audit trail, the push-job never runs. You will not see anything in the logs.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">So <b>remove any 'audit.enabled=false'</b> if you have sync-jobs kept in pending state on your on-premise installation. Audit is enabled OOTB, but alternatively set the last line in your alfresco-global.properties to <b>audit.enable=true</b></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-6233121109174622412014-08-12T00:25:00.000-07:002014-08-12T01:39:10.339-07:00Using a bean instanciated TaskListener in an Activiti WorkflowIn Alfresco (ONE ~ ECM) Activiti you can use a Java TaskListener, which has the following advantages:<br />
- Is Java, preference for some, is more powerful in Alfresco<br />
- Compared to inline Activiti JS script, it is easier to reuse<br />
- Can be changed on running workflows (bug fixes etc.)<br />
- Can be reloaded dynamically using spring-loaded or JRebel<br />
<br />
First you must create your TaskListener (different types exist):<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">public class StartTaskCreate extends TaskCreateListener {<br /> @Override<br /> public void notify(DelegateTask task) {<br /> // ... I can walk!</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> // you stuff goes here ...</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> super.notify(task); </span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> }</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">}</span></span><br />
<br />
Then yoiu must create a bean definition (using bean parent to init super class):<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <bean id="<i><b>my.StartTaskCreate</b></i>"<br /> class="my.StartTaskCreate"<br /> parent="activitiCreateTaskListener"/></span></span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> </span></span><span style="font-family: inherit;"><span style="font-size: small;">Then you must let Activiti know about it (put into </span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">activitiBeanRegistry map</span></span>):</span></span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><bean id="my.activitiBeanRegistry" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="activitiBeanRegistry"><br /> <property name="targetObject"><br /> <ref bean="activitiBeanRegistry" /><br /> </property><br /> <property name="targetMethod" value="put" /><br /> <property name="arguments"></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <list><br /> <value><b>StartTaskCreate</b></value><br /> <ref bean="<i><b>my.StartTaskCreate</b></i>" /><br /> </list><br /> </property><br /> </bean> </span></span><br />
<br />
I use method invoking via Spring to add to existing bean-map, this makes the solution deployable as AMP (not tomcat/shared/..) and in a solution with many extensions more robust. Also Alfresco can change the orginal definition somewhat without this breaking, robust across Alfresco versions!<br />
<br />
Then use it!<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><process ...</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">...</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><startEvent id="alfrescoStartevent1" name="Start" activiti:formKey="..."><br /> <extensionElements><br /> <activiti:taskListener event="create" delegateExpression="${<b>StartTaskCreate</b>}"/></span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">...</span></span><br />
<br />
Observe the key in <span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">activitiBeanRegistry<span style="font-family: inherit;"> <span style="font-size: small;">is the word to use in the workflow delegate expression ~</span> </span></span></span></span></span><span style="font-family: inherit;"><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><span style="font-family: inherit;"><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">delegateExpression="${<b>StartTaskCreate</b>}"</span></span> </span></span></span></span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-11602224196184156942014-08-04T04:45:00.004-07:002014-08-12T00:27:47.718-07:00Override Alfresco Share action orderTo override the action order in documentlibrary extensions, your can do so by defining the action group with new index for action.<br />
<br />
EX:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><actionGroups> </span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <actionGroup id="document-browse"><br /> <action index="XYZ" id="document-move-to" /><br />...</span></span><br />
<br />
An important rule is use three digits, always three digits! So to move an action up in the top (lower than index 100), so it will become visible document browsing use prefixes of zero (0) ~I think it probably does a string compare somewhere, would explain the behaviour.<br />
<br />
EX:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><actionGroups></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <actionGroup id="document-browse"><br /> <action index="099" id="document-move-to" /></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">...</span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-75053476861352269632014-06-25T02:30:00.000-07:002014-06-25T02:30:00.611-07:00Alfresco JS webscripts - no comments before Errors like:<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">Caused by: org.mozilla.javascript.EvaluatorException: syntax error (file:/opt/alfresco/tomcat-share/webapps/share/WEB-INF/classes/alfresco/web-extension/site-webscripts/dk/redpill-linpro/alfresco/share/header/share-header.get.js#5)<br /> at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:109)</span></span><br />
<br />
Can be caused by comments in js-controller file before <import> statements, EX:<br />
-------------generating error--------<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">//overridden</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><import resource="classpath:/alfresco/web-extension/site-webscripts/dk/redpill-linpro/alfresco/share/imports/share-header.lib.js"></span></span><br />
...<br />-------------no error --------<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><import resource="classpath:/alfresco/web-extension/site-webscripts/dk/redpill-linpro/alfresco/share/imports/share-header.lib.js"></span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">//overridden</span></span> <br />
...<br />
<br />
<br />
Silly but true Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-13562912304422083442014-06-16T03:04:00.001-07:002014-06-16T03:04:48.836-07:00... renaming users<span style="font-size: small;"><span style="font-family: inherit;">Trying to find out how to get the activities feed and activities dashlets working for AD sync'ed mixed-case usernames ... I found some help in the property: </span></span><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><span style="font-weight: normal;">user.name.caseSensitive</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;">Setting it to true works for activity feeds, if you set it form the beginning, but not if on a running system ...</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">After playing with the alfresco-global.properties, i found AD sync'ed some users were 'moved'. EX: from userName 'LULA' to 'LULA80cb1574-7b9b-4cfb-b82f-f0c72a5ea346'. All authoritive containers were changed.</span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;">This happened because Alfresco was set with the properties:</span></span><br />
<h1 id="summary-val">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><span style="font-weight: normal;">user.name.caseSensitive=false</span></span></span></h1>
<h1 id="summary-val">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-weight: normal;">I changed it back, but damage was done! </span></span></span></h1>
<h1 id="summary-val">
<b><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-family: inherit;"><span style="font-weight: normal;"></span>And
when the user with AD-username in uppercase, EX: 'LULA', alfresco
wanted to reuse it for the new username (in a different case) and
renamed it.</span></span></span></b></h1>
<h1 id="summary-val">
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-weight: normal;">The user was not deleted because of property:</span></span></span></h1>
<h1 id="summary-val">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><span style="font-weight: normal;">synchronization.allowDeletions=false</span></span></span></h1>
<span style="font-size: small;"><span style="font-family: inherit;"></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"> Using AE 4.1.1.3 i decided to try and recover the users changed (only ones that tryed logging in). I found out the users with changed usernames still had the correct zones (synchronization subsystem). </span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">Lets try to rename the user. First observation was javascript console cannot change the userName (permission denied), probably need to be system user, so I found the rename User tool.</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">- stop Alfresco</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">- comment out vti module contexts: </span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">
tomcat</span></span><span style="font-size: small;"><span style="font-family: inherit;">/webapps/alfresco/WEB-INF/classes/alfresco/module/org.alfresco.module.vti/module-context.xml file:</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;">
</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;">EX:</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;">
</span></span><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><beans><br />
<!-- <import resource="classpath:alfresco/module/org.alfresco.module.vti/context/*-context.xml"/> --><br />
</beans></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">- go into 'tomcat/webapps/alfresco/WEB-INF'</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">- run RenameTool:</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">java -XX:MaxPermSize=512m -classpath ../../../lib/*:../../../endorsed/*:lib/*:classes:classes/alfresco/module:classes/alfresco/module/org.alfresco.module.vti:../../../shared/classes org.alfresco.tools.RenameUser -user admin -pwd admin LULA80cb1574-7b9b-4cfb-b82f-f0c72a5ea346 LULA -verbose</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">- Reenable VTI</span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;">- start Alfresco</span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;">- Change in Javascript console (installed?) cm_owner on user:</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">var person = people.getPerson("LULA");<br />person.properties.owner="LULA";<br />person.save();</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: inherit;">- site membership should be restored :)</span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;">- Now find out which AD groups was removed :(</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com1tag:blogger.com,1999:blog-881444583774538200.post-47015874287191903782014-06-13T02:59:00.002-07:002014-06-13T05:03:21.917-07:00No customize dashboard after applying custom presetsIn Alfresco Share 4.2.x menu has changed and some of this is implemented share-header.get.js and share-header.lib.js.<br />
<br />
When making a custom preset for a site 'type', normally you would give it a custom title and titleId. This causes the customize Dashboard option to disappear, there fore you need to modify line 1531 (form 4.2.2) to include your custom dashboard title id:<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">share-header.lib.js:</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">...</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"> // If on the dashboard then add the customize dashboard option...</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"> if (page.titleId == "page.siteDashboard.title" || page.titleId == "page.meeting_workspace.title")<br /> {</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">...</span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-12865660712499420512014-04-01T01:50:00.000-07:002014-04-01T01:50:16.511-07:00Upgrading postgresql database from Alfresco installerI had the pleasure to battle a little with postgresql installed by Alfresco installers. What I found out is that Alfresco tends to change the software; mainly the location of files, scripts and used libraries ... they probably have good reasons to do this, to ensure consistency across installations, but this makes it hard to follow standard software procedures ...<br />
<br />
For the postgresql installation, what you need to know is that the original postgresql binary are renamed/postfixed with '.bin', EX: pg_ctl -> pg_ctl.bin ... and a new script file has been added called pg_ctl, which calles the original and ensures its environment.<br />
<br />
After using some time on that, I found two ways to tackle that:<br />
- pg_upgrade, which needs clean version, so compile clean versions corresponding to the new and old postgresqls following this guide, using http://www.openscg.com/2013/04/how-to-compile-postgresql-9-2-x-from-source-on-ubuntu-12-x/ - however setting different prefixes in configure, EX: --prefix /usr/local/postgresql-9.2.4<br />
<br />
- use the guide here https://www.fossoffice.com/blog/2012/12/13/alfresco-community-4-0-e-to-4-2-c-upgrade-procedure/ - I skipped the lucene part switch<br />
<br />
I ended up doing the latter, because i ran into the xlog problems with a seemingly dirty db, like: http://www.brentmc79.com/posts/psql-could-not-connect-oh-fuck-you<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-26769741183732506362014-02-26T01:14:00.002-08:002014-02-26T01:14:42.073-08:00Monkey patching Alfresco Repo JS webscriptWhile Alfresco Share is now has many methods of overloading, overriding, changing, adding, removing functionality. Alfresco Repository have few, and a common pattern for larger solution is to replace existing files fully overriding functionality. While this works it is hard to maintain.<br />
<br />
1) Replace file by overriding, hard to maintain, 'cannot' be undone<br />
2) Override URL, by making your own Webscript and specifying the same URL, this is better, but require files, and it does not work for *.lib.js files<br />
- for *.lib.js (imported files), you can override all the webscripts that use that lib-file, and in the overload import your own, thus no file is overridden ... but for some lib-files this means too much work for the gain<br />
<br />
3) Change Share/Frontend code to use a different Repo-webscript (your own), then provide you own webscript. This can in many cases be done with share-configuration.<br />
<br />
<br />
Future will probably improve this:<br />
http://blogs.alfresco.com/wp/developer/2012/05/23/webscript-extensibility-on-the-alfresco-repository/<br />
<br />
With approach 2 & 3 you will still have the original JS code in the Alfresco webapp, and this fact can be used to monkey-path the file, minimizing the amount of code to-be-written, increase reuse and maintainability.<br />
<br />
Example, standard Repo webscript pattern:<br />
<br />
<b>A.get.js</b><br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><#import ../B.lib.js > </span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">function C() { ... };</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">function main() { ... };</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">main();</span></span><br />
<br />
<br />
Monkey- patch file:<br />
<br />
<b>D.get.js</b><br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><#import /full-path-to-A/A.lib.js > </span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">function C() { .... monkey-patch-with-your-code... };</span></span><br />
<br />
<br />
Now D.get.js will have the same functionality as A.get.js, but with your change ...<br />
<br />
<br />
BUT the resulting file will have two C-functions! Yes, but javascript only runs the last declared ... so it works.<br />
<br />
In the Javascrip debugger:<br />
<br />
<br />
<br />
<b>D.get.js - @runtime</b><br />
<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><#import ../B.lib.js > </span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">function C() { ... };</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">function main() { ... };</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">main();</span></span><br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">function C() { .... monkey-patch-with-your-code... };</span></span><br />
<br />
<br />
See this discussion: http://stackoverflow.com/questions/15810249/which-and-how-javascript-function-will-be-called-if-we-have-2-function-declarati<br />
<br />Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-7395080768190098412014-01-10T05:47:00.002-08:002014-01-10T05:47:53.712-08:00Alfresco Share project - Maven setup with Java code<span style="font-family: inherit;"><span style="font-size: x-small;">If you need a Alfresco Share - Maven pom with support for java code (ex.
BaseEvaluators) ... You need this workaround for Alfresco Enterprise
4.2.0 in your <dependencies>:</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> </span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Courier New",Courier,monospace;"><dependencies><br /> <dependency><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco-share</artifactId><br /> <version>${alfresco.version}</version><br /> <scope>provided</scope><br /> <exclusions><br /> <exclusion><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco-web-framework-commons</artifactId><br /> </exclusion><br /> </exclusions><br /> </dependency><br /> <dependency><br /> <!-- work around for error in POM, should be fixed in 4.2.1 <br /> https://issues.alfresco.com/jira/browse/MNT-10118 --><br /> <groupId>${alfresco.groupId}</groupId><br /> <artifactId>alfresco-web-framework-commons</artifactId><br /> <version>${alfresco.version}</version><br /> <scope>system</scope><br /> <systemPath>${tomcat.home}/webapps/share/WEB-INF/lib/alfresco-web-framework-commons-${alfresco.version}.jar</systemPath><br /> </dependency></span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Courier New",Courier,monospace;">...</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Courier New",Courier,monospace;"> </dependencies></span></span><br />
<br />
<br />
<span style="font-size: xx-small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><span style="font-family: inherit;">and now you can start coding!</span></span> </span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-34941991358593668162013-10-15T06:56:00.003-07:002013-10-15T06:56:50.776-07:00Mule - piggybacking SOAP calls in flowsI needed to handle session Cookie between connection calls and later data calls all in SOAP. I did this by using the same global HTTP connector with cookie enabled and using it on all the endpoints.<br />
<br />
The connection call was in the first flow which then called the next ... that solves the Session handling without any coding, but i got mimetype/transformer exception on the 'return' / response path.<br />
<br />
Errors like: <br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">Could not find a transformer to transform "SimpleDataType{type=org.apache.cxf.staxutils.DepthXMLStreamReader, mimeType='text/xml'}" to "SimpleDataType{type=java.io.InputStream, mimeType='*/*'}".</span></span> <br />
<br />
The easy solution turned out to be saving the first SOAP response, calling the data flows with their own SOAP, and after the flow call, restoring the SOAP response.<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">...</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><set-variable variableName="connectionUpPayload" value="#[message.payload]" doc:name="save response"/><br /><flow-ref name="GetAllProperties" doc:name="GetAllProperties"/><br /><set-payload value="#[flowVars['connectionUpPayload']]" doc:name="Set Payload"/></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">... </span></span>Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-77500108637343238182013-10-09T12:25:00.000-07:002013-10-09T13:12:50.044-07:00Mule - Sharepoint ConnectorI have been working a little with Mule ESB - Enterprise Edition. I needed to get a Sharepoint (duh - Imperial Star Battlecruisers), so I was happy to see the Mule Sharepoint Connector. The Connector implementents NTLMv2, so it can talk to newer Sharepoint versions. After getting past the first small gotchas (remember slash af URL, URL without the '_vti_bin' stuff, ListName is the list name & view name is the GUID) - the list was received as an SOAP Java object - GetListItemsResult.<br />
<br />
Now that was perfect except the M$ SOAP service limits the result to 100 rows, if you do not specify a rowlimit, and i could not get that to work on the Sharepoint Connector component, so i 'just' made a java component from trial and error reverse engineering the component using the Java classes:<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><br /></span></span>
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><span style="font-size: xx-small;">import org.mule.modules.sharepoint.SharepointConnector;<br />import org.mule.modules.sharepoint.microsoft.lists.GetListItems;<br />import org.mule.modules.sharepoint.microsoft.lists.GetListItemsResponse.GetListItemsResult;</span></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">....</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">SharepointConnector sc = new org.mule.modules.sharepoint.SharepointConnector();<br /> sc.connect("DOMAIN\\USERNAME", "PASSWORD", "URL_W_SLASH");</span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">org.mule.modules.sharepoint.microsoft.lists.GetListItems request = <br /> new org.mule.modules.sharepoint.microsoft.lists.GetListItems();<br />request.setListName("LISTNAME");<br />request.setRowLimit("" + 0);<br />request.setViewName("VIEW_GUID");<br />GetListItemsResult result = sc.listGetListItems(request);</span></span><br />
<br />
Replace UPPERCASE names with real values. You can use the GetListAndView to get the GUIDs <br />
<br />
Other ways of getting this to work is http://dmdaa.wordpress.com/2012/10/10/ntlm-v2-support-for-java-web-service-clients-wsimport-or-axis2-stubs-for-sharepoint-server/<br />
<br />
However I did not succeed with that approach.<br />
<br />Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-40082865712506048052013-09-12T10:49:00.001-07:002013-09-12T10:49:23.774-07:00Upgraded to Alfresco 4.2.d and lost your application menu bar ...It might be because of an share-config override like:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <config evaluator="string-compare" condition="WebFramework" replace="true"></span></span><br />
<br />
Try removing <span style="font-family: "Courier New",Courier,monospace;">replace="true"</span> and if you need to replace, your should look up surf.xml to add all the new definitions.Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-65819707878840826032013-09-04T12:38:00.001-07:002013-09-11T02:42:59.835-07:00Preview, index, thumbnail SVG in AlfrescoIn modern browsers SVG is directly supported, so previewing is a smaller task. Ne add-on for Alfresco with enhanced SVG support for previewing, thumbnailing and indexing (search)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXe3p4wNcPNMZeMGepcE0xa4JRmPpe3Da0CAu4QuIWbJ8LsPv07p8BKOtRU8JEjQ9SZIwcZFi8T5pSLmPnry8Dt5tvFUo27skjsK1iL3M_vfMK2o65v582phzn83niQ0CkcnUo6XUDuGUX/s1600/svg-preview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXe3p4wNcPNMZeMGepcE0xa4JRmPpe3Da0CAu4QuIWbJ8LsPv07p8BKOtRU8JEjQ9SZIwcZFi8T5pSLmPnry8Dt5tvFUo27skjsK1iL3M_vfMK2o65v582phzn83niQ0CkcnUo6XUDuGUX/s320/svg-preview.png" width="320" /></a></div>
<br />
See more:<br />
https://addons.alfresco.com/addons/enhanced-svg-support<br />
http://code.google.com/p/alfresco-svg/ Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-49325408415362435532013-08-28T03:49:00.002-07:002013-08-28T03:49:23.070-07:00Alfresco Presence in Share I made a new Alfresco Add-on which has to modes of presence:<br />
- MS Lync via local MS client (using activeX)<br />
- Alfreco local presence for presence (Share in browser)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ttbCWy4Fb_oAPmZutATnKmDYTAGaJ_MS07Nx0nbJtwxnE9pSjX8BtOZYFV2gak__M_RpH582O13lKaLp6DH8O_qvQnmpjOWXN2OI-64k7fGxwD9euAmc20O21e_Jde3w-EaENQMZNXct/s1600/presence-in-site-members-dashlet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ttbCWy4Fb_oAPmZutATnKmDYTAGaJ_MS07Nx0nbJtwxnE9pSjX8BtOZYFV2gak__M_RpH582O13lKaLp6DH8O_qvQnmpjOWXN2OI-64k7fGxwD9euAmc20O21e_Jde3w-EaENQMZNXct/s320/presence-in-site-members-dashlet.png" width="286" /></a></div>
Alfresco add-on page: http://addons.alfresco.com/addons/presence<br />
Code page: http://code.google.com/p/alfresco-presence/<br />
<br />Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0tag:blogger.com,1999:blog-881444583774538200.post-49791045352199635512013-06-06T05:21:00.001-07:002013-06-06T05:21:30.707-07:00Removing sharepoint / VTI lock - aspect cm:lockableInstall JavascriptConsole or run this as a script (might need a modification adding a search statement)<br />
<br />
Use script (replacing <your username> with the real one) on document-node by invoking the doclib action for javascriptconsole:<br />
<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">//remove cm:lockable</span><br />
<span style="font-family: "Courier New",Courier,monospace;">document.properties["cm:lockOwner"]="<your username>";<br />document.removeAspect("cm:lockable");</span><br />
<span style="font-family: "Courier New",Courier,monospace;">//residual values<br />delete document.properties["webdav:opaquelocktoken"];<br />
delete document.properties["webdav:lockScope"];<br />delete document.properties["webdav:lockDepth"];<br />document.save();</span><br />
<br />
Anonymoushttp://www.blogger.com/profile/05670456804527066796noreply@blogger.com0