workflow - 通过自定义工作流触发时未执行推出
问题描述
我们有自定义工作流程,其中有一个流程步骤来触发推出 [标准推出]。流程步骤已成功完成,但未执行推出。
@Component(
service = WorkflowProcess.class,
property = {
"service.description=Workflow description",
"service.vendor=Project",
"process.label=Project"
}
)
public class RolloutProcessStep implements WorkflowProcess {
private static final Logger LOG = LoggerFactory.getLogger(RolloutProcessStep.class);
@Reference
private ResourceResolverFactory resourceResolverFactory;
@Reference
private RolloutManager rolloutManager;
public void execute(WorkItem item, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
try (ResourceResolver resolver = resourceResolverFactory.getServiceResourceResolver(Collections.singletonMap(
ResourceResolverFactory.SUBSERVICE, RolloutProcessStep.class.getName()))) {
triggerRollout(path, resolver);
} catch (LoginException e) {
LOG.error("Error in getting the resolver. Aborting.", e);
throw new WorkflowException("Error in getting the resolver.");
} catch (Exception e) {
LOG.error("Error in during the step. Aborting.", e);
throw new WorkflowException("Error in during the Rollout Process Step.");
}
}
private void triggerRollout(String path, ResourceResolver resolver) {
Resource source = resolver.getResource(path);
if (source == null) {
return;
}
try {
LiveRelationshipManager relationshipManager = resolver.adaptTo(LiveRelationshipManager.class);
PageManager pageManager = resolver.adaptTo(PageManager.class);
// Checks if the given source is the source of a Live Copy relationship.
if (!relationshipManager.isSource(source)) {
LOG.warn("Resource Not a valid source {}.", source);
return;
}
Page page = pageManager.getPage(source.getPath());
if (page == null) {
LOG.warn("Failed to resolve source page {}.", source);
}
final RolloutManager.RolloutParams params = new RolloutManager.RolloutParams();
params.master = page;
params.isDeep = false;
params.reset = false;
params.trigger = RolloutManager.Trigger.ROLLOUT;
LOG.info("RolloutParams {}.", params.toString());
rolloutManager.rollout(params);
} catch (WCMException e) {
LOG.error("Failed to get live relationships.", e);
}
}
}
PS:我们已经配置了蓝图,并且使用触摸 UI 执行的部署按预期工作。
如果我遗漏了什么,请告诉我。
解决方案
通过向服务用户提供访问此流程步骤的权限解决了问题。
推荐阅读
- swift - 如何从 firebase 数据库获取下载 url 并将其加载到不同视图控制器的 tableview imageview 中?
- python-3.x - 张量板 1.14 的分段错误
- javascript - 用 jQuery 填充 DropDownList
- amazon-web-services - 如何使用 AWS Cognito 限制对 S3 文件的访问?
- .net - 通过 VB .net 中的 Datagridview.SelectedRows 修改数据集
- python - 在 concurrent.futures 中使用此功能时不起作用
- iis - MSDEPLOY 得到 ERROR_USER_UNAUTHORIZED。我在哪里可以找到原因?
- .htaccess - htaccess URL 重写 domain.com.php 页面格式?
- android - 如何为 API 级别 20 以上的 Android 设备请求 AudioFocus?
- java - 你怎么写这个 s = ( (n % 2 ) == 0 ? "0" : "1") +s; 作为 if-else 语句?