2020-10-13 AEM Workflow中获取ResourceResolver的两种方法

一:通过访问的workflowSession获取

ResourceResolver resourceResolver = workflowSession.adaptTo(ResourceResolver.class);

二:通过系统中保存的账户获取

  1. localhost:/crx/explorer=>User Administration=>Create System User创建一个用户
    2020-10-13 AEM Workflow中获取ResourceResolver的两种方法_第1张图片
    创建用户
  2. 为用户配置目录访问权限


    2020-10-13 AEM Workflow中获取ResourceResolver的两种方法_第2张图片
    配置权限
  3. 在 “Apache Sling Service User Mapper Service”中新增一个条目
    访问localhost:/system/console/configMgr,搜索Apache Sling Service User Mapper Service
    2020-10-13 AEM Workflow中获取ResourceResolver的两种方法_第3张图片
    新增条目

    新增条目的格式::<服务名>=<用户ID>, 服务名代码中会用到
  4. 通过工厂方式以新增的用户身份获取ResourceResolver
Map param = new HashMap();
// 服务名在这里用到
param.put(ResourceResolverFactory.SUBSERVICE, “writeService”);
ResourceResolver resolver = resolverFactory.getServiceResourceResolver(param);

resolverFactory可直接通过reference注解引进来

@Reference
private ResourceResolverFactory resolverFactory;

总结:

第一种方式有局限性,如果登陆的用户没有某个目录的操作权限,那么就不能进行后续的操作。
第二种是先建立有权限的用户,然后以这个用户进行获取Resolver,确保操作可顺利进行。

你可能感兴趣的:(2020-10-13 AEM Workflow中获取ResourceResolver的两种方法)