• Declare documents as undeletable

  • OpenKM has many interesting features, but requires some configuration process to show its full potential.
OpenKM has many interesting features, but requires some configuration process to show its full potential.
Forum rules: Please, before asking something see the documentation wiki or use the search feature of the forum. And remember we don't have a crystal ball or mental readers, so if you post about an issue tell us which OpenKM are you using and also the browser and operating system version. For more info read How to Report Bugs Effectively.
 #31158  by Aku
 
Hello together,

is it possible to declare documents as undeletable. In german it means "revisionssicher" (revision-safe or audit-proof).

The user are not allowed to delete documents, because we shred this documents after import.


André
 #31179  by jllort
 
Can be several ways for doing it. Removing security ( also administrator will be allowed ). I think the best option is lock the document. You can automatize lock documents based on creation destination, user who created etc... ( basically with some login as automation task http://wiki.openkm.com/index.php/Automation - document events)
 #31181  by Aku
 
Hello, thanks for your answer.

I have created a role "Revisionssicher"
fafgvscx.png
fafgvscx.png (7.72 KiB) Viewed 5129 times
Now i want add an action, which lock all uploaded documents.
dfsdvcx.png
dfsdvcx.png (13.99 KiB) Viewed 5129 times
There is no action to lock documents.

André
 #31188  by Aku
 
Hello, thanks for your answer.

I have now followed the steps on this site: http://wiki.openkm.com/index.php/Enable_automation

Have a look on this picture:
Bild6.png
Bild6.png (24.53 KiB) Viewed 5115 times
Now i want use the action "ExecutingScripting"
- I need a script, which will lock all uploaded documents.

Where can I find a script like that? :)

André
 #31195  by Aku
 
So it looks now:
Bild8.png
Bild8.png (6.27 KiB) Viewed 5109 times
Bild7.png
Bild7.png (24.54 KiB) Viewed 5109 times
Now i get following error:
Code: Select all
2015-02-06 11:45:28,982 [Thread-298] ERROR com.openkm.automation.action.ExecuteScripting- Sourced file: inline evaluation of: ``com.openkm.API.OKMDocument().getInstance().lock(null, docUuid);'' : Class or variable not found: com.openkm.API
Sourced file: inline evaluation of: ``com.openkm.API.OKMDocument().getInstance().lock(null, docUuid);'' : Class or variable not found: com.openkm.API : at Line: 1 : in file: inline evaluation of: ``com.openkm.API.OKMDocument().getInstance().lock(null, docUuid);'' : com .openkm .API .OKMDocument ( ) 

	at bsh.UtilEvalError.toEvalError(UtilEvalError.java:85)
	at bsh.UtilEvalError.toEvalError(UtilEvalError.java:90)
	at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:99)
	at bsh.BSHPrimarySuffix.doSuffix(BSHPrimarySuffix.java:103)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:80)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
	at bsh.Interpreter.eval(Interpreter.java:645)
	at bsh.Interpreter.eval(Interpreter.java:739)
	at bsh.Interpreter.eval(Interpreter.java:728)
	at com.openkm.automation.action.ExecuteScripting.execute(ExecuteScripting.java:95)
	at com.openkm.automation.action.ExecuteScripting.executePost(ExecuteScripting.java:54)
	at sun.reflect.GeneratedMethodAccessor749.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.openkm.util.cl.ClassLoaderUtils.invokeAutomationMethod(ClassLoaderUtils.java:164)
	at com.openkm.automation.AutomationManager.executeAction(AutomationManager.java:83)
	at com.openkm.automation.AutomationManager.fireEvent(AutomationManager.java:61)
	at com.openkm.module.db.base.BaseDocumentModule.create(BaseDocumentModule.java:170)
	at com.openkm.module.db.DbDocumentModule.create(DbDocumentModule.java:228)
	at com.openkm.module.db.DbDocumentModule.create(DbDocumentModule.java:117)
	at com.openkm.module.db.DbDocumentModule.create(DbDocumentModule.java:107)
	at com.openkm.api.OKMDocument.createSimple(OKMDocument.java:86)
	at sun.reflect.GeneratedMethodAccessor501.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at bsh.Reflect.invokeMethod(Reflect.java:134)
	at bsh.Reflect.invokeObjectMethod(Reflect.java:80)
	at bsh.Name.invokeMethod(Name.java:858)
	at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHIfStatement.eval(BSHIfStatement.java:51)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHTryStatement.eval(BSHTryStatement.java:86)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHEnhancedForStatement.eval(BSHEnhancedForStatement.java:79)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHTryStatement.eval(BSHTryStatement.java:86)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BshMethod.invokeImpl(BshMethod.java:362)
	at bsh.BshMethod.invoke(BshMethod.java:258)
	at bsh.BshMethod.invoke(BshMethod.java:186)
	at bsh.Name.invokeLocalMethod(Name.java:917)
	at bsh.Name.invokeMethod(Name.java:804)
	at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
	at bsh.Interpreter.eval(Interpreter.java:645)
	at bsh.Interpreter.eval(Interpreter.java:739)
	at bsh.Interpreter.eval(Interpreter.java:728)
	at com.openkm.util.ExecutionUtils.runScript(ExecutionUtils.java:112)
	at com.openkm.core.Cron$RunnerBsh.run(Cron.java:103)
	at java.lang.Thread.run(Thread.java:745)
 #31214  by jllort
 
My colleage make a mistake writing the call should be API to lowercase api
com.openkm.api.OKMDocument().getInstance().lock(null, docUuid)

Take a look at http://doxygen.openkm.com/openkm/ for classes ( http://doxygen.openkm.com/openkm/d9/d6d ... _1api.html )

We will release 6.3 , but 6.2 is very similar 6.3
 #31223  by Aku
 
Hello jllort,

okey, thanks for your answer.
I have looked at the code.

I changed "com.openkm.API.OKMDocument().getInstance().lock(null, docUuid)" to "com.openkm.api.OKMDocument().getInstance().lock(null, docUuid)"
- (Here it is displayed incorrectly -> api in lowercase)

I get this error:
Code: Select all
2015-02-09 07:05:28,259 [Thread-25] ERROR com.openkm.automation.action.ExecuteScripting- Sourced file: inline evaluation of: ``com.openkm.api.OKMDocument().getInstance().lock(null, docUuid);'' : Class or variable not found: com.openkm.api
Sourced file: inline evaluation of: ``com.openkm.api.OKMDocument().getInstance().lock(null, docUuid);'' : Class or variable not found: com.openkm.api : at Line: 1 : in file: inline evaluation of: ``com.openkm.api.OKMDocument().getInstance().lock(null, docUuid);'' : com .openkm .api .OKMDocument ( ) 

	at bsh.UtilEvalError.toEvalError(UtilEvalError.java:85)
	at bsh.UtilEvalError.toEvalError(UtilEvalError.java:90)
	at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:99)
	at bsh.BSHPrimarySuffix.doSuffix(BSHPrimarySuffix.java:103)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:80)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
	at bsh.Interpreter.eval(Interpreter.java:645)
	at bsh.Interpreter.eval(Interpreter.java:739)
	at bsh.Interpreter.eval(Interpreter.java:728)
	at com.openkm.automation.action.ExecuteScripting.execute(ExecuteScripting.java:95)
	at com.openkm.automation.action.ExecuteScripting.executePost(ExecuteScripting.java:54)
	at sun.reflect.GeneratedMethodAccessor503.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.openkm.util.cl.ClassLoaderUtils.invokeAutomationMethod(ClassLoaderUtils.java:164)
	at com.openkm.automation.AutomationManager.executeAction(AutomationManager.java:83)
	at com.openkm.automation.AutomationManager.fireEvent(AutomationManager.java:61)
	at com.openkm.module.db.base.BaseDocumentModule.create(BaseDocumentModule.java:170)
	at com.openkm.module.db.DbDocumentModule.create(DbDocumentModule.java:228)
	at com.openkm.module.db.DbDocumentModule.create(DbDocumentModule.java:117)
	at com.openkm.module.db.DbDocumentModule.create(DbDocumentModule.java:107)
	at com.openkm.api.OKMDocument.createSimple(OKMDocument.java:86)
	at sun.reflect.GeneratedMethodAccessor467.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at bsh.Reflect.invokeMethod(Reflect.java:134)
	at bsh.Reflect.invokeObjectMethod(Reflect.java:80)
	at bsh.Name.invokeMethod(Name.java:858)
	at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHIfStatement.eval(BSHIfStatement.java:51)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHTryStatement.eval(BSHTryStatement.java:86)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHEnhancedForStatement.eval(BSHEnhancedForStatement.java:79)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BSHBlock.eval(BSHBlock.java:46)
	at bsh.BSHTryStatement.eval(BSHTryStatement.java:86)
	at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
	at bsh.BSHBlock.eval(BSHBlock.java:80)
	at bsh.BshMethod.invokeImpl(BshMethod.java:362)
	at bsh.BshMethod.invoke(BshMethod.java:258)
	at bsh.BshMethod.invoke(BshMethod.java:186)
	at bsh.Name.invokeLocalMethod(Name.java:917)
	at bsh.Name.invokeMethod(Name.java:804)
	at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
	at bsh.Interpreter.eval(Interpreter.java:645)
	at bsh.Interpreter.eval(Interpreter.java:739)
	at bsh.Interpreter.eval(Interpreter.java:728)
	at com.openkm.util.ExecutionUtils.runScript(ExecutionUtils.java:112)
	at com.openkm.core.Cron$RunnerBsh.run(Cron.java:103)
	at java.lang.Thread.run(Thread.java:745)


My configuration:
Bild12.png
Bild12.png (12.67 KiB) Viewed 5099 times
Bild11.png
Bild11.png (14.13 KiB) Viewed 5099 times
Bild10.png
Bild10.png (6.04 KiB) Viewed 5099 times
After import the documents should look like this:
Bild13.png
Bild13.png (9.94 KiB) Viewed 5099 times
But in the Moment they look like this (without lock):
Bild14.png
Bild14.png (6.8 KiB) Viewed 5098 times

André
 #31245  by jllort
 
Hi André

I think I've discovered the mistake you should use var called uuid, not docUuid;

I think forum is lying us with api lower case upper case ( seem reseved forum word and always is shown in upper case ) :
Code: Select all
import com.openkm.api.*; // althought you see API upper case must be lower ( it's forum issue )

// uuid var is injected by scripting
OKMDocument.getInstance().lock(null, uuid);

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.