《我要写一个工作流》——001

    首先定义模型,采用xml格式。一下是测试代码。

package com.jc.bus.workflow.web;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

@Controller
public class WorkFlowController {

	
	@RequestMapping(value = {"setting"})
	public ModelAndView fetchSetting (){
		ModelAndView mav = new ModelAndView("/workflow/setting");
		
		return mav;
	}
	
	@RequestMapping(value = {"create"})
	@ResponseBody
	public Map<String, Object> createWorkflow (HttpServletRequest request, String workflowName){
		Map<String, Object> retmsg = new HashMap<String, Object>();
		String path = request.getServletContext().getRealPath("/");
		String filePath = path.concat("workflow/").concat(workflowName).concat(".xml");
		File xmlFile = new File(filePath);
		try{
			Writer fw = new FileWriter(xmlFile);
			fw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<root></root>");
			fw.flush();
			fw.close();
			retmsg.put("success", true);
		}catch (Exception e){
			retmsg.put("success", false);
			retmsg.put("msg", e.toString());
		}
		return retmsg;
	}
	
	@RequestMapping(value = {"add"})
	@ResponseBody
	public Map<String, Object> addNode (HttpServletRequest request, String workflowName, String nodeName, String parent){
		Map<String, Object> retmsg = new HashMap<String, Object>();
		String path = request.getServletContext().getRealPath("/");
		String filePath = path.concat("workflow/").concat(workflowName).concat(".xml");
		
		try{
			File inputFile = new File(filePath);
			System.out.println(inputFile.exists());
	        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
	        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
	        Document doc = dBuilder.parse(inputFile);
	        doc.getDocumentElement().normalize();
	        NodeList nList = doc.getElementsByTagName("root");
	        Node root = nList.item(0);
	        Element newChild = doc.createElement(nodeName);
	        newChild.setAttribute("node1", "gogogo");
	        root.appendChild(newChild);
	        
	        // write the content into xml file
	        TransformerFactory transformerFactory = TransformerFactory.newInstance();
	        Transformer transformer = transformerFactory.newTransformer();
	        DOMSource source = new DOMSource(doc);
	        StreamResult result = new StreamResult(inputFile);
	        transformer.transform(source, result);
	        
		}catch (Exception e){
			retmsg.put("success", false);
			retmsg.put("msg", e.toString());
		}
		
		return retmsg;
	}
	
}

猜你喜欢

转载自aa80303857.iteye.com/blog/2408161