使用OrganizationLocalServiceUtil.addOrganization在Liferay中创建组织?

时间:2012-12-19 08:17:41

标签: liferay

我在Liferay中创建Organization使用:

OrganizationLocalServiceUtil.addOrganization (
                userId, parentOrganizationId, name,
                type, recursable, regionId, countryId,
                statusId, comments, false, serviceContext);

以下是我的困惑:

  1. 为什么我们需要parentOrganizationId
  2. 组织status指的是什么?
  3. 为什么ServiceContext

3 个答案:

答案 0 :(得分:3)

答案简短:There's javadoc

稍长一点:

  • 组织具有隐式层次结构 - 因此,如果您创建组织,您也可以在层次结构中的预期位置创建它,即parentOrganizationId。
  • 您可能想尝试将ListTypeConstants.ORGANIZATION_STATUS_DEFAULT作为您提供的状态
  • 通常,Liferay会将所有者或其他数据存储在已创建的实体中(例如,用于以后的权限检查)。这是可以从serviceContext检索的数据。

答案 1 :(得分:2)

答案在于documentation

从文档中可以看出:

userId - 组织创建者/所有者的主键
parentOrganizationId - 组织的上级组织的主要关键词 name - 组织的名称
type - 组织的类型
recursable - 组织的权限是否由其子组织继承 regionId - 组织区域的主键
countryId - 组织所在国家/地区的主要关键字 statusId - 组织的工作流程状态
comments - 关于组织的评论
site - 组织是否与主站点相关联 serviceContext - 组织的服务上下文(可选null)。可以为组织设置资产类别ID,资产标签名称和expando桥接属性。

要在上述文档中添加一些针对您问题的具体信息:

  

为什么我们需要parentOrganizationId

Liferay具有层次结构组织结构的概念,因此您可以拥有组织级别。 因此,如果您想创建顶级组织,请使用com.liferay.portal.model.OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID来传递 parentOrganizationId

  

组织状态是指什么?

Liferay对各种资产都有workflow(就像Kaleo工作流程一样)。如果你不想使用它而不是传递[com.liferay.portal.kernel.workflow.WorkflowConstants.STATUS_APPROVED][4]

  

为什么选择ServiceContext?

您可以按照所述null传递 基本上,您可以将此类视为不同的一般方法和属性的集合,例如Expando,asset-tags,assets-categories等,它们可以作为单个参数传递,方法是将其包含在ServiceContext对象中,而不是作为单独的参数,并使方法调用繁琐。 这是documentation 以下是一些更好的细节供您更好地理解:Development Guide& Wiki

答案 2 :(得分:2)

顶级组织的Liferay 6.2工作片段是:

ServiceContext serviceContext = ServiceContextFactory.getInstance(request); //or null
Organization organization = OrganizationServiceUtil.addOrganization(
                OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID,
                organizationName,
                OrganizationConstants.TYPE_REGULAR_ORGANIZATION,
                RegionConstants.DEFAULT_REGION_ID,
                CountryConstants.DEFAULT_COUNTRY_ID,
                ListTypeConstants.ORGANIZATION_STATUS_DEFAULT,
                "",
                false,
                serviceContext
        );

之前Olaf Kock的评论是正确的,并使用

WorkflowConstants.STATUS_APPROVED 

状态将产生

com.liferay.portal.NoSuchListTypeException.

如果这不是一个新帐户,我会支持他。