<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.logicaldoc.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.29.232.99</id>
	<title>LogicalDOC Community Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.logicaldoc.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.29.232.99"/>
	<link rel="alternate" type="text/html" href="http://wiki.logicaldoc.com/wiki/Special:Contributions/87.29.232.99"/>
	<updated>2026-04-06T09:09:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://wiki.logicaldoc.com/wiki/index.php?title=Immutable_documents&amp;diff=162</id>
		<title>Immutable documents</title>
		<link rel="alternate" type="text/html" href="http://wiki.logicaldoc.com/wiki/index.php?title=Immutable_documents&amp;diff=162"/>
		<updated>2008-12-04T11:17:18Z</updated>

		<summary type="html">&lt;p&gt;87.29.232.99: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are cases where a document should be made not modifiable, for example, if the document is very important and should not be lost or canceled for any reason. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; An immutable document can not be altered so: &lt;br /&gt;
&lt;br /&gt;
*it&#039;s metadata are not modifiable&lt;br /&gt;
*it cannot be moved to another folder&lt;br /&gt;
*it cannot be restored from the GUI&lt;br /&gt;
*only accredited users can mark the document as immutable.&lt;br /&gt;
*on each folder the Administrator can give documents immutability permission to a specific groups of users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We implement this feature with a boolean flag on each document that determines if it is immutable or not. In the GUI, immutable documents are recognizable by an icon and a special mark.&lt;/div&gt;</summary>
		<author><name>87.29.232.99</name></author>
	</entry>
	<entry>
		<id>http://wiki.logicaldoc.com/wiki/index.php?title=Document_Pre/Post_Processing&amp;diff=150</id>
		<title>Document Pre/Post Processing</title>
		<link rel="alternate" type="text/html" href="http://wiki.logicaldoc.com/wiki/index.php?title=Document_Pre/Post_Processing&amp;diff=150"/>
		<updated>2008-11-25T13:58:11Z</updated>

		<summary type="html">&lt;p&gt;87.29.232.99: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some analisys sessions in various organizations where LogicalDOC was adopted, reported that it would be useful to add some kind of logic during the document storage procedure.&amp;lt;br&amp;gt;&lt;br /&gt;
For example a common need is to have a customizable numeration of inserted documents.&lt;br /&gt;
The idea is to define a new extension point in the core plug-in that can be extended by custom plug-ins in order to provide specific logic before and after a document is saved into the database.&lt;br /&gt;
&lt;br /&gt;
Basically if a client wants to interact with the store procedure it must implement an interface like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
public interface DocumentListener {&lt;br /&gt;
	/**&lt;br /&gt;
	 * Called before a document is stored in the database&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param document The document to be stored&lt;br /&gt;
	 * @param dictionary Dictionary of the execution pipeline&lt;br /&gt;
	 */&lt;br /&gt;
	public void beforeStore(Document document, Map&amp;lt;String, Object&amp;gt; dictionary);&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Called after a document is stored in the database&lt;br /&gt;
	 * &lt;br /&gt;
	 * @param document The document to be stored&lt;br /&gt;
	 * @param dictionary Dictionary of the execution pipeline&lt;br /&gt;
	 */&lt;br /&gt;
	public void afterStore(Document document, Map&amp;lt;String, Object&amp;gt; dictionary);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Each time a document is stored, all enlisted listeners are notified and each listener can do a particular job. A convenient dictionary map can be passed through the execution chain so that one listener can share informations with others.&lt;br /&gt;
The extension point must define the implementation class and a position so that this can be used to choose the right notification order.&lt;/div&gt;</summary>
		<author><name>87.29.232.99</name></author>
	</entry>
</feed>