1 package org
.argeo
.slc
.jcr
.execution
;
4 import javax
.jcr
.NodeIterator
;
5 import javax
.jcr
.Property
;
6 import javax
.jcr
.RepositoryException
;
8 import org
.argeo
.ArgeoException
;
9 import org
.argeo
.slc
.core
.execution
.ProcessThread
;
10 import org
.argeo
.slc
.execution
.ExecutionFlowDescriptor
;
11 import org
.argeo
.slc
.execution
.ExecutionModulesManager
;
12 import org
.argeo
.slc
.jcr
.SlcJcrUtils
;
13 import org
.argeo
.slc
.jcr
.SlcNames
;
14 import org
.argeo
.slc
.process
.RealizedFlow
;
16 public class JcrProcessThread
extends ProcessThread
implements SlcNames
{
18 public JcrProcessThread(ExecutionModulesManager executionModulesManager
,
19 JcrExecutionProcess process
) {
20 super(executionModulesManager
, process
);
24 protected void process() {
26 Node realizedFlowNode
= getNode().getNode(SLC_FLOW
);
27 // we just manage one level for the time being
28 NodeIterator nit
= realizedFlowNode
.getNodes(SLC_FLOW
);
29 while (nit
.hasNext()) {
30 process(nit
.nextNode());
32 } catch (RepositoryException e
) {
33 throw new ArgeoException("Cannot process " + getNode(), e
);
37 protected void process(Node realizedFlowNode
) throws RepositoryException
{
38 if (realizedFlowNode
.hasNode(SLC_ADDRESS
)) {
39 String flowPath
= realizedFlowNode
.getNode(SLC_ADDRESS
)
40 .getProperty(Property
.JCR_PATH
).getString();
41 // TODO: convert to local path if remote
43 Node flowNode
= realizedFlowNode
.getSession().getNode(flowPath
);
44 String flowName
= flowNode
.getProperty(SLC_NAME
).getString();
46 String executionModuleName
= SlcJcrUtils
47 .flowExecutionModuleName(flowPath
);
48 String executionModuleVersion
= SlcJcrUtils
49 .flowExecutionModuleVersion(flowPath
);
51 RealizedFlow realizedFlow
= new RealizedFlow();
52 realizedFlow
.setModuleName(executionModuleName
);
53 realizedFlow
.setModuleVersion(executionModuleVersion
);
55 ExecutionFlowDescriptor efd
= new ExecutionFlowDescriptor(flowName
,
57 realizedFlow
.setFlowDescriptor(efd
);
59 execute(realizedFlow
, true);
63 protected Node
getNode() {
64 return ((JcrExecutionProcess
) getProcess()).getNode();