Java 以编程方式在AEM中添加节点?
我需要使用java服务在AEM中创建一个节点。我创建了一个工作流,其中一个流程在Java 以编程方式在AEM中添加节点?,java,service,aem,Java,Service,Aem,我需要使用java服务在AEM中创建一个节点。我创建了一个工作流,其中一个流程在content/dam/Test中触发一个java服务 我需要使用java服务创建一个节点还是简单地通过编程创建一个节点?工作流会话可以适应JCR会话,从那里您可以通过 有多种API可用于创建节点: 1.使用节点API 使资源适应节点 Node-Node=resource.adapto(Node.class) 然后使用函数“addNode(java.lang.String relPath,java.lang.Str
content/dam/Test
中触发一个java服务
我需要使用java服务创建一个节点还是简单地通过编程创建一个节点?工作流会话可以适应JCR会话,从那里您可以通过
有多种API可用于创建节点:
1.使用节点API
- 使资源适应节点
Node-Node=resource.adapto(Node.class)代码>
- 然后使用函数“addNode(java.lang.String relPath,java.lang.String primaryNodeTypeName)”添加一个节点
node.addNode(nodeName,NodePrimaryType)代码>
- 您可以使用函数“setProperty(java.lang.String name,Value)”添加属性
- 保存会话,以便保存新节点及其属性
JCRUtil有两个API:
- ApacheJackrabbit 2.0-
- 以及用于常见JCR任务的另一个实用程序-
import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.WorkflowProcess;
import com.adobe.granite.workflow.metadata.MetaDataMap;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.osgi.framework.Constants;
import javax.jcr.Node;
import javax.jcr.Session;
@Component
@Service
@Properties({@Property(name = Constants.SERVICE_DESCRIPTION, value = "Some Service")})
public class AddTheNodeWorkflow implements WorkflowProcess {
@Override
public final void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
try {
final String payloadPath = getPayloadPath(workItem);
final Session session = workflowSession.adaptTo(Session.class);
// get the node for the workflow payload
final Node payloadNode = session.getNode(payloadPath);
// add the node
final Node somenode = payloadNode.addNode("somenode");
somenode.setProperty("myproperty", "my property value");
} catch (Exception e) {
e.printStackTrace();
}
}
private String getPayloadPath(WorkItem workItem) {
return workItem.getWorkflowData().getPayload().toString();
}
}