gpt4 book ai didi

servlets - CQ5 以编程方式运行工作流

转载 作者:行者123 更新时间:2023-12-03 23:36:04 24 4
gpt4 key购买 nike

我在 CQ 中创建了一个工作流,需要通过 XHR 以编程方式运行。

你们中的许多人可能都知道,CQ 文档并不是最好的(至少在这一点上)。如何以编程方式运行它?

最佳答案

在摸索了一段时间后,我编写了一个运行工作流模型的 servlet。

这是带注释的代码:

@Component
@Service
@Properties({
@Property(name = "sling.servlet.paths", value = "/bin/runmodel"),
@Property(name = "sling.servlet.methods", value = "GET")
})
public class RunWorkflowModel extends SlingSafeMethodsServlet {

static private final Logger log = LoggerFactory.getLogger(RunWorkflowModel.class);

@Reference
private WorkflowService workflowService;

@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
ResourceResolver resourceResolver = request.getResourceResolver();
Session session = resourceResolver.adaptTo(Session.class);

/* Get Parameters
* @param path = path you want to run the workflow on
* @param model = workflow model name you want to run. Typically found in /etc/workflow/models
*/
RequestParameterMap params = request.getRequestParameterMap();
String path = params.getValue("path").getString();
String model = params.getValue("model").getString();

// Create a workflow session
WorkflowSession wfSession = workflowService.getWorkflowSession(session);
try {
// Get the workflow model
WorkflowModel wfModel = wfSession.getModel(model);
// Get the workflow data
// The first param in the newWorkflowData method is the payloadType. Just a fancy name to let it know what type of workflow it is working with.
WorkflowData wfData = wfSession.newWorkflowData("JCR_PATH", path);
// Run the Workflow.
wfSession.startWorkflow(wfModel, wfData);
} catch (WorkflowException ex) {
response.getWriter().write("failed");
log.error("Error starting workflow.", ex);
}

response.getWriter().write("success");
}
}

这是 Ajax 调用
CQ.Ext.Ajax.request({
url: "/bin/runmodel",
method: "GET",
params : {
"path" : "/content/path to item you want the workflow run on",
"model" : "/etc/workflow/models/name of model/jcr:content/model"
},
success: function() {
console.log("success");
},
failure: function(response) {
CQ.Notification.notifyFromResponse(response);
}
});

关于servlets - CQ5 以编程方式运行工作流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15233798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com