Alfresco工作流通过java代码触发

时间:2011-11-25 11:54:20

标签: java web-services alfresco

我想开发一个优先考虑servlet环境的应用程序。 我想从我的应用程序触发露天开箱即用的工作流网页脚本。 Alfresco为此提供了宁静的URL。

任何人都可以告诉我如何调用其余的URL来从我的java代码中调用webscripts。

任何人都可以给我一个示例代码或手册,因为我在网络服务方面经验有限。

我需要清楚详细的解释..

由于

5 个答案:

答案 0 :(得分:7)

您可以使用Apache HTTP Client库来执行RESTful(JSON请求/帖子)。

以下是如何发布/获取Alfresco服务器的教程:RESTful Java client

将示例网址替换为Workflow REST API中定义的Alfresco网址。 此外,在您完成所有这些操作之前,您需要authenticate到Alfresco。

  1. 使用相同的HTTP客户端示例获取包含网址http://localhost:8080/alfresco/service/api/login?u=admin&pw=admin
  2. 的故障单
  3. 您会收到类似:<ticket>TICKET_887add1e01b5c4c0cd58ac11c768f8e54c1eabf4</ticket>
  4. 的回复
  5. 将元素的票证值保存在Java变量
  6. 将票证与其中一个工作流REST API服务一起使用,例如http://localhost:8080/alfresco/service/api/workflow-definitions所以如下所示:http://localhost:8080/alfresco/service/api/workflow-definitions?alf_ticket=TICKET_887add1e01b5c4c0cd58ac11c768f8e54c1eabf4
  7. 根据结果做任何你喜欢的事情:)

答案 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