Alfresco рабочий процесс запуска через код Java - PullRequest
3 голосов
/ 25 ноября 2011

Я хочу разработать приложение предпочтительно в среде сервлетов.Я хочу, чтобы из моего приложения я запускал веб-скрипты рабочего процесса из коробки.Alfresco предоставил спокойный URL для этого.

Может ли кто-нибудь сказать мне, как мне вызвать остальную часть URL для вызова сценариев из моего Java-кода?webservice.

Мне нужно немного ясного и подробного объяснения ..

Спасибо

Ответы [ 5 ]

7 голосов
/ 28 ноября 2011

Вы можете использовать клиентскую библиотеку Apache HTTP для выполнения RESTful (запросы / сообщения JSON).

Вот руководство, как сделать сообщение / получить доступ к серверу, похожему на Alfresco: RESTful Java-клиент

Замените URL-адреса примера на URL-адреса Alfresco, определенные в REST API Workflow. Кроме того, прежде чем делать все это, вам необходимо подтвердить подлинность на Alfresco.

  1. Используйте тот же пример HTTP-клиента, чтобы получить билет с URL http://localhost:8080/alfresco/service/api/login?u=admin&pw=admin
  2. Вы получите ответ вроде: <ticket>TICKET_887add1e01b5c4c0cd58ac11c768f8e54c1eabf4</ticket>
  3. Сохранить значение тикета элемента в переменной Java
  4. Используйте билет с одной из служб API REST рабочего процесса, например, http://localhost:8080/alfresco/service/api/workflow-definitions представьте билет следующим образом: http://localhost:8080/alfresco/service/api/workflow-definitions?alf_ticket=TICKET_887add1e01b5c4c0cd58ac11c768f8e54c1eabf4
  5. Делай с результатом что хочешь:)
4 голосов
/ 25 ноября 2011

Смотрите здесь подробное описание Workflow REST API: http://wiki.alfresco.com/wiki/Workflow_REST_API

Вот, например, как запустить рабочий процесс: http://wiki.alfresco.com/wiki/Workflow_REST_API#Post_Workflow_Instance

Примеры :

Вызов службы REST на свежем воздухе с использованием пружины: http://tedwise.com/2010/06/14/accessing-rest-services-from-spring-3/

3 голосов
/ 25 ноября 2011

Alfresco не предоставляет никаких веб-сервисов SOAP, связанных с рабочими процессами.Предпочтительным удаленным интерфейсом для рабочих процессов является набор веб-сценариев, которые можно перечислить в 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

Обратите внимание, что эти URL-адреса во многом похожи на семейства API-интерфейсов, и ссылки покажут вам большечем один эффективный удаленный вызов API для каждого элемента, возможно, отвечает на различные HTTP-глаголы (например, GET, POST, DELETE) или включает больше входных параметров в шаблон URL.

1 голос
/ 23 сентября 2014

Пример с банкой вы можете найти ниже согласно предложению Тахира. Он предоставит ответ для домашней папки и подпапки. Вы можете указать свой соответствующий URL, чтобы получить ответ Джейсона.

https://drive.google.com/file/d/0B9B1NsG0lyx6Tno2d1F6RElrTk0/edit?usp=sharing

1 голос
/ 03 декабря 2011

Вот пример веб-скрипта для достижения этой цели.Сценарий может быть вызван с помощью URL

:/alfresco/service/workflows/approveandreview/start/" rel="nofollow">http://:/alfresco/service/workflows/approveandreview/start/

. Это запустит рабочий процесс проверки и утверждения на узле, указанном в URL-адресе (после /start).

Вы можете использовать Apache HTTPClient для вызова URL из кода Java.


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>

Надеждаэто помогает.Дайте мне знать, если возникнут проблемы.

...