【发布时间】:2014-04-03 09:25:55
【问题描述】:
目前我正在使用 XML、JSP 和 Activiti Workflow Engine。在我的项目中,我有以下流程:
- 员工提交 JSP 表单
- 提交表单后,我将更新我的 xml 文件以更改标签的名称。例如,从:“签署文档”到“签署文档 1”。这里的1代表我数据库中数据的ID
- 文件更新成功后,程序会根据我更新的XML文件直接部署Activiti Workflow Engine Process
我已经成功地更新了我的 xml 文件并部署了流程,但是当我遇到了 XML 标记名称的问题时。问题是:
- XML文件更新成功后,我的程序不会直接使用最新的文件,而是使用旧的文件。例如,在我更新 XML 文件之前,标签的名称是“Sign Form”,而在我更新文件之后,文件上的标签名称将变为“Sign Form 1”。但是,当我检查我的 activiti 数据库时,它显示 activiti 仍然使用标记名称为“Sign Form”而不是“Sign Form 1”的 xml 文件
我猜是因为我需要在运行部署之前先刷新 XML 文件。但我不知道如何在 JSP 或 Java 上这样做。任何人都可以帮助我吗?谢谢
这是我的代码:
try {
String filepath = "path/to/the/filename.bpmn20.xml";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(filepath);
// Get the process element by tag name directly
Node userTask = doc.getElementsByTagName("userTask").item(0);
// update userTask attribute
NamedNodeMap attr = userTask.getAttributes();
Node nodeAttr = attr.getNamedItem("name");
nodeAttr.setTextContent("Review and Sign Form "+id);
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(filepath));
transformer.transform(source, result);
System.out.println("Done");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (SAXException sae) {
sae.printStackTrace();
}
【问题讨论】:
-
如何提交修改的?
-
你能发布你如何更新数据库中的xml的代码吗?
-
我认为这不是我的 xml 文件的问题。但是,在我的 java 代码上:这是我的 java 代码:
ch.changeBO(id+1); dp.deployProcess();ch.changeBO(id+1) 用于更改 XML 文件,dp.deployProcess() 用于部署流程(将使用我的 xml 文件)我认为问题是我尝试使用我的xml文件没有刷新它们,所以编译器没有注意到变化。