Use-case :- When ever a item gets expired or in some times after publish based on some conditions like time factor you want to delete the content.
Step1 :- Create a dynamic web-project and place below plugin.xml in it
</plugin>
Step2 :- Now create two classes one implementing CustomWorkflowActionFactory and other is CustomWorkflowAction
package com.poc.purge.factory;
import java.util.Locale;
import com.ibm.workplace.wcm.api.Document;
import com.ibm.workplace.wcm.api.custom.CustomWorkflowAction;
import com.ibm.workplace.wcm.api.custom.CustomWorkflowActionFactory;
import com.poc.purgeaction.CustomPurgeAction;
public class CustomPurgeFactory implements CustomWorkflowActionFactory {
public static final String ActionName = "PocPurgeAction";
@Override
public CustomWorkflowAction getAction(String arg0, Document arg1) {
// TODO Auto-generated method stub
return new CustomPurgeAction();
}
@Override
public String getActionDescription(Locale arg0, String arg1) {
// TODO Auto-generated method stub
return ActionName;
}
@Override
public String[] getActionNames() {
// TODO Auto-generated method stub
return new String[]{ActionName};
}
@Override
public String getActionTitle(Locale arg0, String arg1) {
// TODO Auto-generated method stub
return ActionName;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return ActionName;
}
@Override
public String getTitle(Locale arg0) {
// TODO Auto-generated method stub
return ActionName;
}
}
Step1 :- Create a dynamic web-project and place below plugin.xml in it
<?xml version="1.0" encoding="UTF-8"?>
<plugin id="com.poc.purgeaction.CustomPurgeAction" name="Custom Purge Action Factory" version="1.0.0" provider-name="IBM">
<extension-point id= "CustomPurgeFactory" name="CustomPurgeFactory" />
<extension point="com.ibm.workplace.wcm.api.CustomWorkflowActionFactory" id= "CustomPergeAction" >
<provider class= "com.poc.purge.factory.CustomPurgeFactory"/>
</extension>
Step2 :- Now create two classes one implementing CustomWorkflowActionFactory and other is CustomWorkflowAction
CustomPurgeFactory
package com.poc.purge.factory;
import java.util.Locale;
import com.ibm.workplace.wcm.api.Document;
import com.ibm.workplace.wcm.api.custom.CustomWorkflowAction;
import com.ibm.workplace.wcm.api.custom.CustomWorkflowActionFactory;
import com.poc.purgeaction.CustomPurgeAction;
public class CustomPurgeFactory implements CustomWorkflowActionFactory {
public static final String ActionName = "PocPurgeAction";
@Override
public CustomWorkflowAction getAction(String arg0, Document arg1) {
// TODO Auto-generated method stub
return new CustomPurgeAction();
}
@Override
public String getActionDescription(Locale arg0, String arg1) {
// TODO Auto-generated method stub
return ActionName;
}
@Override
public String[] getActionNames() {
// TODO Auto-generated method stub
return new String[]{ActionName};
}
@Override
public String getActionTitle(Locale arg0, String arg1) {
// TODO Auto-generated method stub
return ActionName;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return ActionName;
}
@Override
public String getTitle(Locale arg0) {
// TODO Auto-generated method stub
return ActionName;
}
}
CustomPurgeAction
package com.poc.purgeaction;
import java.util.Date;
import javax.naming.InitialContext;
import com.ibm.workplace.wcm.api.Document;
import com.ibm.workplace.wcm.api.WebContentCustomWorkflowService;
import com.ibm.workplace.wcm.api.custom.CustomWorkflowAction;
import com.ibm.workplace.wcm.api.custom.CustomWorkflowActionResult;
import com.ibm.workplace.wcm.api.custom.Directive;
import com.ibm.workplace.wcm.api.custom.Directives;
import com.ibm.workplace.wcm.api.custom.DeleteDirectiveParams;
public class CustomPurgeAction implements CustomWorkflowAction {
@Override
public CustomWorkflowActionResult execute(Document arg0) {
WebContentCustomWorkflowService wfService = null;
CustomWorkflowActionResult _results = null;
Directive directive = Directives.DELETE;
//Without the following line, it would softly delete the document
((DeleteDirectiveParams)directive.createDirectiveParams()).setPermanentDelete(true);
try {
InitialContext ctx = new InitialContext();
// Retrieve WebContentCustomWorkflowService using JNDI name
wfService = (WebContentCustomWorkflowService) ctx.lookup("portal:service/wcm/WebContentCustomWorkflowService");
_results = wfService.createResult(directive, "Our client document is permanently deleted ");
} catch(Exception e) { e.printStackTrace();
}
return _results;
}
@Override
public Date getExecuteDate(Document arg0) {
// TODO Auto-generated method stub
return DATE_EXECUTE_NOW;
}
}
Step3 :- Now you apply above custom action to expire stage. So once item is moved to expire stage the content will be deleted by default.
No comments:
Post a Comment