AEM提供了几个可用于创建工作流模型的流程步骤。 也可以为内置步骤未涵盖的任务添加自定义流程步骤(请参阅创建工作流模型)。
对于每个过程步骤,描述了以下特征。
进程步骤由Java类或ECMAScript定义。
有效负荷是工作流实例对其起作用的实体。 有效负荷由启动工作流实例的上下文隐式选择。
例如,如果工作流应用于AEM页P,则随着工作流的推进,会逐步传递P,每个步骤都可以选择以某种方式作用在P上。
在最常见的情况下,有效负荷是存储库中的JCR节点(例如AEM页面或资产)。 JCR节点有效负荷作为JCR路径或JCR标识符(UUID)的字符串传递。 在某些情况下,有效负荷可以是JCR属性(作为JCR路径传递)、URL、二进制对象或通用Java对象。 对有效负荷起作用的单个进程步骤通常预期某种类型的有效负荷,或根据有效负荷类型采取不同的操作。 对于下面描述的每个过程,将说明预期的有效负荷类型(如果有)。
某些工作流进程接受管理员在设置工作流步骤时指定的参数。
在工作流编辑器的属性窗格中,参数作为单个字符串输入在“进程参数”属性中。对于下面描述的每个过程,参数字符串的格式以简单的EBNF语法进行描述。 例如,以下指示参数字符串由一个或多个逗号分隔的对组成,其中每对都由名称(即字符串)和值(以多次冒号分隔)组成:
args := name '::' value [',' name '::' value]*
name := /* A string */
value := /* A string */
在此超时期后,工作流步骤不再可操作。 某些工作流进程会遵守超时,而其他工作流进程则不适用并会被忽略。
传递给WorkflowProcess
的会话由工作流进程服务的服务用户支持,该服务在存储库的根位置具有以下权限:
jcr:read
rep:write
jcr:versionManagement
jcr:lockManagement
crx:replicate
如果该权限集不足于您的WorkflowProcess
实现,则必须使用具有所需权限的会话。
为此,建议的方法是使用使用所需权限子集(但最少)创建的服务用户。
如果从AEM 6.2之前的版本升级,则可能需要更新实施。
在以前的版本中,管理员会话被传递到WorkflowProcess
实现,然后可以拥有对存储库的完全访问权,而无需定义特定ACL。
权限现在定义为以上(权限)。 同样,更新实现的推荐方法也是如此。
当代码更改不可行时,还提供短期解决方案用于向后兼容:
使用Web控制台(/system/console/configMgr
找到AdobeGranite工作流配置服务
启用工作流进程传统模式
这将恢复为向WorkflowProcess
实施提供管理会话的旧行为,并再次提供对整个存储库的无限制访问。
以下进程不对内容执行任何操作。 它们用于控制工作流本身的行为。
AbsoluteTimeAutoAdvancer
(绝对时间自动提前器)进程对AutoAdvancer的行为相同,只是它在给定时间和日期超时,而不是在给定时间长度后超时。
com.adobe.granite.workflow.console.timeout.autoadvance.AbsoluteTimeAutoAdvancer
AutoAdvancer
进程会自动将工作流前进到下一步。 如果有多个可能的下一步(例如,如果存在OR拆分),则此进程将沿默认路由推进工作流,如果已指定,则不会进行工作流高级。
Java类: com.adobe.granite.workflow.console.timeout.autoadvance.AutoAdvancer
有效负荷:没有。
参数:没有。
超时:在设定的时间长度后,处理超时。
ProcessAssembler
进程在一个工作流步骤中按顺序执行多个子进程。 要使用ProcessAssembler
,请在工作流中创建此类型的单个步骤,并设置其参数以指示要执行的子进程的名称和参数。
Java类: com.day.cq.workflow.impl.process.ProcessAssembler
有效负荷:DAM资产、AEM页面或无有效负荷(取决于子流程的要求)。
参数:
args := arg [',' arg]
arg := processname ['::' processargs]
processname := /* A fully qualified Java Class or absolute
repository path to an ECMAScript */
processargs := processarg [';' processarg]*
processarg := '[' nobracketprocessarg ']' | nobracketprocessarg
nobracketprocessarg := listitem [':' listitem]*
listitem := /* A string */
例如:
com.day.cq.dam.core.process.ExtractMetadataProcess,
com.day.cq.dam.core.process.CreateThumbnailProcess::[140:100];[48:48];[319:319:false],
com.day.cq.dam.core.process.CreateWebEnabledImageProcess::dimension:1280:1280;mimetype:image/jpeg,
com.day.cq.dam.core.process.AssetSetLastModifiedProcess
以下过程执行简单的任务或作为示例。
您必须不要更改/libs
路径中的任何内容。
这是因为下次升级实例时,/libs
的内容会被覆盖(应用修补程序或功能包时,可能会被覆盖)。
将删除给定路径上的项。
ECMAScript路径: /libs/workflow/scripts/delete.ecma
有效负荷:JCR路径
参数:无
超时:已忽略
这是空进程。 它不执行任何操作,但会记录调试消息。
ECMAScript路径: /libs/workflow/scripts/noop.ecma
有效负荷:无
参数:无
超时:已忽略
这是一个在check()
方法上返回false
的空进程。
ECMAScript路径: /libs/workflow/scripts/rule-false.ecma
有效负荷:无
参数:无
超时:已忽略
这是一个示例ECMAScript进程。
ECMAScript路径: /libs/workflow/scripts/sample.ecma
有效负荷:无
参数:无
超时:已忽略
这是一个调用给定URL的简单工作流程。 通常,URL将是对执行简单任务的JSP(或其他Servlet等效项)的引用。 此过程仅应在开发和演示时使用,而不应在生产环境中使用。 参数指定URL、登录名和口令。
ECMAScript路径: /libs/workflow/scripts/urlcaller.ecma
有效负荷:无
参数:
args := url [',' login ',' password]
url := /* The URL to be called */
login := /* The login to access the URL */
password := /* The password to access the URL */
例如:http://localhost:4502/my.jsp, mylogin, mypassword
锁定工作流的有效负荷。
Java类: com.day.cq.workflow.impl.process.LockProcess
有效负 荷:JCR_PATH和JCR_UUID
参数: 无
超时:已忽 略
该步骤在下列情况下并无影响:
解锁工作流的有效负荷。
Java类: com.day.cq.workflow.impl.process.UnlockProcess
有效负 荷:JCR_PATH和JCR_UUID
参数: 无
超时:已忽 略
该步骤在下列情况下并无影响:
以下过程执行与版本相关的任务。
创建工作流有效负荷的新版本(AEM页面或DAM资产)。
Java类: com.day.cq.wcm.workflow.process.CreateVersionProcess
有效负荷:引用页面或DAM资产的JCR路径或UUID
参数:无
超时:受尊重