웹 스크립트를 통해 Alfresco 워크 플로우 진행
문제
Alfresco 문서 참조가 있습니다. 내가 찾고있는 것은 해당 문서에 첨부 된 워크 플로에 액세스하고 JavaScript를 통해 마무리 (또는 다음 전환으로 진행)에 액세스하는 방법입니다.
웹의 거의 모든 예는 워크 플로를 시작하는 방법을 보여주고 대시에서 작업 ID를 알고 있다면 작업 명령 프로세서 (/alfresco/command/task/end/[/transition])를 호출 할 수 있지만 어떻게해야합니까? 문서 참조에서만 시작하는 서버 측 웹 스크립트와 동일합니까?
문서에서 워크 플로에 액세스하고 프로그래밍 방식으로 관리하는 방법이 있어야합니다.
해결책
문서 noderef에서 다음과 같은 현재 작업을 표시 할 수 있습니다.
var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach (currWorkflow in theDocument.activeWorkflows)
{
var path = currWorkflow.paths[currWorkflow.paths.length-1];
var task = path.tasks[0];
for (var transitionKey in task.transitions)
{
if (task.transitions[transitionKey] == transitionId)
{
path.signal(transitionId);
break;
}
}
}
기본 전환에 신호를 보내려면 내부 루프를 건너 뛰고이를 수행 할 수 있습니다.
var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach (currWorkflow in theDocument.activeWorkflows)
{
var path = currWorkflow.paths[currWorkflow.paths.length-1];
var task = path.tasks[0];
// Signal default transition
path.signal(null);
}
다른 팁
글쎄, 나는 아직도 전환 방법을 모르지만, 내가 알게 된 몇 가지가 있습니다.
먼저 워크 플로우에 액세스 할 수 있습니다. 문서가 참여하고 취소 할 수 있습니다.
for each (workflow in document.activeWorkflows) {
workflow.cancel();
}
그러나 나는 여전히 작업을 진행하는 방법을 잘 모르겠습니다. 나는 과제에 도달하고 그것으로 무언가를 할 수 있습니다.
var task = workflow.getTask(taskId);
task.endTask(transitionId);
... 그러나 나는 여전히 프로그래밍 방식으로 또는 Alfresco를 통해 TaskID 또는 TransitionID에 도달하는 방법을 전혀 모른다.
편집 : IT를 알아 냈습니다. TransitionID는 실제로 워크 플로 프로세스 디포 화 XML에 정의 된대로 전환 이름입니다.
<transition name="SomeTransitionId" to="end">
또한 워크 플로에서 작업 목록을 얻으려면 경로 (Workflow.getPaths ())를 통해 반복 한 다음 Path.getTasks ()를 사용한 작업을 통해 반복 할 수 있습니다.