【问题标题】:How to get Liferay Dynamic Data Lists RecordId (ddlRecordId) in workflow script如何在工作流脚本中获取 Liferay 动态数据列表 RecordId (ddlRecordId)
【发布时间】:2013-09-14 21:34:52
【问题描述】:

我正在尝试将 Liferay 动态数据列表集成到 Kaleo 工作流程(Liferay 6.1 CE GA2)中,但是如何在工作流程中获取 ddlRecordId?我做了一些功课,我检查了serviceContext中的所有属性,但是serviceContext属性中没有“ddlRecordId”,只有一个名为“recordId”的键,它的值始终为0。我也可以在serviceContext属性中获取一些字段值,例如选择和文本区域。但我想要的是上传文件字段。谢谢。

long ddlRecordId = GetterUtil.getLong(serviceContext.getAttribute("ddlRecordId"));
DDLRecord ddlRecord = DDLRecordLocalServiceUtil.getRecord(ddlRecordId);

【问题讨论】:

    标签: liferay workflow dynamic-data-list


    【解决方案1】:

    我有同样的问题。我已经花了一周的时间试图解决它,最后我明白了。 我希望它能解决你的问题。

    我必须恢复一个列表中的所有 DDLRecord,并发现一个正在使用我的工作流的“recordSetId”属性与 DDLRecord 的“recordSetId”相比。

    最终的代码是这样的:

    import com.liferay.portal.kernel.util.GetterUtil;
    import com.liferay.portal.kernel.workflow.WorkflowConstants;
    import com.liferay.portal.service.ServiceContext;
    import com.liferay.portlet.dynamicdatamapping.storage.Field;
    import com.liferay.portal.kernel.util.GetterUtil;
    import com.liferay.portal.kernel.workflow.WorkflowConstants;
    import com.liferay.portal.service.ServiceContext;
    import com.liferay.portal.kernel.util.GetterUtil;
    import com.liferay.portlet.dynamicdatalists.model.DDLRecord;
    import com.liferay.portlet.dynamicdatalists.model.impl.DDLRecordImpl;
    import com.liferay.portlet.dynamicdatalists.service.*;
    
    long companyId = GetterUtil.getLong((String) workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID));
    String uuid = (String) workflowContext.get(WorkflowConstants.CONTEXT_USER_ID);
    
    ServiceContext serviceContext = (ServiceContext) workflowContext.get(WorkflowConstants.CONTEXT_SERVICE_CONTEXT);
    
    long ddlRecordId = GetterUtil.getLong(serviceContext.getAttribute("recordSetId"));
    List ddlRecordList = DDLRecordLocalServiceUtil.getDDLRecords(0,DDLRecordLocalServiceUtil.getDDLRecordsCount());
    for(DDLRecord o : ddlRecordList){
        if(o.getRecordSetId()==ddlRecordId){
            Field field = o.getField("status");
    
            String status = GetterUtil.getString(field.getValue());
    
            if (status.contains("not")) {
            returnValue = "No"
            }
            else {
            returnValue = "Yes"
            }
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      在 Liferay 6.1 中,DDLRecordId 等同于工作流上下文变量中的 entryClassPK。这可能是一个有用的documentation(阅读有关工作流上下文变量的部分)

      所以,你可以通过这种方式获取上传文件字段:

      import com.liferay.portlet.documentlibrary.store.DLStoreUtil;
      import com.liferay.portlet.dynamicdatalists.model.DDLRecord;
      import com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalServiceUtil;
      import com.liferay.portlet.dynamicdatamapping.storage.Field;
      import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
      import com.liferay.portal.kernel.json.JSONFactoryUtil;
      import com.liferay.portal.kernel.json.JSONObject;
      import com.liferay.portal.kernel.util.GetterUtil;
      
      import java.io.File;
      import java.io.Serializable
      
      DDLRecord ddlRecord = DDLRecordLocalServiceUtil.getDDLRecord(GetterUtil.getLong(entryClassPK));
      // get the upload field
      Field field = ddlRecord.getField("field_attachment");
      if (field != null){
          DDMStructure structure = field.getDDMStructure();
          Serializable fieldValue = field.getValue();
          String value = String.valueOf(fieldValue);
          if (!value.isEmpty()){
              JSONObject fileJSONObject = JSONFactoryUtil.createJSONObject(value);
              String fileName = fileJSONObject.getString("name");
              String filePath = fileJSONObject.getString("path");
              File file = DLStoreUtil.getFile(structure.getCompanyId(), 0L, filePath);
          }
      }
      

      我希望这会帮助不止一个...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-02
        • 1970-01-01
        • 1970-01-01
        • 2019-12-10
        • 1970-01-01
        • 2012-02-08
        • 2013-11-19
        • 1970-01-01
        相关资源
        最近更新 更多