【问题标题】:Creating Organization in Liferay using OrganizationLocalServiceUtil.addOrganization?使用 OrganizationLocalServiceUtil.addOrganization 在 Liferay 中创建组织?
【发布时间】:2012-12-19 08:17:40
【问题描述】:

我正在 Liferay 中创建一个Organization,使用:

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

以下是我的困惑:

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

【问题讨论】:

    标签: liferay


    【解决方案1】:

    简短回答:There's javadoc

    有点长:

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

    【讨论】:

      【解决方案2】:

      答案就在这个documentation

      从文档原样:

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

      要在上述文档中添加一些细节以回答您的问题:

      为什么我们需要parentOrganizationId

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

      组织状态指的是什么?

      Liferay 为各种资产提供workflow(如 Kaleo-workflow)。如果您不想使用它,请通过 [com.liferay.portal.kernel.workflow.WorkflowConstants.STATUS_APPROVED][4]

      为什么选择 ServiceContext?

      您可以按照说明将其传递为null
      基本上,您可以将此类视为不同通用方法和属性的集合,例如 Expando、资产标签、资产类别等,它们可以作为单个参数传递,方法是包含在 ServiceContext 对象中,而不是作为单个参数并制作方法调用繁琐。 这是documentation
      这里有一些更多的细节让你更好地理解这一点:Development Guide & Wiki

      【讨论】:

      • 在示例代码中,GetterUtil.getInteger(PropsUtil.get("sql.data.com.liferay.portal.model.ListType.organization.status"));完成以获取组织状态 id ,返回 12017 。我不知道这个数字指的是什么。
      • 此 ID 来自 ListType 表。此表包含不同类型列表的所有主数据,例如 Title 用户列表、Suffix 用户列表、Phone TypesAddress Types 等。这是 liferay 默认使用的 ID。
      【解决方案3】:

      适用于顶级组织的 Liferay 6.2 的工作 sn-p 是:

      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.
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-26
        • 1970-01-01
        • 2014-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-05
        相关资源
        最近更新 更多