我想开发一个优先考虑servlet环境的应用程序。 我想从我的应用程序触发露天开箱即用的工作流网页脚本。 Alfresco为此提供了宁静的URL。
任何人都可以告诉我如何调用其余的URL来从我的java代码中调用webscripts。
任何人都可以给我一个示例代码或手册,因为我在网络服务方面经验有限。
我需要清楚详细的解释..
由于
答案 0 :(得分:7)
您可以使用Apache HTTP Client库来执行RESTful(JSON请求/帖子)。
以下是如何发布/获取Alfresco服务器的教程:RESTful Java client
将示例网址替换为Workflow REST API中定义的Alfresco网址。 此外,在您完成所有这些操作之前,您需要authenticate到Alfresco。
http://localhost:8080/alfresco/service/api/login?u=admin&pw=admin
<ticket>TICKET_887add1e01b5c4c0cd58ac11c768f8e54c1eabf4</ticket>
http://localhost:8080/alfresco/service/api/workflow-definitions
所以如下所示:http://localhost:8080/alfresco/service/api/workflow-definitions?alf_ticket=TICKET_887add1e01b5c4c0cd58ac11c768f8e54c1eabf4
答案 1 :(得分:4)
在此处查看Workflow REST API的详细说明:http://wiki.alfresco.com/wiki/Workflow_REST_API
以下是如何启动工作流程:http://wiki.alfresco.com/wiki/Workflow_REST_API#Post_Workflow_Instance
<强>实施例强>:
使用spring调用alfresco REST服务: http://tedwise.com/2010/06/14/accessing-rest-services-from-spring-3/
答案 2 :(得分:3)
Alfresco不公开任何与工作流相关的SOAP Web服务。工作流的首选远程接口是一组Web脚本,您可以在http://your.alfresco.url/alfresco/service/index/uri/
列出:
/api/workflow/task/end/{taskId}
/api/workflow/task/end/{taskId}/{transitionId}
/api/workflow-definitions
/api/workflow-definitions/{workflow_definition_id}/workflow-instances
/api/workflow-instances
/api/workflow-instances/{workflow_instance_id}
/api/workflow-instances/{workflow_instance_id}/task-instances
请注意,这些网址更像是API系列,链接会显示每个项目多个有效的远程API调用,可能会响应不同的HTTP谓词(例如GET,POST,DELETE)或包含更多输入URL模板中的参数。
答案 3 :(得分:1)
这是一个实现此目的的Web脚本示例。可以使用URL
调用脚本http://<server>:<port>/alfresco/service/workflows/approveandreview/start/
这将开始审核&amp;批准URL中路径指定的节点上的工作流程(在/ start之后)。
您可以使用Apache HTTPClient从Java代码调用URL。
<强> StartWorkflow.get.desc.xml 强>
<webscript>
<shortname>Start Review and Approve Workflow</shortname>
<description>Script to start Review and Approve Workflow on a Node</description>
<url>/workflows/approveandreview/start/{path}</url>
<format default="xml">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
</webscript>
<强> StartWorkflow.get.js 强>
// Get the node on which workflow is to be started
var theNode = roothome.childByNamePath(url.extension);
logger.log("theNode=" + theNode);
if (theNode == undefined) {
status.code = 404;
status.message = "Node at " + url.extension + " does not exist";
status.redirect = true;
}
else if (theNode.isContainer) {
status.code = 404;
status.message = "Node at " + url.extension + " is not a content node";
status.redirect = true;
}
else {
var workflowPackage = workflow.createPackage();
workflowPackage.addNode(theNode);
var workflowDef = workflow.getDefinitionByName("activiti$activitiReview");
var parameters = new Object();
parameters["bpm:assignee"] = person;
var workflowPath = workflowDef.startWorkflow(workflowPackage, parameters);
if (workflowPath == undefined) {
status.code = 500;
status.message = "Error starting workflow";
status.redirect = true;
}
status.message = "Done";
}
<强> StartWorkflow.get.xml.ftl 强>
<?xml version="1.0" encoding="UTF-8"?>
<approveandreview>
<status>${status.code}</status>
<message>${status.message}</message>
</approveandreview>
希望这会有所帮助。如果有任何问题,请告诉我。
答案 4 :(得分:1)
根据Tahir建议你可以在下面找到jar的例子。它将为主文件夹和子文件夹提供响应。你可以把你自己的网址放到杰森的回应中。
https://drive.google.com/file/d/0B9B1NsG0lyx6Tno2d1F6RElrTk0/edit?usp=sharing