You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 9
Next »
From R14 onwards the Hooks Mechanism can be used to customize the existing business logic.
What does this section cover?
Hooks Mechanism
The Hooks Mechanism gives you the ability to extend the existing functionality by intercepting main system processes. This can be achieved by implementing specific abstract methods that are called before and after main system methods such as construct, save, delete etc.
Business Objects
To be able to extend the functionality of an existing Business Object EJB class you have to:
- Create a custom EJB class extending com.crm.businessobject.CRMBase and implementing com.crm.hooks.CRMBOHook interface.
- Declare your hook implementation class in hooks.xml file which is located under <your_custom_project_directory>/src/main/resources.
Example
@Stateless
@LocalBean
public class MYPLUGINCRMBOContactInformationBean extends CRMBase implements CRMBOHook{
public MYPLUGINCRMBOContactInformationBean() {
// TODO Auto-generated constructor stub
}
@Override
public CRMDO afterConstruct(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO beforeSave(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO afterSave(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO beforeValidateOnSave(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO afterValidateOnSave(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO beforeValidateOnDelete(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO afterValidateOnDelete(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO beforeDelete(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO afterDelete(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
@Override
public CRMDO afterLoad(CRMDO dto) throws Exception {
// TODO Auto-generated method stub
return dto;
}
<hookconfig>
<hooks>
...
<hook>
<serviceclass>CRMBOContactInformationBean</serviceclass>
<interfacename>CRMBOHook</interfacename>
<implementationclass>MYPLUGINCRMBOContactInformationBean</implementationclass>
</hook>
</hooks>
</hookconfig>
Processes
To be able to extend the functionality of an existing Process EJB class you have to:
- Create a custom EJB class extending com.crm.process.CRMProcess and implementing one of the interfaces found in com.crm.hooks package. Keep in mind that there are available interfaces for some but not all processes.
- Declare your hook implementation class in hooks.xml file which is located under <your_custom_project_directory>/src/main/resources.
Example
@Stateless
@LocalBean
public class MYPLUGINCRMProcessServiceRequestBean extends CRMProcess implements CRMProcessServiceRequestHook{
public MYPLUGINCRMProcessServiceRequestBean() {
super();
// TODO Auto-generated constructor stub
}
@Override
public CRMDOServiceRequest beforeCreate(CRMDOServiceRequest serviceRequest) throws Exception {
serviceRequest.setUserField1("beforeCreate() hook test");
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterCreate(CRMDOServiceRequest serviceRequest) throws Exception {
serviceRequest.setUserField2("afterCreate() hook test");
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeComplete(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public CRMDOServiceRequest afterComplete(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeFinalAccept(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterFinalAccept(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeFinalResolve(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterFinalResolve(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeRespond(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterRespond(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeResponseAccept(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterResponseAccept(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeTemporaryAccept(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterTemporaryAccept(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeTemporaryResolve(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterTemporaryResolve(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest beforeUpdate(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
@Override
public CRMDOServiceRequest afterUpdate(CRMDOServiceRequest serviceRequest) throws Exception {
// TODO Auto-generated method stub
return serviceRequest;
}
}
<hookconfig>
<hooks>
...
<hook>
<serviceclass>CRMProcessServiceRequestBean</serviceclass>
<interfacename>CRMProcessServiceRequestHook</interfacename>
<implementationclass>MYPLUGINCRMProcessServiceRequestBean</implementationclass>
</hook>
</hooks>
</hookconfig>