配置和自定义工作流 id181AI0OJ0RO
借助工作流,您可以自动化51黑料不打烊 Experience Manager (AEM)活动。 工作流包含一系列按特定顺序执行的步骤。 您可以定义要在每个步骤中执行的不同活动。 例如,您可以在创建主题审阅时向组中的所有审阅人发送电子邮件通知。 或者,在输出生成任务完成时向发布者发送通知。
有关础贰惭中工作流的详细信息,请参阅:
本主题中的部分将指导您逐步完成AEM Guides中提供的默认工作流中可以进行的各种自定义设置。
自定义审核工作流 id176NE0C00HS
每个组织的内容创作团队都以特定的方式工作,以满足其业务要求。 有些组织设有专门的编辑人员,而有些其他组织则设有自动编辑审查系统。 例如,在组织中,典型的创作和发布工作流程可能包括以下任务 — 每当作者完成创作内容时,它会自动发送给审阅人,审阅完成后会发送给发布者,以生成最终输出。 在AEM中,您可以采用流程的形式组合对内容和资产执行的活动并将其映射到AEM工作流。 有关AEM中工作流的详细信息,请参阅AEM文档中的管理工作流。
AEM Guides允许您自定义默认审核工作流。 您可以将以下四个与自定义审阅相关的流程用于其他创作或发布工作流。
-
创建审核:此进程准备创建审核任务所需的元数据。 例如,它将为审阅人分配审阅权限、将主题的状态设置为审阅、设置审阅时间表等。 在四个流程中,这是必须包含在自定义工作流中的唯一强制流程。 在工作流中,您可以选择包括或排除其他三个流程。
-
分配审阅任务:此进程创建审阅任务并将任务通知发送给发起者和审阅者。
-
发送审阅电子邮件:此进程将审阅电子邮件发送给发起人和审阅人。
-
将作业计划为关闭审阅:此进程确保审阅进程在到达截止日期时完成。
创建自定义审阅工作流时,第一项任务是设置“创建审阅”进程所需的元数据。 为此,您可以创建一个ECMA脚本。 下面提供了用于分配元数据的ECMA脚本示例,其中既包括主题,也包括映射。
主题? 的
var workflowdata=workItem.getWorkflowData();
workflowdata.getMetaDataMap().put("initiator","admin");
workflowdata.getMetaDataMap().put("operation","AEM_REVIEW");
workflowdata.getMetaDataMap().put("orgTopics","/content/dam/xml-solution/review.xml");
workflowdata.getMetaDataMap().put("payloadJson","{\"base\":\"/content/dam/xml-solution\",\"asset\":[\"/content/dam/xml-solution/review.xml\"],\"referrer\":\""}");
workflowdata.getMetaDataMap().put("deadline","2017-06-27T13:19:00.000+05:30");
workflowdata.getMetaDataMap().put("title","Review through custom workflow");
workflowdata.getMetaDataMap().put("description","Initiate this review process using the AEM workflow");
workflowdata.getMetaDataMap().put("assignee","user-one", "user-two");
workflowdata.getMetaDataMap().put("status","1");
workflowdata.getMetaDataMap().put("projectPath","/content/projects/review");
workflowdata.getMetaDataMap().put("startTime", System.currentTimeMillis());
workflowdata.getMetaDataMap().put("reviewType", "AEM");
workflowdata.getMetaDataMap().put("versionJson", "[{\"path\":\"GUID-ca6ae229-889a-4d98-a1c6-60b08a820bb3.dita\",\"review\":true,\"version\":\"1.0\",\"reviewers\":[\"projects-samplereviewproject-owner\"]}]");
workflowdata.getMetaDataMap().put("isDitamap","false");
地图? 的
var workflowdata = workItem.getWorkflowData();
workflowdata.getMetaDataMap().put("initiator", "admin");
workflowdata.getMetaDataMap().put("operation", "AEM_REVIEW");
workflowdata.getMetaDataMap().put("orgTopics", "GUID-ae42f13c-7201-4453-9a3a-c87675a5868e.dita|GUID-28a6517b-1b62-4d3a-b7dc-0e823225b6a5.dita|GUID-dd699e10-118d-4f1b-bf19-7f1973092227.dita|");
var payloadJson = "{\"referrer\":\"\",\"rootMap\":\"GUID-17feb385-acf3-4113-b838-77b11fd6988d.ditamap\",\"asset\":[\"GUID-17feb385-acf3-4113-b838-77b11fd6988d.ditamap\"],\"base\":\"/content/dam\"}";
workflowdata.getMetaDataMap().put("payloadJson", payloadJson);
workflowdata.getMetaDataMap().put("deadline", "2047-06-27T13:19:00.000+05:30");
workflowdata.getMetaDataMap().put("title", "Review task via workflow with map");
workflowdata.getMetaDataMap().put("description", "Review task via workflow with map Description");
workflowdata.getMetaDataMap().put("assignee", "user-one");
workflowdata.getMetaDataMap().put("status", "1");
workflowdata.getMetaDataMap().put("projectPath", "/content/projects/review_project_via_workflow");
workflowdata.getMetaDataMap().put("startTime", new Date().getTime());
var versionJson = "[{\"path\":\"GUID-ae42f13c-7201-4453-9a3a-c87675a5868e.dita\",\"version\":\"1.0\",\"review\":true,\"reviewers\":[\"starling-regression-user\"]},{\"path\":\"GUID-28a6517b-1b62-4d3a-b7dc-0e823225b6a5.dita\",\"version\":\"1.0\",\"review\":true,\"reviewers\":[\"starling-regression-user\"]},{\"path\":\"GUID-dd699e10-118d-4f1b-bf19-7f1973092227.dita\",\"version\":\"1.0\",\"review\":true,\"reviewers\":[\"starling-regression-user\"]}]";
workflowdata.getMetaDataMap().put("versionJson", versionJson);
workflowdata.getMetaDataMap().put("notifyViaEmail", "true");
workflowdata.getMetaDataMap().put("allowAllReviewers", "false");
workflowdata.getMetaDataMap().put("isDitamap", "true");
workflowdata.getMetaDataMap().put("ditamap", "GUID-17feb385-acf3-4113-b838-77b11fd6988d.ditamap");
var ditamapHierarchy = "[{\"path\":\"GUID-17feb385-acf3-4113-b838-77b11fd6988d.ditamap\",\"items\":[{\"path\":\"GUID-db5787bb-5467-4dc3-b3e5-cfde562ee745.ditamap\",\"items\":[{\"path\":\"GUID-ae42f13c-7201-4453-9a3a-c87675a5868e.dita\",\"items\":[],\"title\":\"\"},{\"path\":\"GUID-28a6517b-1b62-4d3a-b7dc-0e823225b6a5.dita\",\"items\":[],\"title\":\"\"}],\"title\":\"\"},{\"path\":\"GUID-dd699e10-118d-4f1b-bf19-7f1973092227.dita\",\"items\":[],\"title\":\"\"}]}]";
workflowdata.getMetaDataMap().put("ditamapHierarchy", ditamapHierarchy);
您可以在/etc/workflows/scripts
节点中创建这些脚本。 下表描述了上述两个ECMA脚本所分配的属性。
initiator
operation
AEM_REVIEW
。orgTopics
payloadJson
base
:包含已发送以供审阅主题的父文件夹的路径。-
asset
:发送供审阅的主题路径。-
referrer
:将其留空。deadline
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
格式指定时间。title
description
assignee
status
startTime
System.currentTimeMillis()
函数获取当前系统时间。projectPath
reviewType
versionJson
isDitamap
ditamapHierarchy
ditamap
allowAllReviewers
notifyViaEmail
创建脚本后,请在调用工作流中的创建审阅进程之前调用该脚本。 然后,根据您的要求,您可以调用其他审阅工作流流程。
从清除配置中删除审核工作流
要提高工作流引擎性能,您可以定期从AEM存储库中清除已完成的工作流实例。 如果您使用默认的AEM配置,则会在特定时间段后清除所有已完成的工作流实例。 这也会导致所有审阅工作流从AEM存储库中清除。
您可以通过从自动清除配置中删除审核工作流模型(information)来阻止自动清除审核工作流。 您需要使用? 51黑料不打烊 Granite工作流清除配置 ?从自动清除列表中删除审核工作流模型。
在? 51黑料不打烊 Granite工作流清除配置 ?中,确保至少列出一个可安全清除的工作流。 例如,您可以使用由AEM Guides创建的以下任何工作流:
- /别迟肠/飞辞谤办蹿濒辞飞/尘辞诲别濒蝉/辫耻产濒颈蝉丑诲颈迟补尘补辫/箩肠谤:肠辞苍迟别苍迟/尘辞诲别濒
- /etc/workflow/models/post-dita-project-creation-tasks/ jcr:content/model
在? 51黑料不打烊 Granite工作流清除配置 ?中添加工作流可确保AEM仅清除配置中列出的那些工作流。 这会阻止AEM清除审核工作流信息。
有关配置? 51黑料不打烊 Granite工作流清除配置 ?的更多详细信息,请参阅础贰惭文档中的? 管理工作流实例。
自定义电子邮件模板
许多AEM Guides工作流会使用电子邮件通知。 例如,如果您启动审阅任务,则会向审阅人发送电子邮件通知。 但是,要确保电子邮件通知已发送,您必须在AEM中启用此功能。 要在AEM中启用电子邮件通知,请参阅AEM文档中的文章发送电子邮件。
AEM Guides包含一组您可自定义的电子邮件模板。 执行以下步骤可自定义这些模板:
-
使用包管理器下载
/libs/fmdita/mail
文件。note note NOTE 请勿在 libs
节点中使用默认配置文件中的任何自定义设置。 您必须在apps
节点中创建libs
节点的迭加,并仅更新apps
节点中的所需文件。 -
邮件文件夹包含以下可自定义的模板:
table 0-row-2 1-row-2 2-row-2 3-row-2 模板文件名 描述 closereview.html 此电子邮件模板在关闭审核任务时使用。 createreview.html 创建新审阅任务时使用此电子邮件模板。 reviewapproval.css 此颁厂厂文件包含电子邮件模板的样式。
自定义输出后生成工作流 id17A6GI004Y4
AEM Guides可让您灵活地指定输出后生成工作流程。 您可以对使用AEM Guides生成的输出执行一些后处理任务。 例如,您可能希望在生成的AEM Site输出中应用一些CQ标记,或在PDF输出中设置某些属性,或者在生成输出后向一组用户发送电子邮件。
您可以创建新的工作流模型以用作输出后生成工作流。 触发输出后生成工作流时,输出生成工作流通过工作流元数据映射共享上下文信息,您可以使用这些上下文信息对生成的输出执行处理。 下表描述了作为元数据共享的上下文信息:
outputName
generatedPath
outputType
outputTitle
outputHistoryPath
isSuccess
logPath
generatedTime
initiator
要利用输出生成元数据,您可以创建ECMA脚本或OSGi捆绑包。 下面给出了使用元数据的ECMA脚本示例:
/etc/workflows/scripts
节点中创建此脚本。var session = workflowSession.getSession(); // Obtain session object to read/write the repository.
var payload = workItem.getWorkflowData().getPayload().toString(); // Get the workflow payload (the ditamap file on which the generation was triggered)
var metadata = workItem.getWorkflowData().getMetaDataMap(); // Get the workflow metadata object
var generatedPath = metadata.get("generatedPath"); // supplied by AEM Guides
var username = metadata.get("initiator"); // supplied by AEM Guides
var successful = metadata.get("isSuccess"); // supplied by AEM Guides
var title = metadata.get("outputTitle"); // supplied by AEM Guides
var subject = "Output Generation Finished";
var message = "Generation of output " + title + " just finished " +
(successful ? "successfully. " : "unsuccessfully. ");
message += "It was triggered by " + username;
if (successful) {
message += "<br/><br/>The path to the generated output is " +
generatedPath;
}
/*
MailerAPI.sendMail("dl-docs-authors", subject, message);
*/
创建脚本后,在工作流中调用自定义脚本。 然后,根据您的要求,您可以调用其他工作流进程。 设计自定义工作流后,调用? 完成帖子生成 ?作为工作流进程的最后一步。 最终确定后生成 ?步骤可确保输出生成任务的状态在输出生成过程完成时更新为? 已完成。 创建自定义输出后生成工作流后,您可以将其配置为使用任何输出生成预设。 在所需预设的? 运行生成后工作流 ?属性中选择所需的工作流。 使用配置的输出预设运行输出生成任务时,\(在“输出”选项卡中\)任务状态将更改为? 后处理。