Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • Kaleo workflow in custom portlet

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 747
    Comment on it

    Liferay provide default workflow for inbuild portlets but we can use our custom portlets also. So, I here for you to implement workflow in our custom portlets and make assist of the activity.

    Add entity in portlet service.xml regarding your workflow portlet as shown :

    1. <entity name="XXWorkflow" local-service="true" remote-service="false">
    2.  
    3. <!-- PK fields -->
    4. <column name="workflowId" type="long" primary="true" />
    5.  
    6. <!-- Foreign key columns -->
    7. <column name="XXd" type="long" />
    8. <column name="companyId" type="long" />
    9. <column name="groupId" type="long" />
    10. <column name="userId" type="long"/>
    11.  
    12. <!-- Workflow fields -->
    13.  
    14. <!-- Resource -->
    15.  
    16. <column name="resourcePrimKey" type="long"></column>
    17. <column name="title" type="String"></column>
    18. <column name="status" type="int"></column>
    19. <column name="statusByUserId" type="long"></column>
    20. <column name="statusByUserName" type="String"></column>
    21. <column name="statusDate" type="Date"></column>
    22.  
    23. <!-- Finder methods -->
    24.  
    25. <finder name="ResourcePrimKey" return-type="RfpWorkflow">
    26. <finder-column name="resourcePrimKey"></finder-column>
    27. </finder>
    28.  
    29. <finder name="Status" return-type="Collection">
    30. <finder-column name="status"></finder-column>
    31. </finder>
    32.  
    33. <finder name="R_S" return-type="RfpWorkflow">
    34. <finder-column name="resourcePrimKey"></finder-column>
    35. <finder-column name="status"></finder-column>
    36. </finder>
    37.  
    38. <!-- end of workflow columns and finders -->
    39.  
    40. <finder return-type="Collection" name="XXId">
    41. <finder-column name="XXId"></finder-column>
    42. </finder>
    43.  
    44. <reference package-path="com.liferay.portal" entity="WorkflowInstanceLink"></reference>
    45. <reference package-path="com.liferay.portlet.asset" entity="AssetEntry"></reference>
    46. <reference package-path="com.liferay.portlet.social" entity="SocialActivity"></reference>
    47.  
    48. </entity>

    JSP file:-

    submit button action url = "processAction"


    Put below code in your controller

    1. public void processAction(ActionRequest request, ActionResponse response)
    2. throws Exception {
    3.  
    4. //do your required stuff
    5.  
    6. workflowInitiation(request,response,XX.getXXId(),XX.getXXName());
    7.  
    8. }
    9.  
    10.  
    11. public void workflowInitiation(ActionRequest actionRequest,
    12. ActionResponse actionResponse,long XXId,String XXName) throws IOException, PortletException {
    13. // TODO Auto-generated method stub
    14.  
    15. ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest
    16. .getAttribute(WebKeys.THEME_DISPLAY);
    17. System.out.println("Title : " + XXName);
    18. XXWorkflowImpl xxWorkflow = new XXWorkflowImpl();
    19. XXWorkflow.setTitle(xxName);
    20. XXWorkflow.setxxId(xxpId);
    21. XXWorkflow.setCompanyId(themeDisplay.getCompanyId());
    22. XXWorkflow.setGroupId(themeDisplay.getScopeGroupId());
    23. ThemeDisplay themeDisplay1 = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
    24.  
    25. ServiceContext serviceContext;
    26. try {
    27. serviceContext = ServiceContextFactory.getInstance(XXPortlet.class.getName(), actionRequest);
    28.  
    29. XXWorkflowLocalServiceUtil.addXXWorkflow(XXWorkflow,serviceContext, themeDisplay1.getUserId());
    30. } catch (PortalException e) {
    31. e.printStackTrace();
    32. } catch (SystemException e) {
    33. e.printStackTrace();
    34. }
    35. }

    Create hanlder Class as below :

    1. public class XXWorkflowHandler extends BaseWorkflowHandler {
    2.  
    3. public static final String CLASS_NAME = XXWorkflow.class.getName();
    4.  
    5. public String getClassName() {
    6. return CLASS_NAME;
    7. }
    8.  
    9. public String getType(Locale locale) {
    10. return LanguageUtil.get(locale, "model.resource." + CLASS_NAME);
    11. }
    12.  
    13.  
    14. public Object updateStatus(int status,Map<String, Serializable> workflowContext) throws PortalException,
    15. SystemException {
    16.  
    17. long userId = GetterUtil.getLong((String) workflowContext.get(WorkflowConstants.CONTEXT_USER_ID));
    18. long resourcePrimKey = GetterUtil.getLong((String) workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_PK));
    19. ServiceContext serviceContext = (ServiceContext) workflowContext.get("serviceContext");
    20. return RfpWorkflowLocalServiceUtil.updateStatus(userId, resourcePrimKey,status, serviceContext);
    21.  
    22. }
    23.  
    24. }

    Add below tag in your liferay-portlet.xml after portlet-name

    1. <workflow-handler>com.xx.RFPWorkflowHandler</workflow-handler>

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Reset Password
Fill out the form below and reset your password: