Difference between revisions of "Extend automation 6.0"
From OpenKM Documentation
m (Jllort moved page Extend automation to Extend automation 6.0: implementation change) |
|||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | Refer to [[Enable automation]] section to know how enable automation. By default automation is not enabled. | |
− | Refer to [[Automation]] section to configure automation rules in your OpenKM. | + | Refer to [[Automation]] section to configure automation rules in your OpenKM and get full explanation of available validators and actions. |
− | + | === Create a new validator === | |
+ | Any validator should implements interface Validation: | ||
− | + | <source lang="java"> | |
+ | public interface Validation { | ||
+ | public static final String METHOD = "isValid"; | ||
+ | |||
+ | boolean isValid(HashMap<String, Object> env, Object... params); | ||
+ | } | ||
+ | </source> | ||
− | + | * At HashMap<String, Object> env are stored element values map. | |
− | + | * Values set at validator form are stored to String params[]. | |
− | [[ | + | {{Note|Refer to AutomationUtils class to get variables. Take a look at the latest doxygen class reference at [[Developer_Guide]].}} |
− | + | <source lang="java"> | |
− | + | public class PathContains implements Validation { | |
− | + | private static Logger log = LoggerFactory.getLogger(PathContains.class); | |
− | + | ||
− | + | @Override | |
+ | public boolean isValid(HashMap<String, Object> env, Object... params) { | ||
+ | String path = AutomationUtils.getString(0, params); | ||
+ | String parentPath = AutomationUtils.getParentPath(env); | ||
+ | |||
+ | try { | ||
+ | if (parentPath.startsWith(path)) { | ||
+ | return true; | ||
+ | } else { | ||
+ | return false; | ||
+ | } | ||
+ | } catch (Exception e) { | ||
+ | log.error(e.getMessage(), e); | ||
+ | } | ||
+ | |||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | === Create a new action === | ||
+ | Any validator should implements interface Action: | ||
+ | |||
+ | <source lang="java"> | ||
+ | public interface Action { | ||
+ | public static final String METHOD_PRE = "executePre"; | ||
+ | public static final String METHOD_POST = "executePost"; | ||
+ | |||
+ | public void executePre(HashMap<String, Object> env, Object... params); | ||
+ | public void executePost(HashMap<String, Object> env, Object... params); | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | |||
+ | * At HashMap<String, Object> env are stored element values map. | ||
+ | * Values set at validator form are stored to String params[]. | ||
+ | |||
+ | {{Note|Refer to AutomationUtils class to get variables. Take a look at the latest doxygen class reference at [[Developer_Guide]].}} | ||
+ | |||
+ | <source lang="java"> | ||
+ | public class ExecuteScripting implements Action { | ||
+ | private static Logger log = LoggerFactory.getLogger(ExecuteScripting.class); | ||
+ | |||
+ | @Override | ||
+ | public void executePre(HashMap<String, Object> env, Object... params) { | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public void executePost(HashMap<String, Object> env, Object... params) { | ||
+ | String script = AutomationUtils.getString(0, params); | ||
+ | NodeBase node = AutomationUtils.getNode(env); | ||
+ | String uuid = AutomationUtils.getUuid(env); | ||
+ | |||
+ | try { | ||
+ | Interpreter i = new Interpreter(); | ||
+ | i.set("node", node); | ||
+ | i.set("uuid", uuid); | ||
+ | i.eval(script); | ||
+ | } catch (Exception e) { | ||
+ | log.error(e.getMessage(), e); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
[[Category: Extension Guide]] | [[Category: Extension Guide]] |
Latest revision as of 18:33, 7 September 2013
Refer to Enable automation section to know how enable automation. By default automation is not enabled.
Refer to Automation section to configure automation rules in your OpenKM and get full explanation of available validators and actions.
Create a new validator
Any validator should implements interface Validation:
public interface Validation {
public static final String METHOD = "isValid";
boolean isValid(HashMap<String, Object> env, Object... params);
}
- At HashMap<String, Object> env are stored element values map.
- Values set at validator form are stored to String params[].
Refer to AutomationUtils class to get variables. Take a look at the latest doxygen class reference at Developer_Guide. |
public class PathContains implements Validation {
private static Logger log = LoggerFactory.getLogger(PathContains.class);
@Override
public boolean isValid(HashMap<String, Object> env, Object... params) {
String path = AutomationUtils.getString(0, params);
String parentPath = AutomationUtils.getParentPath(env);
try {
if (parentPath.startsWith(path)) {
return true;
} else {
return false;
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return false;
}
}
Create a new action
Any validator should implements interface Action:
public interface Action {
public static final String METHOD_PRE = "executePre";
public static final String METHOD_POST = "executePost";
public void executePre(HashMap<String, Object> env, Object... params);
public void executePost(HashMap<String, Object> env, Object... params);
}
- At HashMap<String, Object> env are stored element values map.
- Values set at validator form are stored to String params[].
Refer to AutomationUtils class to get variables. Take a look at the latest doxygen class reference at Developer_Guide. |
public class ExecuteScripting implements Action {
private static Logger log = LoggerFactory.getLogger(ExecuteScripting.class);
@Override
public void executePre(HashMap<String, Object> env, Object... params) {
}
@Override
public void executePost(HashMap<String, Object> env, Object... params) {
String script = AutomationUtils.getString(0, params);
NodeBase node = AutomationUtils.getNode(env);
String uuid = AutomationUtils.getUuid(env);
try {
Interpreter i = new Interpreter();
i.set("node", node);
i.set("uuid", uuid);
i.eval(script);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}