更新签名状态
当用户完成签名仪式时,会触发UpdateSignatureStatus工作流。 以下是工作流的流程
更新签名状态是自定义流程步骤。
实施自定义流程步骤的主要原因是为了扩展AEM Workflow。 以下是用于更新签名状态的自定义代码。
此自定义流程步骤中的代码引用SignMultipleForms服务。
@Component(property = {
Constants.SERVICE_DESCRIPTION + "=Update Signature Status in DB",
Constants.SERVICE_VENDOR + "=Adobe Systems",
"process.label" + "=Update Signature Status in DB"
})
public class UpdateSignatureStatusWorkflowStep implements WorkflowProcess {
private static final Logger log = LoggerFactory.getLogger(UpdateSignatureStatusWorkflowStep.class);@Reference
SignMultipleForms signMultipleForms;@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
String payloadPath = workItem.getWorkflowData().getPayload().toString();
String dataFilePath = payloadPath + "/Data.xml/jcr:content";
Session session = workflowSession.adaptTo(Session.class);
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document xmlDocument = null;
Node xmlDataNode = null;
try {
xmlDataNode = session.getNode(dataFilePath);
InputStream xmlDataStream = xmlDataNode.getProperty("jcr:data").getBinary().getStream();
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
xmlDocument = builder.parse(xmlDataStream);
XPath xPath = javax.xml.xpath.XPathFactory.newInstance().newXPath();
org.w3c.dom.Node node = (org.w3c.dom.Node) xPath.compile("/afData/afUnboundData/data/guid").evaluate(xmlDocument, javax.xml.xpath.XPathConstants.NODE);
String guid = node.getTextContent();
StringWriter writer = new StringWriter();
IOUtils.copy(xmlDataStream, writer, StandardCharsets.UTF_8);
System.out.println("After ioutils copy" + writer.toString());
signMultipleForms.updateSignatureStatus(writer.toString(), guid);
}
catch(Exception e) {
log.debug(e.getMessage());
}
}
}
资源
更新签名状态工作流可以是 从此处下载
后续步骤
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e