public void startElement(String namespaceURI, String localName,
			String qName, Attributes attr) throws SAXException {
		if ("process".equalsIgnoreCase(qName)) {
			buildProcessConfig(attr);
		}
		if (this.isProcessNode(qName)) {
			String nodeId = attr.getValue("id");
			this.processNode = this.buildProcessNode(qName, nodeId, attr);
			this.processNode.setEnterInvoker(attr.getValue("enterInvoker"));
			this.processNode.setLeaveInvoker(attr.getValue("leaveInvoker"));
			this.nodes.put(this.processNode.getProcessNodeId(), this.processNode);

		}
		if ("task".equalsIgnoreCase(qName)) {
			this.taskConfig = new ProcessNodeTask();
			this.taskConfig.setName(attr.getValue("name"));
			this.taskConfig.setGeneratorInvoker(attr
					.getValue("generatorInvoker"));
			this.taskConfig.setStepInvoker(attr.getValue("stepInvoker"));
			this.taskConfig.setTaskCreatedInvoker(attr.getValue("taskCreatedInvoker"));
			this.taskConfig.setTaskFinishedInvoker(attr.getValue("taskFinishedInvoker"));
			this.taskConfig.setLimitInvoker(attr.getValue("limitInvoker"));
			this.taskConfig.setExpireInvoker(attr.getValue("expireInvoker"));
		}
		if ("assignment".equalsIgnoreCase(qName)) {
			if (this.taskConfig == null)
				throw new RuntimeException(
						"assignment Element must inside a task Node!");
			this.taskConfig.setActorVar(attr.getValue("actorVar"));
			this.taskConfig.setActorTypeVar(attr.getValue("actorTypeVar"));
			this.taskConfig.setCreatorVar(attr.getValue("creatorVar"));
			this.taskConfig.setCreatorTypeVar(attr.getValue("creatorTypeVar"));
			this.taskConfig.setProjectTypeVar(attr.getValue("projectTypeVar"));
			this.taskConfig.setProjectIdVar(attr.getValue("projectIdVar"));
			

		}

		if ("transit".equalsIgnoreCase(qName)) {
			this.transition = new Transition();
			this.transition.setTransitName(attr.getValue("id"));
			this.transition.setSrc(this.processNode);
			this.transition.setTargetNodeId(attr.getValue("to"));
			this.transition.setProcessConfig(processConfig);
			this.transition.setConditionInvoker(attr
					.getValue("conditionInvoker"));
			this.transitions.add(this.transition);

		}

		if ("action".equalsIgnoreCase(qName)) {
			this.action = new Action(attr.getValue("invoker"));
		}

	}