Pārlūkot izejas kodu

优化ReposioryService实现,添加RepositoryReader接口,用于开发人员读取知识库信息使用

jacky6024 8 gadi atpakaļ
vecāks
revīzija
b542c99d58
100 mainītis faili ar 1210 papildinājumiem un 1136 dzēšanām
  1. 3 7
      urule-console/src/main/java/com/bstek/urule/console/DefaultKnowledgePackageService.java
  2. 270 0
      urule-console/src/main/java/com/bstek/urule/console/repository/BaseRepositoryService.java
  3. 67 0
      urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryReader.java
  4. 2 27
      urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryRefactor.java
  5. 7 12
      urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryResourceProvider.java
  6. 18 22
      urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryService.java
  7. 453 720
      urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryServiceImpl.java
  8. 14 10
      urule-console/src/main/java/com/bstek/urule/console/repository/permission/PermissionServiceImpl.java
  9. 7 3
      urule-console/src/main/java/com/bstek/urule/console/servlet/client/ClientConfigServletHandler.java
  10. 68 52
      urule-console/src/main/java/com/bstek/urule/console/servlet/common/CommonServletHandler.java
  11. 12 8
      urule-console/src/main/java/com/bstek/urule/console/servlet/flow/RuleFlowDesignerServletHandler.java
  12. 37 22
      urule-console/src/main/java/com/bstek/urule/console/servlet/frame/FrameServletHandler.java
  13. 1 1
      urule-console/src/main/java/com/bstek/urule/console/servlet/knowledge/LoadKnowledgeServletHandler.java
  14. 42 32
      urule-console/src/main/java/com/bstek/urule/console/servlet/permission/PermissionConfigServletHandler.java
  15. 1 1
      urule-console/src/main/java/com/bstek/urule/console/servlet/respackage/PackageServletHandler.java
  16. 8 5
      urule-console/src/main/java/com/bstek/urule/console/servlet/ul/ULEditorServletHandler.java
  17. 19 15
      urule-console/src/main/java/com/bstek/urule/console/servlet/xml/XmlServletHandler.java
  18. 2 5
      urule-core/src/main/java/com/bstek/urule/builder/KnowledgeBuilder.java
  19. 1 4
      urule-core/src/main/java/com/bstek/urule/builder/ResourceBase.java
  20. 3 6
      urule-core/src/main/java/com/bstek/urule/builder/ResourceLibraryBuilder.java
  21. 1 4
      urule-core/src/main/java/com/bstek/urule/builder/RulesRebuilder.java
  22. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/ActionLibraryResourceBuilder.java
  23. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/ConstantLibraryResourceBuilder.java
  24. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/DecisionTableResourceBuilder.java
  25. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/DecisionTreeResourceBuilder.java
  26. 0 4
      urule-core/src/main/java/com/bstek/urule/builder/resource/FileResourceProvider.java
  27. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/FlowResourceBuilder.java
  28. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/ParameterLibraryResourceBuilder.java
  29. 1 1
      urule-core/src/main/java/com/bstek/urule/builder/resource/ResourceBuilder.java
  30. 0 1
      urule-core/src/main/java/com/bstek/urule/builder/resource/ResourceProvider.java
  31. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/RuleSetResourceBuilder.java
  32. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/ScorecardResourceBuilder.java
  33. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/ScriptDecisionTableResourceBuilder.java
  34. 2 2
      urule-core/src/main/java/com/bstek/urule/builder/resource/VariableLibraryResourceBuilder.java
  35. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/AbstractParser.java
  36. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/AbstractRuleParser.java
  37. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/ActionLibraryParser.java
  38. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/CommonFunctionActionParser.java
  39. 3 3
      urule-core/src/main/java/com/bstek/urule/parse/ComplexArithmeticParser.java
  40. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/ConsolePrintActionParser.java
  41. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/ConstantLibraryParser.java
  42. 3 3
      urule-core/src/main/java/com/bstek/urule/parse/CriteriaParser.java
  43. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/CriterionParser.java
  44. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/ExecuteMethodActionParser.java
  45. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/JunctionParser.java
  46. 11 11
      urule-core/src/main/java/com/bstek/urule/parse/LeftParser.java
  47. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/LhsParser.java
  48. 5 5
      urule-core/src/main/java/com/bstek/urule/parse/LoopRuleParser.java
  49. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/NamedJunctionParser.java
  50. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/OtherParser.java
  51. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/ParameterLibraryParser.java
  52. 3 3
      urule-core/src/main/java/com/bstek/urule/parse/ParenParser.java
  53. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/Parser.java
  54. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/RhsParser.java
  55. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/RuleParser.java
  56. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/RuleSetParser.java
  57. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/SimpleArithmeticParser.java
  58. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/SpringBeanParser.java
  59. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/ValueParser.java
  60. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/VariableAssignActionParser.java
  61. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/VariableCategoryParser.java
  62. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/VariableLibraryParser.java
  63. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/VariableParser.java
  64. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/decisiontree/ActionTreeNodeParser.java
  65. 5 5
      urule-core/src/main/java/com/bstek/urule/parse/decisiontree/ConditionTreeNodeParser.java
  66. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/decisiontree/DecisionTreeParser.java
  67. 3 3
      urule-core/src/main/java/com/bstek/urule/parse/decisiontree/VariableTreeNodeParser.java
  68. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/ActionLibraryDeserializer.java
  69. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/ConstantLibraryDeserializer.java
  70. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/DecisionTableDeserializer.java
  71. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/DecisionTreeDeserializer.java
  72. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/Deserializer.java
  73. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/FlowDeserializer.java
  74. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/ParameterLibraryDeserializer.java
  75. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/RuleSetDeserializer.java
  76. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/ScorecardDeserializer.java
  77. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/ScriptDecisionTableDeserializer.java
  78. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/deserializer/VariableLibraryDeserializer.java
  79. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/ActionNodeParser.java
  80. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/DecisionNodeParser.java
  81. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/EndNodeParser.java
  82. 2 2
      urule-core/src/main/java/com/bstek/urule/parse/flow/FlowDefinitionParser.java
  83. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/ForkNodeParser.java
  84. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/JoinNodeParser.java
  85. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/RuleNodeParser.java
  86. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/RulePackageNodeParser.java
  87. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/ScriptNodeParser.java
  88. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/flow/StartNodeParser.java
  89. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/scorecard/AttributeRowParser.java
  90. 3 3
      urule-core/src/main/java/com/bstek/urule/parse/scorecard/CardCellParser.java
  91. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/scorecard/CustomColParser.java
  92. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/scorecard/ScorecardParser.java
  93. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/table/CellParser.java
  94. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/table/ColumnParser.java
  95. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/table/DecisionTableParser.java
  96. 5 5
      urule-core/src/main/java/com/bstek/urule/parse/table/JointParser.java
  97. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/table/RowParser.java
  98. 1 1
      urule-core/src/main/java/com/bstek/urule/parse/table/ScriptCellParser.java
  99. 4 4
      urule-core/src/main/java/com/bstek/urule/parse/table/ScriptDecisionTableParser.java
  100. 0 1
      urule-core/src/main/java/com/bstek/urule/runtime/service/KnowledgePackageService.java

+ 3 - 7
urule-console/src/main/java/com/bstek/urule/console/DefaultKnowledgePackageService.java

@@ -37,11 +37,7 @@ public class DefaultKnowledgePackageService implements KnowledgePackageService{
 	private RepositoryService repositoryService;
 	
 	@Override
-	public KnowledgePackage buildKnowledgePackage(String packageInfo) throws IOException {
-		return buildKnowledgePackage(packageInfo,false);
-	}
-	@Override
-	public KnowledgePackage buildKnowledgePackage(String packageInfo,boolean withPermission) throws IOException{
+	public KnowledgePackage buildKnowledgePackage(String packageInfo) throws IOException{
 		try{
 			String[] info=packageInfo.split("/");
 			if(info.length!=2){
@@ -62,9 +58,9 @@ public class DefaultKnowledgePackageService implements KnowledgePackageService{
 			}
 			ResourceBase resourceBase=knowledgeBuilder.newResourceBase();
 			for(ResourceItem item:list){
-				resourceBase.addResource(item.getPath(),item.getVersion(),withPermission);
+				resourceBase.addResource(item.getPath(),item.getVersion());
 			}
-			KnowledgeBase knowledgeBase=knowledgeBuilder.buildKnowledgeBase(resourceBase,withPermission);
+			KnowledgeBase knowledgeBase=knowledgeBuilder.buildKnowledgeBase(resourceBase);
 			KnowledgePackage knowledgePackage=knowledgeBase.getKnowledgePackage();
 			return knowledgePackage;
 		}catch(Exception ex){

+ 270 - 0
urule-console/src/main/java/com/bstek/urule/console/repository/BaseRepositoryService.java

@@ -0,0 +1,270 @@
+/*******************************************************************************
+ * Copyright 2017 Bstek
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.  You may obtain a copy
+ * of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ ******************************************************************************/
+package com.bstek.urule.console.repository;
+
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.jcr.Binary;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.Property;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+import javax.jcr.lock.LockManager;
+import javax.jcr.version.Version;
+import javax.jcr.version.VersionHistory;
+import javax.jcr.version.VersionIterator;
+import javax.jcr.version.VersionManager;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+import com.bstek.urule.RuleException;
+import com.bstek.urule.console.DefaultRepositoryInteceptor;
+import com.bstek.urule.console.RepositoryInteceptor;
+import com.bstek.urule.console.repository.model.RepositoryFile;
+import com.bstek.urule.console.repository.model.ResourceItem;
+import com.bstek.urule.console.repository.model.ResourcePackage;
+import com.bstek.urule.console.repository.model.Type;
+import com.bstek.urule.console.repository.model.VersionFile;
+
+/**
+ * @author Jacky.gao
+ * @since 2017年12月15日
+ */
+public abstract class BaseRepositoryService implements RepositoryReader,ApplicationContextAware {
+	public static final String RES_PACKGE_FILE="___res__package__file__";
+	public static final String CLIENT_CONFIG_FILE="___client_config__file__";
+	public static final String RESOURCE_SECURITY_CONFIG_FILE="___resource_security_config__file__";
+	protected final String DATA = "_data";
+	protected final String DIR_TAG = "_dir";
+	protected final String FILE = "_file";
+	protected final String CRATE_USER = "_create_user";
+	protected final String CRATE_DATE = "_create_date";
+	protected final String VERSION_COMMENT="_version_comment";
+	protected final String COMPANY_ID="_company_id";
+
+	protected RepositoryBuilder repositoryBuilder;
+	protected RepositoryImpl repository;
+	protected Session session;
+	protected VersionManager versionManager;
+	protected LockManager lockManager;
+	
+	protected RepositoryInteceptor repositoryInteceptor;
+	
+	@Override
+	public List<RepositoryFile> loadProjects(String companyId) throws Exception{
+		List<RepositoryFile> projects=new ArrayList<RepositoryFile>();
+		Node rootNode=getRootNode();
+		NodeIterator nodeIterator = rootNode.getNodes();
+		while (nodeIterator.hasNext()) {
+			Node projectNode = nodeIterator.nextNode();
+			if (!projectNode.hasProperty(FILE)) {
+				continue;
+			}
+			if(StringUtils.isNotEmpty(companyId)){
+				if(projectNode.hasProperty(COMPANY_ID)){
+					String id=projectNode.getProperty(COMPANY_ID).getString();
+					if(!companyId.equals(id)){
+						continue;
+					}
+				}
+			}
+			if(projectNode.getName().indexOf(RESOURCE_SECURITY_CONFIG_FILE)>-1){
+				continue;
+			}
+			RepositoryFile projectFile = new RepositoryFile();
+			projectFile.setType(Type.project);
+			projectFile.setName(projectNode.getName());
+			projectFile.setFullPath("/" + projectNode.getName());
+			projects.add(projectFile);
+		}
+		return projects;
+	}
+	
+	@Override
+	public List<VersionFile> getVersionFiles(String path) throws Exception{
+		path = processPath(path);
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
+		}
+		List<VersionFile> files = new ArrayList<VersionFile>();
+		Node fileNode = rootNode.getNode(path);
+		VersionHistory versionHistory = versionManager.getVersionHistory(fileNode.getPath());
+		VersionIterator iterator = versionHistory.getAllVersions();
+		while (iterator.hasNext()) {
+			Version version = iterator.nextVersion();
+			String versionName = version.getName();
+			if (versionName.startsWith("jcr:")) {
+				continue; // skip root version
+			}
+			Node fnode = version.getFrozenNode();
+			VersionFile file = new VersionFile();
+			file.setName(version.getName());
+			file.setPath(fileNode.getPath());
+			Property prop = fnode.getProperty(CRATE_USER);
+			file.setCreateUser(prop.getString());
+			prop = fnode.getProperty(CRATE_DATE);
+			file.setCreateDate(prop.getDate().getTime());
+			if(fnode.hasProperty(VERSION_COMMENT)){
+				prop=fnode.getProperty(VERSION_COMMENT);
+				file.setComment(prop.getString());
+			}
+			files.add(file);
+		}
+		return files;
+	}
+	
+	@Override
+	public InputStream readFile(String path) throws Exception{
+		return readFile(path, null);
+	}
+	
+	@Override
+	public InputStream readFile(String path,String version) throws Exception{
+		if(StringUtils.isNotBlank(version)){
+			repositoryInteceptor.readFile(path+":"+version);
+			return readVersionFile(path, version);
+		}
+		repositoryInteceptor.readFile(path);
+		Node rootNode=getRootNode();
+		int colonPos = path.lastIndexOf(":");
+		if (colonPos > -1) {
+			version = path.substring(colonPos + 1, path.length());
+			path = path.substring(0, colonPos);
+			return readFile(path, version);
+		}
+		path = processPath(path);
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
+		}
+		Node fileNode = rootNode.getNode(path);
+		Property property = fileNode.getProperty(DATA);
+		Binary fileBinary = property.getBinary();
+		return fileBinary.getStream();
+	}
+	
+	
+	private InputStream readVersionFile(String path, String version) throws Exception{
+		path = processPath(path);
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
+		}
+		Node fileNode = rootNode.getNode(path);
+		VersionHistory versionHistory = versionManager.getVersionHistory(fileNode.getPath());
+		Version v = versionHistory.getVersion(version);
+		Node fnode = v.getFrozenNode();
+		Property property = fnode.getProperty(DATA);
+		Binary fileBinary = property.getBinary();
+		return fileBinary.getStream();
+	}
+	
+	@Override
+	public List<ResourcePackage> loadProjectResourcePackages(String project) throws Exception {
+		Node rootNode=getRootNode();
+		String filePath = processPath(project) + "/" + RES_PACKGE_FILE;
+		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		Node fileNode = rootNode.getNode(filePath);
+		Property property = fileNode.getProperty(DATA);
+		Binary fileBinary = property.getBinary();
+		InputStream inputStream = fileBinary.getStream();
+		String content = IOUtils.toString(inputStream, "utf-8");
+		inputStream.close();
+		Document document = DocumentHelper.parseText(content);
+		Element rootElement = document.getRootElement();
+		List<ResourcePackage> packages = new ArrayList<ResourcePackage>();
+		for (Object obj : rootElement.elements()) {
+			if (!(obj instanceof Element)) {
+				continue;
+			}
+			Element element = (Element) obj;
+			if (!element.getName().equals("res-package")) {
+				continue;
+			}
+			ResourcePackage p = new ResourcePackage();
+			String dateStr = element.attributeValue("create_date");
+			if (dateStr != null) {
+				p.setCreateDate(sd.parse(dateStr));
+			}
+			p.setId(element.attributeValue("id"));
+			p.setName(element.attributeValue("name"));
+			p.setProject(project);
+			List<ResourceItem> items = new ArrayList<ResourceItem>();
+			for (Object o : element.elements()) {
+				if (!(o instanceof Element)) {
+					continue;
+				}
+				Element ele = (Element) o;
+				if (!ele.getName().equals("res-package-item")) {
+					continue;
+				}
+				ResourceItem item = new ResourceItem();
+				item.setName(ele.attributeValue("name"));
+				item.setPackageId(p.getId());
+				item.setPath(ele.attributeValue("path"));
+				item.setVersion(ele.attributeValue("version"));
+				items.add(item);
+			}
+			p.setResourceItems(items);
+			packages.add(p);
+		}
+		return packages;
+	}
+	
+	protected String processPath(String path) {
+		if (path.startsWith("/")) {
+			return path.substring(1, path.length());
+		}
+		return path;
+	}
+
+	protected Node getRootNode() throws Exception{
+		return session.getRootNode();
+	}
+	
+	@Override
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+		try {
+			repository = repositoryBuilder.getRepository();
+			SimpleCredentials cred = new SimpleCredentials("admin", "admin".toCharArray());
+			cred.setAttribute("AutoRefresh", true);
+			session = repository.login(cred, null);
+			versionManager = session.getWorkspace().getVersionManager();
+			lockManager=session.getWorkspace().getLockManager();
+			Collection<RepositoryInteceptor> repositoryInteceptors=applicationContext.getBeansOfType(RepositoryInteceptor.class).values();
+			if(repositoryInteceptors.size()==0){
+				repositoryInteceptor=new DefaultRepositoryInteceptor();
+			}else{
+				repositoryInteceptor=repositoryInteceptors.iterator().next();
+			}
+		} catch (Exception ex) {
+			throw new RuleException(ex);
+		}
+	}
+}

+ 67 - 0
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryReader.java

@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright 2017 Bstek
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.  You may obtain a copy
+ * of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ ******************************************************************************/
+package com.bstek.urule.console.repository;
+
+import java.io.InputStream;
+import java.util.List;
+
+import com.bstek.urule.console.repository.model.RepositoryFile;
+import com.bstek.urule.console.repository.model.ResourcePackage;
+import com.bstek.urule.console.repository.model.VersionFile;
+
+/**
+ * @author Jacky.gao
+ * @since 2017年12月15日
+ */
+public interface RepositoryReader {
+	/**
+	 * 加载指定的companyId下创建的所有的项目信息
+	 * @param companyId 指定的公司ID
+	 * @return 返回所有的项目信息
+	 * @throws Exception
+	 */
+	List<RepositoryFile> loadProjects(String companyId) throws Exception;
+	/**
+	 * 读取指定的最新版本的文件
+	 * @param path 文件考路径
+	 * @return 返回文件内容
+	 * @throws Exception
+	 */
+	InputStream readFile(String path) throws Exception;
+	/**
+	 * 加载指定项目下的知识包信息
+	 * @param project 项目名称
+	 * @return 返回已定义的知识包信息
+	 * @throws Exception
+	 */
+	List<ResourcePackage> loadProjectResourcePackages(String project) throws Exception;
+	/**
+	 * 获取指定路径文件的所有版本信息
+	 * @param path 文件路径
+	 * @return 返回版本信息列表
+	 * @throws Exception
+	 */
+	List<VersionFile> getVersionFiles(String path) throws Exception;
+	
+	/**
+	 * 读取指定版本文件
+	 * @param path 文件路径
+	 * @param version 文件版本号
+	 * @return 返回文件内容
+	 * @throws Exception
+	 */
+	InputStream readFile(String path, String version) throws Exception;
+}

+ 2 - 27
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryRefactor.java

@@ -18,7 +18,6 @@ package com.bstek.urule.console.repository;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
 import javax.jcr.Node;
@@ -28,9 +27,7 @@ import javax.jcr.RepositoryException;
 import org.apache.tika.io.IOUtils;
 
 import com.bstek.urule.RuleException;
-import com.bstek.urule.console.User;
 import com.bstek.urule.console.repository.model.FileType;
-import com.bstek.urule.console.repository.updater.ReferenceUpdater;
 
 /**
  * @author Jacky.gao
@@ -38,33 +35,11 @@ import com.bstek.urule.console.repository.updater.ReferenceUpdater;
  */
 public class RepositoryRefactor {
 	private RepositoryService repositoryService;
-	private Collection<ReferenceUpdater> updaters;
-	public RepositoryRefactor(RepositoryService repositoryService,Collection<ReferenceUpdater> updaters) {
+	public RepositoryRefactor(RepositoryService repositoryService) {
 		this.repositoryService=repositoryService;
-		this.updaters=updaters;
-	}
-	public void rename(Node rootNode,String path,String newpath,User user){
-		List<String> referenceFiles=getFiles(rootNode,path);
-		for(String nodePath:referenceFiles){
-			for(ReferenceUpdater updater:updaters){
-				if(updater.support(nodePath)){
-					InputStream inputStream=repositoryService.readFile(newpath,null);
-					try {
-						String content = IOUtils.toString(inputStream);
-						inputStream.close();
-						String newContent=updater.update(path, path, content);
-						if(newContent!=null){
-							repositoryService.saveFile(newpath,newContent,user,false,null);
-						}
-					} catch (IOException e) {
-						throw new RuleException(e);
-					}
-				}
-			}
-		}
 	}
 	
-	public List<String> getReferenceFiles(Node rootNode,String path,String searchText){
+	public List<String> getReferenceFiles(Node rootNode,String path,String searchText) throws Exception{
 		List<String> referenceFiles=new ArrayList<String>();
 		List<String> files=getFiles(rootNode, path);
 		for(String nodePath:files){

+ 7 - 12
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryResourceProvider.java

@@ -15,7 +15,6 @@
  ******************************************************************************/
 package com.bstek.urule.console.repository;
 
-import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.commons.io.IOUtils;
@@ -34,23 +33,19 @@ public class RepositoryResourceProvider implements ResourceProvider {
 	private RepositoryService repositoryService;
 	
 	@Override
-	public Resource provide(String path, String version) {
-		return provide(path,version,true);
-	}
-	@Override
-	public Resource provide(String path,String version,boolean withPermiossion) {
+	public Resource provide(String path,String version) {
 		String newpath=path.substring(4,path.length());
 		InputStream inputStream=null;
-		if(StringUtils.isEmpty(version) || version.equals("LATEST")){
-			inputStream=repositoryService.readFile(newpath,null,withPermiossion);											
-		}else{
-			inputStream=repositoryService.readFile(newpath,version,withPermiossion);														
-		}
 		try {
+			if(StringUtils.isEmpty(version) || version.equals("LATEST")){
+				inputStream=repositoryService.readFile(newpath,null);											
+			}else{
+				inputStream=repositoryService.readFile(newpath,version);														
+			}
 			String content=IOUtils.toString(inputStream,"utf-8");
 			IOUtils.closeQuietly(inputStream);
 			return new Resource(content,path);
-		} catch (IOException e) {
+		} catch (Exception e) {
 			throw new RuleException(e);
 		}
 	}

+ 18 - 22
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryService.java

@@ -22,7 +22,6 @@ import java.util.List;
 import com.bstek.urule.console.User;
 import com.bstek.urule.console.repository.model.FileType;
 import com.bstek.urule.console.repository.model.RepositoryFile;
-import com.bstek.urule.console.repository.model.ResourcePackage;
 import com.bstek.urule.console.repository.model.VersionFile;
 import com.bstek.urule.console.servlet.permission.UserPermission;
 
@@ -30,27 +29,24 @@ import com.bstek.urule.console.servlet.permission.UserPermission;
  * @author Jacky.gao
  * @since 2015年3月24日
  */
-public interface RepositoryService {
+public interface RepositoryService extends RepositoryReader{
 	public static final String BEAN_ID="urule.repositoryService";
-	boolean fileExistCheck(String filePath);
-	RepositoryFile createProject(String projectName,User user,boolean classify);
-	void createDir(String path,User user);
-	void createFile(String path,String content,User user);
-	void saveFile(String path,String content,User user,boolean newVersion,String versionComment);
-	void deleteFile(String path,User user);
-	void lockPath(String path,User user);
-	void unlockPath(String path,User user);
-	Repository loadRepository(String project,String companyId,boolean classify,FileType[] types,String searchFileName);
-	List<RepositoryFile> loadProject(String companyId);
-	void fileRename(String path, String newPath,User user);
-	List<String> getReferenceFiles(String path,String searchText);
-	InputStream readFile(String path,String version,boolean withPermission);
-	InputStream readFile(String path,String version);
-	List<ResourcePackage> loadProjectResourcePackages(String project) throws Exception;
-	List<VersionFile> getVersionFiles(String path);
-	void exportXml(String projectPath,OutputStream outputStream);
-	void importXml(InputStream inputStream,boolean overwrite);
+	boolean fileExistCheck(String filePath) throws Exception;
+	RepositoryFile createProject(String projectName,User user,boolean classify) throws Exception;
+	void createDir(String path,User user) throws Exception;
+	void createFile(String path,String content,User user) throws Exception;
+	void saveFile(String path,String content,boolean newVersion,String versionComment,User user) throws Exception;
+	void deleteFile(String path,User user)throws Exception;
+	void lockPath(String path,User user) throws Exception;
+	void unlockPath(String path,User user) throws Exception;
+	Repository loadRepository(String project,User user,boolean classify,FileType[] types,String searchFileName) throws Exception;
+	void fileRename(String path, String newPath) throws Exception;
+	List<String> getReferenceFiles(String path,String searchText) throws Exception;
+	InputStream readFile(String path,String version) throws Exception;
+	List<VersionFile> getVersionFiles(String path) throws Exception;
+	void exportXml(String projectPath,OutputStream outputStream)throws Exception;
+	void importXml(InputStream inputStream,boolean overwrite)throws Exception;
 	List<RepositoryFile> getDirectories(String project) throws Exception;
-	List<ClientConfig> loadClientConfigs(String project);
-	List<UserPermission> loadResourceSecurityConfigs(String companyId);
+	List<ClientConfig> loadClientConfigs(String project)throws Exception;
+	List<UserPermission> loadResourceSecurityConfigs(String companyId) throws Exception;
 }

+ 453 - 720
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryServiceImpl.java

@@ -15,12 +15,11 @@
  ******************************************************************************/
 package com.bstek.urule.console.repository;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
@@ -30,44 +29,27 @@ import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.Property;
 import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
 import javax.jcr.lock.Lock;
-import javax.jcr.lock.LockException;
-import javax.jcr.lock.LockManager;
 import javax.jcr.nodetype.NodeType;
-import javax.jcr.version.Version;
-import javax.jcr.version.VersionHistory;
-import javax.jcr.version.VersionIterator;
-import javax.jcr.version.VersionManager;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
-import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.value.BinaryImpl;
 import org.apache.jackrabbit.value.DateValue;
 import org.dom4j.Document;
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 
 import com.bstek.urule.RuleException;
 import com.bstek.urule.Utils;
-import com.bstek.urule.console.DefaultRepositoryInteceptor;
-import com.bstek.urule.console.RepositoryInteceptor;
 import com.bstek.urule.console.User;
 import com.bstek.urule.console.exception.NoPermissionException;
 import com.bstek.urule.console.repository.model.FileType;
 import com.bstek.urule.console.repository.model.LibType;
 import com.bstek.urule.console.repository.model.RepositoryFile;
-import com.bstek.urule.console.repository.model.ResourceItem;
-import com.bstek.urule.console.repository.model.ResourcePackage;
 import com.bstek.urule.console.repository.model.Type;
-import com.bstek.urule.console.repository.model.VersionFile;
 import com.bstek.urule.console.repository.permission.PermissionService;
-import com.bstek.urule.console.repository.updater.ReferenceUpdater;
 import com.bstek.urule.console.servlet.permission.ProjectConfig;
 import com.bstek.urule.console.servlet.permission.UserPermission;
 
@@ -75,62 +57,36 @@ import com.bstek.urule.console.servlet.permission.UserPermission;
  * @author Jacky.gao
  * @since 2016年5月24日
  */
-public class RepositoryServiceImpl implements RepositoryService, ApplicationContextAware {
-	public static final String RES_PACKGE_FILE="___res__package__file__";
-	public static final String CLIENT_CONFIG_FILE="___client_config__file__";
-	public static final String RESOURCE_SECURITY_CONFIG_FILE="___resource_security_config__file__";
-	private final String DATA = "_data";
-	private final String DIR_TAG = "_dir";
-	private final String FILE = "_file";
-	private final String CRATE_USER = "_create_user";
-	private final String CRATE_DATE = "_create_date";
-	private final String VERSION_COMMENT="_version_comment";
-	private final String COMPANY_ID="_company_id";
-
-	private RepositoryBuilder repositoryBuilder;
-	private RepositoryImpl repository;
-	private Session session;
-	private VersionManager versionManager;
-	private LockManager lockManager;
-	private RepositoryRefactor refactor;
-	private RepositoryInteceptor repositoryInteceptor;
+public class RepositoryServiceImpl extends BaseRepositoryService implements RepositoryService, ApplicationContextAware {
 	private PermissionService permissionService;
 	
 	@Override
-	public List<UserPermission> loadResourceSecurityConfigs(String companyId) {
-		try{
-			List<UserPermission> configs=new ArrayList<UserPermission>();
-			String filePath=RESOURCE_SECURITY_CONFIG_FILE+(companyId == null ? "" : companyId);
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(filePath)) {
-				createFileNode(filePath, "<?xml version=\"1.0\" encoding=\"utf-8\"?><user-permission></user-permission>",null,false);
-				return configs;
+	public List<UserPermission> loadResourceSecurityConfigs(String companyId) throws Exception{
+		List<UserPermission> configs=new ArrayList<UserPermission>();
+		String filePath=RESOURCE_SECURITY_CONFIG_FILE+(companyId == null ? "" : companyId);
+		Node rootNode=getRootNode();
+		Node fileNode = rootNode.getNode(filePath);
+		Property property = fileNode.getProperty(DATA);
+		Binary fileBinary = property.getBinary();
+		InputStream inputStream = fileBinary.getStream();
+		String content = IOUtils.toString(inputStream, "utf-8");
+		inputStream.close();
+		Document document = DocumentHelper.parseText(content);
+		Element rootElement = document.getRootElement();
+		for (Object obj : rootElement.elements()) {
+			if (!(obj instanceof Element)) {
+				continue;
 			}
-			Node fileNode = rootNode.getNode(filePath);
-			Property property = fileNode.getProperty(DATA);
-			Binary fileBinary = property.getBinary();
-			InputStream inputStream = fileBinary.getStream();
-			String content = IOUtils.toString(inputStream, "utf-8");
-			inputStream.close();
-			Document document = DocumentHelper.parseText(content);
-			Element rootElement = document.getRootElement();
-			for (Object obj : rootElement.elements()) {
-				if (!(obj instanceof Element)) {
-					continue;
-				}
-				Element element = (Element) obj;
-				if (!element.getName().equals("user-permission")) {
-					continue;
-				}
-				UserPermission userResource=new UserPermission();
-				userResource.setUsername(element.attributeValue("username"));
-				userResource.setProjectConfigs(parseProjectConfigs(element));
-				configs.add(userResource);
+			Element element = (Element) obj;
+			if (!element.getName().equals("user-permission")) {
+				continue;
 			}
-			return configs;
-		}catch(Exception ex){
-			throw new RuleException(ex);
+			UserPermission userResource=new UserPermission();
+			userResource.setUsername(element.attributeValue("username"));
+			userResource.setProjectConfigs(parseProjectConfigs(element));
+			configs.add(userResource);
 		}
+		return configs;
 	}
 	
 	private List<ProjectConfig> parseProjectConfigs(Element element){
@@ -189,86 +145,39 @@ public class RepositoryServiceImpl implements RepositoryService, ApplicationCont
 	}
 	
 	@Override
-	public List<ClientConfig> loadClientConfigs(String project) {
+	public List<ClientConfig> loadClientConfigs(String project) throws Exception{
 		if(!permissionService.isAdmin()){
 			throw new NoPermissionException();
 		}
-		
-		try{
-			List<ClientConfig> clients=new ArrayList<ClientConfig>();
-			Node rootNode=getRootNode();
-			String filePath = processPath(project) + "/" + CLIENT_CONFIG_FILE;
-			if (!rootNode.hasNode(filePath)) {
-				createFile(filePath, "<?xml version=\"1.0\" encoding=\"utf-8\"?><client-config></client-config>",null);
-				return clients;
-			}
-			Node fileNode = rootNode.getNode(filePath);
-			Property property = fileNode.getProperty(DATA);
-			Binary fileBinary = property.getBinary();
-			InputStream inputStream = fileBinary.getStream();
-			String content = IOUtils.toString(inputStream, "utf-8");
-			inputStream.close();
-			Document document = DocumentHelper.parseText(content);
-			Element rootElement = document.getRootElement();
-			for (Object obj : rootElement.elements()) {
-				if (!(obj instanceof Element)) {
-					continue;
-				}
-				Element element = (Element) obj;
-				if (!element.getName().equals("item")) {
-					continue;
-				}
-				ClientConfig client = new ClientConfig();
-				client.setName(element.attributeValue("name"));
-				client.setClient(element.attributeValue("client"));
-				client.setProject(project);
-				clients.add(client);
-			}
-			return clients;
-		}catch(Exception ex){
-			throw new RuleException(ex);
-		}
-	}
-
-	public List<VersionFile> getVersionFiles(String path) {
-		path = processPath(path);
-		try {
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
+		List<ClientConfig> clients=new ArrayList<ClientConfig>();
+		Node rootNode=getRootNode();
+		String filePath = processPath(project) + "/" + CLIENT_CONFIG_FILE;
+		Node fileNode = rootNode.getNode(filePath);
+		Property property = fileNode.getProperty(DATA);
+		Binary fileBinary = property.getBinary();
+		InputStream inputStream = fileBinary.getStream();
+		String content = IOUtils.toString(inputStream, "utf-8");
+		inputStream.close();
+		Document document = DocumentHelper.parseText(content);
+		Element rootElement = document.getRootElement();
+		for (Object obj : rootElement.elements()) {
+			if (!(obj instanceof Element)) {
+				continue;
 			}
-			List<VersionFile> files = new ArrayList<VersionFile>();
-			Node fileNode = rootNode.getNode(path);
-			VersionHistory versionHistory = versionManager.getVersionHistory(fileNode.getPath());
-			VersionIterator iterator = versionHistory.getAllVersions();
-			while (iterator.hasNext()) {
-				Version version = iterator.nextVersion();
-				String versionName = version.getName();
-				if (versionName.startsWith("jcr:")) {
-					continue; // skip root version
-				}
-				Node fnode = version.getFrozenNode();
-				VersionFile file = new VersionFile();
-				file.setName(version.getName());
-				file.setPath(fileNode.getPath());
-				Property prop = fnode.getProperty(CRATE_USER);
-				file.setCreateUser(prop.getString());
-				prop = fnode.getProperty(CRATE_DATE);
-				file.setCreateDate(prop.getDate().getTime());
-				
-				if(fnode.hasProperty(VERSION_COMMENT)){
-					prop=fnode.getProperty(VERSION_COMMENT);
-					file.setComment(prop.getString());
-				}
-				
-				files.add(file);
+			Element element = (Element) obj;
+			if (!element.getName().equals("item")) {
+				continue;
 			}
-			return files;
-		} catch (Exception ex) {
-			throw new RuleException(ex);
+			ClientConfig client = new ClientConfig();
+			client.setName(element.attributeValue("name"));
+			client.setClient(element.attributeValue("client"));
+			client.setProject(project);
+			clients.add(client);
 		}
+		return clients;
 	}
 
+	@Override
 	public List<RepositoryFile> getDirectories(String project) throws Exception {
 		Node rootNode=getRootNode();
 		NodeIterator nodeIterator = rootNode.getNodes();
@@ -326,90 +235,54 @@ public class RepositoryServiceImpl implements RepositoryService, ApplicationCont
 			fileList.add(file);
 		}
 	}
-
-	@Override
-	public List<RepositoryFile> loadProject(String companyId) {
-		List<RepositoryFile> projects=new ArrayList<RepositoryFile>();
-		try{
-			Node rootNode=getRootNode();
-			NodeIterator nodeIterator = rootNode.getNodes();
-			while (nodeIterator.hasNext()) {
-				Node projectNode = nodeIterator.nextNode();
-				if (!projectNode.hasProperty(FILE)) {
-					continue;
-				}
-				if(StringUtils.isNotEmpty(companyId)){
-					if(projectNode.hasProperty(COMPANY_ID)){
-						String id=projectNode.getProperty(COMPANY_ID).getString();
-						if(!companyId.equals(id)){
-							continue;
-						}
-					}
-				}
-				if(projectNode.getName().indexOf(RESOURCE_SECURITY_CONFIG_FILE)>-1){
-					continue;
-				}
-				RepositoryFile projectFile = new RepositoryFile();
-				projectFile.setType(Type.project);
-				projectFile.setName(projectNode.getName());
-				projectFile.setFullPath("/" + projectNode.getName());
-				projects.add(projectFile);
-			}
-		} catch (Exception ex) {
-			throw new RuleException(ex);
-		}
-		return projects;
-	}
 	
 	@Override
-	public Repository loadRepository(String project,String companyId,boolean classify,FileType[] types,String searchFileName) {
+	public Repository loadRepository(String project,User user,boolean classify,FileType[] types,String searchFileName) throws Exception{
+		String companyId=user.getCompanyId();
+		createSecurityConfigFile(user);
 		if(project!=null && project.startsWith("/")){
 			project=project.substring(1,project.length());
 		}
-		try {
-			Repository repo=new Repository();
-			List<String> projectNames=new ArrayList<String>();
-			repo.setProjectNames(projectNames);
-			RepositoryFile rootFile = new RepositoryFile();
-			rootFile.setFullPath("/");
-			rootFile.setName("项目列表");
-			rootFile.setType(Type.root);
-			Node rootNode=getRootNode();
-			NodeIterator nodeIterator = rootNode.getNodes();
-			while (nodeIterator.hasNext()) {
-				Node projectNode = nodeIterator.nextNode();
-				if (!projectNode.hasProperty(FILE)) {
-					continue;
-				}
-				if(StringUtils.isNotEmpty(companyId)){
-					if(projectNode.hasProperty(COMPANY_ID)){
-						String id=projectNode.getProperty(COMPANY_ID).getString();
-						if(!companyId.equals(id)){
-							continue;
-						}
+		Repository repo=new Repository();
+		List<String> projectNames=new ArrayList<String>();
+		repo.setProjectNames(projectNames);
+		RepositoryFile rootFile = new RepositoryFile();
+		rootFile.setFullPath("/");
+		rootFile.setName("项目列表");
+		rootFile.setType(Type.root);
+		Node rootNode=getRootNode();
+		NodeIterator nodeIterator = rootNode.getNodes();
+		while (nodeIterator.hasNext()) {
+			Node projectNode = nodeIterator.nextNode();
+			if (!projectNode.hasProperty(FILE)) {
+				continue;
+			}
+			if(StringUtils.isNotEmpty(companyId)){
+				if(projectNode.hasProperty(COMPANY_ID)){
+					String id=projectNode.getProperty(COMPANY_ID).getString();
+					if(!companyId.equals(id)){
+						continue;
 					}
 				}
-				String projectName = projectNode.getName();
-				if(projectName.indexOf(RESOURCE_SECURITY_CONFIG_FILE)>-1){
-					continue;
-				}
-				if (StringUtils.isNotBlank(project) && !project.equals(projectName)) {
-					continue;
-				}
-				if(!permissionService.projectHasPermission(projectNode.getPath())){
-					continue;
-				}
-				if(StringUtils.isBlank(project)){
-					projectNames.add(projectName);
-				}
-				RepositoryFile projectFile=buildProjectFile(projectNode,types,classify,searchFileName);
-				rootFile.addChild(projectFile, false);
 			}
-			repo.setRootFile(rootFile);
-			return repo;
-		} catch (Exception ex) {
-			throw new RuleException(ex);
+			String projectName = projectNode.getName();
+			if(projectName.indexOf(RESOURCE_SECURITY_CONFIG_FILE)>-1){
+				continue;
+			}
+			if (StringUtils.isNotBlank(project) && !project.equals(projectName)) {
+				continue;
+			}
+			if(!permissionService.projectHasPermission(projectNode.getPath())){
+				continue;
+			}
+			if(StringUtils.isBlank(project)){
+				projectNames.add(projectName);
+			}
+			RepositoryFile projectFile=buildProjectFile(projectNode,types,classify,searchFileName);
+			rootFile.addChild(projectFile, false);
 		}
+		repo.setRootFile(rootFile);
+		return repo;
 	}
 	
 	private RepositoryFile buildProjectFile(Node projectNode,FileType[] types,boolean classify,String searchFileName) throws Exception{
@@ -527,119 +400,113 @@ public class RepositoryServiceImpl implements RepositoryService, ApplicationCont
 		return subLib;
 	}
 
-	private void buildNodes(NodeIterator nodeIterator, RepositoryFile parent, FileType[] types,Type folderType,String searchFileName) {
+	private void buildNodes(NodeIterator nodeIterator, RepositoryFile parent, FileType[] types,Type folderType,String searchFileName) throws Exception{
 		LibType libType=parent.getLibType();
-		try {
-			while (nodeIterator.hasNext()) {
-				Node fileNode = nodeIterator.nextNode();
-				if (!fileNode.hasProperty(FILE)) {
+		while (nodeIterator.hasNext()) {
+			Node fileNode = nodeIterator.nextNode();
+			if (!fileNode.hasProperty(FILE)) {
+				continue;
+			}
+			RepositoryFile file = new RepositoryFile();
+			file.setLibType(libType);
+			String name = fileNode.getName();
+			if (name.toLowerCase().indexOf(RES_PACKGE_FILE) > -1 || name.toLowerCase().indexOf(CLIENT_CONFIG_FILE) > -1 || name.toLowerCase().indexOf(RESOURCE_SECURITY_CONFIG_FILE) > -1) {
+				continue;
+			}
+			if (!fileNode.hasProperty(DIR_TAG)) {
+				if(!permissionService.fileHasReadPermission(fileNode.getPath())){
 					continue;
 				}
-				RepositoryFile file = new RepositoryFile();
-				file.setLibType(libType);
-				String name = fileNode.getName();
-				if (name.toLowerCase().indexOf(RES_PACKGE_FILE) > -1 || name.toLowerCase().indexOf(CLIENT_CONFIG_FILE) > -1 || name.toLowerCase().indexOf(RESOURCE_SECURITY_CONFIG_FILE) > -1) {
+				FileType fileType=null;
+				boolean add = false;
+				for (FileType type : types) {
+					if (name.toLowerCase().endsWith(type.toString())) {
+						fileType=type;
+						add = true;
+						break;
+					}
+				}
+				if (!add) {
 					continue;
 				}
-				if (!fileNode.hasProperty(DIR_TAG)) {
-					
-					if(!permissionService.fileHasReadPermission(fileNode.getPath())){
+				
+				if(libType.equals(LibType.res)){
+					if(!fileType.equals(FileType.ActionLibrary) && !fileType.equals(FileType.ParameterLibrary) && !fileType.equals(FileType.ConstantLibrary) && !fileType.equals(FileType.VariableLibrary)) {
 						continue;
 					}
-					
-					FileType fileType=null;
-					boolean add = false;
-					for (FileType type : types) {
-						if (name.toLowerCase().endsWith(type.toString())) {
-							fileType=type;
-							add = true;
-							break;
-						}
-					}
-					if (!add) {
+				}
+				
+				if(libType.equals(LibType.decisiontable)){
+					if(!fileType.equals(FileType.ScriptDecisionTable) && !fileType.equals(FileType.DecisionTable)) {
 						continue;
 					}
-					
-					if(libType.equals(LibType.res)){
-						if(!fileType.equals(FileType.ActionLibrary) && !fileType.equals(FileType.ParameterLibrary) && !fileType.equals(FileType.ConstantLibrary) && !fileType.equals(FileType.VariableLibrary)) {
-							continue;
-						}
-					}
-					
-					if(libType.equals(LibType.decisiontable)){
-						if(!fileType.equals(FileType.ScriptDecisionTable) && !fileType.equals(FileType.DecisionTable)) {
-							continue;
-						}
-					}
-					
-					if(libType.equals(LibType.decisiontree)){
-						if(!fileType.equals(FileType.DecisionTree)) {
-							continue;
-						}
-					}
-					
-					if(libType.equals(LibType.ruleflow)){
-						if(!fileType.equals(FileType.RuleFlow)) {
-							continue;
-						}
+				}
+				
+				if(libType.equals(LibType.decisiontree)){
+					if(!fileType.equals(FileType.DecisionTree)) {
+						continue;
 					}
-					
-					if(libType.equals(LibType.scorecard)){
-						if(!fileType.equals(FileType.Scorecard)) {
-							continue;
-						}
+				}
+				
+				if(libType.equals(LibType.ruleflow)){
+					if(!fileType.equals(FileType.RuleFlow)) {
+						continue;
 					}
-					
-					if(libType.equals(LibType.ruleset)){
-						if(!fileType.equals(FileType.Ruleset) && !fileType.equals(FileType.UL)) {
-							continue;
-						}
+				}
+				
+				if(libType.equals(LibType.scorecard)){
+					if(!fileType.equals(FileType.Scorecard)) {
+						continue;
 					}
-					if(StringUtils.isNotBlank(searchFileName)){
-						if(name.toLowerCase().indexOf(searchFileName.toLowerCase())==-1){
-							continue;
-						}
+				}
+				
+				if(libType.equals(LibType.ruleset)){
+					if(!fileType.equals(FileType.Ruleset) && !fileType.equals(FileType.UL)) {
+						continue;
 					}
-					if (name.toLowerCase().endsWith(FileType.ActionLibrary.toString())) {
-						file.setType(Type.action);
-					} else if (name.toLowerCase().endsWith(FileType.VariableLibrary.toString())) {
-						file.setType(Type.variable);
-					} else if (name.toLowerCase().endsWith(FileType.ConstantLibrary.toString())) {
-						file.setType(Type.constant);
-					} else if (name.toLowerCase().endsWith(FileType.Ruleset.toString())) {
-						file.setType(Type.rule);
-					} else if (name.toLowerCase().endsWith(FileType.DecisionTable.toString())) {
-						file.setType(Type.decisionTable);
-					} else if (name.toLowerCase().endsWith(FileType.UL.toString())) {
-						file.setType(Type.ul);
-					} else if (name.toLowerCase().endsWith(FileType.ParameterLibrary.toString())) {
-						file.setType(Type.parameter);
-					} else if (name.toLowerCase().endsWith(FileType.RuleFlow.toString())) {
-						file.setType(Type.flow);
-					} else if (name.toLowerCase().endsWith(FileType.ScriptDecisionTable.toString())) {
-						file.setType(Type.scriptDecisionTable);
-					} else if (name.toLowerCase().endsWith(FileType.DecisionTree.toString())) {
-						file.setType(Type.decisionTree);
-					} else if (name.toLowerCase().endsWith(FileType.Scorecard.toString())) {
-						file.setType(Type.scorecard);
+				}
+				if(StringUtils.isNotBlank(searchFileName)){
+					if(name.toLowerCase().indexOf(searchFileName.toLowerCase())==-1){
+						continue;
 					}
-					file.setFullPath(fileNode.getPath());
-					file.setName(name);
-					buildNodeLockInfo(fileNode,file);
-					parent.addChild(file, false);
-					buildNodes(fileNode.getNodes(), file, types,folderType,searchFileName);
-				}else{
-					file.setFullPath(fileNode.getPath());
-					file.setName(name);
-					file.setType(Type.folder);
-					buildNodeLockInfo(fileNode,file);
-					file.setFolderType(folderType);
-					parent.addChild(file, true);
-					buildNodes(fileNode.getNodes(), file, types,folderType,searchFileName);
 				}
+				if (name.toLowerCase().endsWith(FileType.ActionLibrary.toString())) {
+					file.setType(Type.action);
+				} else if (name.toLowerCase().endsWith(FileType.VariableLibrary.toString())) {
+					file.setType(Type.variable);
+				} else if (name.toLowerCase().endsWith(FileType.ConstantLibrary.toString())) {
+					file.setType(Type.constant);
+				} else if (name.toLowerCase().endsWith(FileType.Ruleset.toString())) {
+					file.setType(Type.rule);
+				} else if (name.toLowerCase().endsWith(FileType.DecisionTable.toString())) {
+					file.setType(Type.decisionTable);
+				} else if (name.toLowerCase().endsWith(FileType.UL.toString())) {
+					file.setType(Type.ul);
+				} else if (name.toLowerCase().endsWith(FileType.ParameterLibrary.toString())) {
+					file.setType(Type.parameter);
+				} else if (name.toLowerCase().endsWith(FileType.RuleFlow.toString())) {
+					file.setType(Type.flow);
+				} else if (name.toLowerCase().endsWith(FileType.ScriptDecisionTable.toString())) {
+					file.setType(Type.scriptDecisionTable);
+				} else if (name.toLowerCase().endsWith(FileType.DecisionTree.toString())) {
+					file.setType(Type.decisionTree);
+				} else if (name.toLowerCase().endsWith(FileType.Scorecard.toString())) {
+					file.setType(Type.scorecard);
+				}
+				file.setFullPath(fileNode.getPath());
+				file.setName(name);
+				buildNodeLockInfo(fileNode,file);
+				parent.addChild(file, false);
+				buildNodes(fileNode.getNodes(), file, types,folderType,searchFileName);
+			}else{
+				file.setFullPath(fileNode.getPath());
+				file.setName(name);
+				file.setType(Type.folder);
+				buildNodeLockInfo(fileNode,file);
+				file.setFolderType(folderType);
+				parent.addChild(file, true);
+				buildNodes(fileNode.getNodes(), file, types,folderType,searchFileName);
 			}
-		} catch (Exception ex) {
-			throw new RuleException(ex);
 		}
 	}
 	
@@ -654,50 +521,39 @@ public class RepositoryServiceImpl implements RepositoryService, ApplicationCont
 	}
 	
 	@Override
-	public void lockPath(String path,User user) {
+	public void lockPath(String path,User user) throws Exception{
 		path = processPath(path);
 		int pos=path.indexOf(":");
 		if(pos!=-1){
 			path=path.substring(0,pos);
 		}
-		try{
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
-			}
-			Node fileNode = rootNode.getNode(path);
-			String topAbsPath=fileNode.getPath();
-			if(lockManager.isLocked(topAbsPath)){
-				String owner=lockManager.getLock(topAbsPath).getLockOwner();
-				throw new NodeLockException("【"+path+"】已被"+owner+"锁定,您不能进行再次锁定!");
-			}
-			
-			List<Node> nodeList=new ArrayList<Node>();
-			unlockAllChildNodes(fileNode, user, nodeList, path);
-			for(Node node:nodeList){
-				if(!lockManager.isLocked(node.getPath())){
-					continue;
-				}
-				Lock lock=lockManager.getLock(node.getPath());
-				lockManager.unlock(lock.getNode().getPath());
-			}
-			if(!fileNode.isNodeType(NodeType.MIX_LOCKABLE)){
-				if (!fileNode.isCheckedOut()) {
-					versionManager.checkout(fileNode.getPath());
-				}
-				fileNode.addMixin("mix:lockable");
-				session.save();
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
+		}
+		Node fileNode = rootNode.getNode(path);
+		String topAbsPath=fileNode.getPath();
+		if(lockManager.isLocked(topAbsPath)){
+			String owner=lockManager.getLock(topAbsPath).getLockOwner();
+			throw new NodeLockException("【"+path+"】已被"+owner+"锁定,您不能进行再次锁定!");
+		}
+		List<Node> nodeList=new ArrayList<Node>();
+		unlockAllChildNodes(fileNode, user, nodeList, path);
+		for(Node node:nodeList){
+			if(!lockManager.isLocked(node.getPath())){
+				continue;
 			}
-			lockManager.lock(topAbsPath, true, true, Long.MAX_VALUE, user.getUsername());				
-		}catch(Exception ex){
-			if(ex instanceof LockException){
-				String msg=ex.getMessage();
-				if(msg.startsWith("Unable to perform a locking operation on a non-lockable node")){
-					throw new NodeLockException("锁定操作只能针对urule-2.1.1及以后版本创建的文件及文件夹进行操作!");
-				}
+			Lock lock=lockManager.getLock(node.getPath());
+			lockManager.unlock(lock.getNode().getPath());
+		}
+		if(!fileNode.isNodeType(NodeType.MIX_LOCKABLE)){
+			if (!fileNode.isCheckedOut()) {
+				versionManager.checkout(fileNode.getPath());
 			}
-			throw new RuleException(ex);
+			fileNode.addMixin("mix:lockable");
+			session.save();
 		}
+		lockManager.lock(topAbsPath, true, true, Long.MAX_VALUE, user.getUsername());				
 	}
 	
 	private void unlockAllChildNodes(Node node,User user,List<Node> nodeList,String rootPath) throws Exception{
@@ -719,79 +575,71 @@ public class RepositoryServiceImpl implements RepositoryService, ApplicationCont
 	}
 	
 	@Override
-	public void unlockPath(String path,User user) {
+	public void unlockPath(String path,User user) throws Exception{
 		path = processPath(path);
 		int pos=path.indexOf(":");
 		if(pos!=-1){
 			path=path.substring(0,pos);
 		}
-		try{
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
-			}
-			Node fileNode = rootNode.getNode(path);
-			String absPath=fileNode.getPath();
-			if(!lockManager.isLocked(absPath)){
-				throw new NodeLockException("当前文件未锁定,不需要解锁!");
-			}
-			Lock lock=lockManager.getLock(absPath);
-			String owner=lock.getLockOwner();
-			if(!owner.equals(user.getUsername())){
-				throw new NodeLockException("当前文件由【"+owner+"】锁定,您无权解锁!");
-			}
-			lockManager.unlock(lock.getNode().getPath());
-		}catch(Exception ex){
-			throw new RuleException(ex);
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
 		}
+		Node fileNode = rootNode.getNode(path);
+		String absPath=fileNode.getPath();
+		if(!lockManager.isLocked(absPath)){
+			throw new NodeLockException("当前文件未锁定,不需要解锁!");
+		}
+		Lock lock=lockManager.getLock(absPath);
+		String owner=lock.getLockOwner();
+		if(!owner.equals(user.getUsername())){
+			throw new NodeLockException("当前文件由【"+owner+"】锁定,您无权解锁!");
+		}
+		lockManager.unlock(lock.getNode().getPath());
 	}
 
-	public void deleteFile(String path,User user) {
+	public void deleteFile(String path,User user) throws Exception{
 		if(!permissionService.fileHasWritePermission(path)){
 			throw new NoPermissionException();
 		}
 		repositoryInteceptor.deleteFile(path);
 		path = processPath(path);
-		try {
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
+		}
+		String[] subpaths = path.split("/");
+		Node fileNode = rootNode;
+		for (String subpath : subpaths) {
+			if (StringUtils.isEmpty(subpath)) {
+				continue;
 			}
-			String[] subpaths = path.split("/");
-			Node fileNode = rootNode;
-			for (String subpath : subpaths) {
-				if (StringUtils.isEmpty(subpath)) {
+			String subDirs[] = subpath.split("\\.");
+			for (String dir : subDirs) {
+				if (StringUtils.isEmpty(dir)) {
 					continue;
 				}
-				String subDirs[] = subpath.split("\\.");
-				for (String dir : subDirs) {
-					if (StringUtils.isEmpty(dir)) {
-						continue;
-					}
-					if (!fileNode.hasNode(dir)) {
-						continue;
-					}
-					fileNode = fileNode.getNode(dir);
-					lockCheck(fileNode,user);
-					if (!fileNode.isCheckedOut()) {
-						versionManager.checkout(fileNode.getPath());
-					}
+				if (!fileNode.hasNode(dir)) {
+					continue;
+				}
+				fileNode = fileNode.getNode(dir);
+				lockCheck(fileNode,user);
+				if (!fileNode.isCheckedOut()) {
+					versionManager.checkout(fileNode.getPath());
 				}
 			}
-			fileNode = rootNode.getNode(path);
-			lockCheck(fileNode,user);
-			if (!fileNode.isCheckedOut()) {
-				versionManager.checkout(fileNode.getPath());
-			}
-			fileNode.remove();
-			session.save();
-		} catch (Exception ex) {
-			throw new RuleException(ex);
 		}
+		fileNode = rootNode.getNode(path);
+		lockCheck(fileNode,user);
+		if (!fileNode.isCheckedOut()) {
+			versionManager.checkout(fileNode.getPath());
+		}
+		fileNode.remove();
+		session.save();
 	}
 
 	@Override
-	public void saveFile(String path, String content,User user,boolean newVersion,String versionComment) {
+	public void saveFile(String path, String content,boolean newVersion,String versionComment,User user) throws Exception{
 		path=Utils.decodeURL(path); 
 		if(path.indexOf(RES_PACKGE_FILE)>-1){
 			if(!permissionService.projectPackageHasWritePermission(path)){
@@ -808,396 +656,281 @@ public class RepositoryServiceImpl implements RepositoryService, ApplicationCont
 		if(pos!=-1){
 			path=path.substring(0,pos);
 		}
-		try {
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
-			}
-			Node fileNode = rootNode.getNode(path);
-			lockCheck(fileNode,user);
-			versionManager.checkout(fileNode.getPath());
-			Binary fileBinary = new BinaryImpl(content.getBytes("utf-8"));
-			fileNode.setProperty(DATA, fileBinary);
-			fileNode.setProperty(FILE, true);
-			fileNode.setProperty(CRATE_USER, user.getUsername());
-			Calendar calendar = Calendar.getInstance();
-			calendar.setTime(new Date());
-			DateValue dateValue = new DateValue(calendar);
-			fileNode.setProperty(CRATE_DATE, dateValue);
-			if (newVersion && StringUtils.isNotBlank(versionComment)) {
-				fileNode.setProperty(VERSION_COMMENT, versionComment);
-			}
-			session.save();
-			if (newVersion) {
-				versionManager.checkin(fileNode.getPath());
-			}
-		} catch (Exception ex) {
-			throw new RuleException(ex);
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
+		}
+		Node fileNode = rootNode.getNode(path);
+		lockCheck(fileNode,user);
+		versionManager.checkout(fileNode.getPath());
+		Binary fileBinary = new BinaryImpl(content.getBytes("utf-8"));
+		fileNode.setProperty(DATA, fileBinary);
+		fileNode.setProperty(FILE, true);
+		fileNode.setProperty(CRATE_USER, user.getUsername());
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(new Date());
+		DateValue dateValue = new DateValue(calendar);
+		fileNode.setProperty(CRATE_DATE, dateValue);
+		if (newVersion && StringUtils.isNotBlank(versionComment)) {
+			fileNode.setProperty(VERSION_COMMENT, versionComment);
+		}
+		session.save();
+		if (newVersion) {
+			versionManager.checkin(fileNode.getPath());
 		}
 	}
-
-	public List<String> getReferenceFiles(String path,String searchText) {
+	
+	@Override
+	public List<String> getReferenceFiles(String path,String searchText) throws Exception{
 		Node rootNode=getRootNode();
-		return refactor.getReferenceFiles(rootNode, path,searchText);
+		List<String> referenceFiles=new ArrayList<String>();
+		List<String> files=getFiles(rootNode, path);
+		for(String nodePath:files){
+			InputStream inputStream=readFile(nodePath,null);
+			try {
+				String content = IOUtils.toString(inputStream);
+				inputStream.close();
+				boolean containPath=content.contains(path);
+				boolean containText=content.contains(searchText);
+				if(containPath && containText){
+					referenceFiles.add(nodePath);
+				}
+			} catch (IOException e) {
+				throw new RuleException(e);
+			}
+		}
+		return referenceFiles;
+	}
+	
+	private List<String> getFiles(Node rootNode,String path) throws Exception{
+		String project=getProject(path);
+		List<String> list=new ArrayList<String>();
+		Node projectNode=rootNode.getNode(project);		
+		buildPath(list, projectNode);
+		return list;
+	}
+	
+	private void buildPath(List<String> list, Node parentNode) throws RepositoryException {
+		NodeIterator nodeIterator=parentNode.getNodes();
+		while(nodeIterator.hasNext()){
+			Node node=nodeIterator.nextNode();
+			String nodePath=node.getPath();
+			if(nodePath.endsWith(FileType.Ruleset.toString())){
+				list.add(nodePath);
+			}else if(nodePath.endsWith(FileType.UL.toString())){
+				list.add(nodePath);
+			}else if(nodePath.endsWith(FileType.DecisionTable.toString())){
+				list.add(nodePath);
+			}else if(nodePath.endsWith(FileType.ScriptDecisionTable.toString())){
+				list.add(nodePath);
+			}else if(nodePath.endsWith(FileType.DecisionTree.toString())){
+				list.add(nodePath);					
+			}else if(nodePath.endsWith(FileType.RuleFlow.toString())){
+				list.add(nodePath);					
+			}
+			buildPath(list,node);
+		}
+	}
+	
+	private String getProject(String path){
+		if(path.startsWith("/")){
+			path=path.substring(1);
+		}
+		int pos=path.indexOf("/");
+		return path.substring(0,pos);
 	}
 	
 	@Override
-	public boolean fileExistCheck(String filePath) {
+	public boolean fileExistCheck(String filePath) throws Exception{
 		Node rootNode=getRootNode();
-		try{
-			filePath=processPath(filePath);
-			if(filePath.contains(" ") || filePath.equals("")){
-				return true;
-			}
-			if(rootNode.hasNode(filePath)){
-				return true;
-			}
-		} catch (Exception ex) {
-			throw new RuleException(ex);
+		filePath=processPath(filePath);
+		if(filePath.contains(" ") || filePath.equals("")){
+			return true;
+		}
+		if(rootNode.hasNode(filePath)){
+			return true;
 		}
 		return false;
 	}
 	
 	@Override
-	public RepositoryFile createProject(String projectName, User user,boolean classify) {
+	public RepositoryFile createProject(String projectName, User user,boolean classify) throws Exception{
 		if(!permissionService.isAdmin()){
 			throw new NoPermissionException();
 		}
-		
 		repositoryInteceptor.createProject(projectName);
 		Node rootNode=getRootNode();
-		try{
-			if(rootNode.hasNode(projectName)){
-				throw new RuleException("Project ["+projectName+"] already exist.");
-			}
-			Node projectNode=rootNode.addNode(projectName);
-			projectNode.addMixin("mix:versionable");
-			projectNode.setProperty(FILE, true);
-			projectNode.setProperty(CRATE_USER,user.getUsername());
-			projectNode.setProperty(COMPANY_ID, user.getCompanyId());
-			Calendar calendar = Calendar.getInstance();
-			calendar.setTime(new Date());
-			DateValue dateValue = new DateValue(calendar);
-			projectNode.setProperty(CRATE_DATE, dateValue);
-			session.save();
-			RepositoryFile projectFileInfo=buildProjectFile(projectNode, null ,classify,null);
-			return projectFileInfo;
-		} catch (Exception ex) {
-			throw new RuleException(ex);
-		}
+		if(rootNode.hasNode(projectName)){
+			throw new RuleException("Project ["+projectName+"] already exist.");
+		}
+		Node projectNode=rootNode.addNode(projectName);
+		projectNode.addMixin("mix:versionable");
+		projectNode.setProperty(FILE, true);
+		projectNode.setProperty(CRATE_USER,user.getUsername());
+		projectNode.setProperty(COMPANY_ID, user.getCompanyId());
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(new Date());
+		DateValue dateValue = new DateValue(calendar);
+		projectNode.setProperty(CRATE_DATE, dateValue);
+		session.save();
+		createResourcePackageFile(projectName,user);
+		createClientConfigFile(projectName, user);
+		RepositoryFile projectFileInfo=buildProjectFile(projectNode, null ,classify,null);
+		return projectFileInfo;
 	}
-
-	public void createDir(String path,User user) {
+	
+	public void createDir(String path,User user) throws Exception{
 		if(!permissionService.isAdmin()){
 			throw new NoPermissionException();
 		}
-		
 		repositoryInteceptor.createDir(path);
 		Node rootNode=getRootNode();
 		path = processPath(path);
-		try {
-			if (rootNode.hasNode(path)) {
-				throw new RuleException("Dir [" + path + "] already exist.");
+		if (rootNode.hasNode(path)) {
+			throw new RuleException("Dir [" + path + "] already exist.");
+		}
+		boolean add = false;
+		String[] subpaths = path.split("/");
+		Node parentNode = rootNode;
+		for (String subpath : subpaths) {
+			if (StringUtils.isEmpty(subpath)) {
+				continue;
 			}
-			boolean add = false;
-			String[] subpaths = path.split("/");
-			Node parentNode = rootNode;
-			for (String subpath : subpaths) {
-				if (StringUtils.isEmpty(subpath)) {
+			String subDirs[] = subpath.split("\\.");
+			for (String dir : subDirs) {
+				if (StringUtils.isEmpty(dir)) {
 					continue;
 				}
-				String subDirs[] = subpath.split("\\.");
-				for (String dir : subDirs) {
-					if (StringUtils.isEmpty(dir)) {
-						continue;
-					}
-					if (parentNode.hasNode(dir)) {
-						parentNode = parentNode.getNode(dir);
-					} else {
-						parentNode = parentNode.addNode(dir);
-						parentNode.addMixin("mix:versionable");
-						parentNode.addMixin("mix:lockable");
-						parentNode.setProperty(DIR_TAG, true);
-						parentNode.setProperty(FILE, true);
-						parentNode.setProperty(CRATE_USER,user.getUsername());
-						Calendar calendar = Calendar.getInstance();
-						calendar.setTime(new Date());
-						DateValue dateValue = new DateValue(calendar);
-						parentNode.setProperty(CRATE_DATE, dateValue);
-						add = true;
-					}
+				if (parentNode.hasNode(dir)) {
+					parentNode = parentNode.getNode(dir);
+				} else {
+					parentNode = parentNode.addNode(dir);
+					parentNode.addMixin("mix:versionable");
+					parentNode.addMixin("mix:lockable");
+					parentNode.setProperty(DIR_TAG, true);
+					parentNode.setProperty(FILE, true);
+					parentNode.setProperty(CRATE_USER,user.getUsername());
+					Calendar calendar = Calendar.getInstance();
+					calendar.setTime(new Date());
+					DateValue dateValue = new DateValue(calendar);
+					parentNode.setProperty(CRATE_DATE, dateValue);
+					add = true;
 				}
 			}
-			if (add) {
-				session.save();
-			}
-		} catch (Exception ex) {
-			throw new RuleException(ex);
 		}
-	}
-
-	public void createFile(String path, String content,User user) {
-		if(user!=null){			
-			if(!permissionService.isAdmin()){
-				throw new NoPermissionException();
-			}
+		if (add) {
+			session.save();
 		}
-		createFileNode(path, content, user, true);
 	}
 	
-	
-	private void createFileNode(String path, String content,User user,boolean isFile){
-		String createUser="SYS";
-		if(user!=null){
-			createUser=user.getUsername();
-		}
-		repositoryInteceptor.createFile(path,content);
-		Node rootNode=getRootNode();
-		path = processPath(path);
-		try {
-			if (rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] already exist.");
-			}
-			Node fileNode = rootNode.addNode(path);
-			fileNode.addMixin("mix:versionable");
-			fileNode.addMixin("mix:lockable");
-			Binary fileBinary = new BinaryImpl(content.getBytes());
-			fileNode.setProperty(DATA, fileBinary);
-			if(isFile){
-				fileNode.setProperty(FILE, true);				
-			}
-			fileNode.setProperty(CRATE_USER, createUser);
-			Calendar calendar = Calendar.getInstance();
-			calendar.setTime(new Date());
-			DateValue dateValue = new DateValue(calendar);
-			fileNode.setProperty(CRATE_DATE, dateValue);
-			session.save();
-		} catch (Exception ex) {
-			throw new RuleException(ex);
+	@Override
+	public void createFile(String path, String content,User user) throws Exception{
+		if(!permissionService.isAdmin()){
+			throw new NoPermissionException();
 		}
+		createFileNode(path, content, user, true);
 	}
 	
-	public List<ResourcePackage> loadProjectResourcePackages(String project) throws Exception {
-		Node rootNode=getRootNode();
-		String filePath = processPath(project) + "/" + RES_PACKGE_FILE;
-		if (!rootNode.hasNode(filePath)) {
-			createFile(filePath, "<?xml version=\"1.0\" encoding=\"utf-8\"?><res-packages></res-packages>",null);
-			return null;
-		}
-		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		Node fileNode = rootNode.getNode(filePath);
-		Property property = fileNode.getProperty(DATA);
-		Binary fileBinary = property.getBinary();
-		InputStream inputStream = fileBinary.getStream();
-		String content = IOUtils.toString(inputStream, "utf-8");
-		inputStream.close();
-		Document document = DocumentHelper.parseText(content);
-		Element rootElement = document.getRootElement();
-		List<ResourcePackage> packages = new ArrayList<ResourcePackage>();
-		for (Object obj : rootElement.elements()) {
-			if (!(obj instanceof Element)) {
-				continue;
-			}
-			Element element = (Element) obj;
-			if (!element.getName().equals("res-package")) {
-				continue;
-			}
-			ResourcePackage p = new ResourcePackage();
-			String dateStr = element.attributeValue("create_date");
-			if (dateStr != null) {
-				p.setCreateDate(sd.parse(dateStr));
-			}
-			p.setId(element.attributeValue("id"));
-			p.setName(element.attributeValue("name"));
-			p.setProject(project);
-			List<ResourceItem> items = new ArrayList<ResourceItem>();
-			for (Object o : element.elements()) {
-				if (!(o instanceof Element)) {
-					continue;
-				}
-				Element ele = (Element) o;
-				if (!ele.getName().equals("res-package-item")) {
-					continue;
-				}
-				ResourceItem item = new ResourceItem();
-				item.setName(ele.attributeValue("name"));
-				item.setPackageId(p.getId());
-				item.setPath(ele.attributeValue("path"));
-				item.setVersion(ele.attributeValue("version"));
-				items.add(item);
-			}
-			p.setResourceItems(items);
-			packages.add(p);
+	public void fileRename(String path, String newPath) throws Exception{
+		if(!permissionService.isAdmin()){
+			throw new NoPermissionException();
 		}
-		return packages;
-	}
-
-	private InputStream readVersionFile(String path, String version) {
+		
+		repositoryInteceptor.renameFile(path, newPath);
 		path = processPath(path);
-		try {
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
-			}
-			Node fileNode = rootNode.getNode(path);
-			VersionHistory versionHistory = versionManager.getVersionHistory(fileNode.getPath());
-			Version v = versionHistory.getVersion(version);
-			Node fnode = v.getFrozenNode();
-			Property property = fnode.getProperty(DATA);
-			Binary fileBinary = property.getBinary();
-			return fileBinary.getStream();
-		} catch (Exception ex) {
-			ex.printStackTrace();
-			throw new RuleException(ex);
-		} finally {
+		newPath = processPath(newPath);
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(path)) {
+			throw new RuleException("File [" + path + "] not exist.");
 		}
+		session.getWorkspace().move("/" + path, "/" + newPath);
+		session.save();
 	}
 	
-	@Override
-	public InputStream readFile(String path, String version) {
-		return readFile(path,version,true);
+	public void exportXml(String projectPath, OutputStream outputStream) throws Exception{
+		if(!permissionService.isAdmin()){
+			throw new NoPermissionException();
+		}
+		session.exportSystemView(projectPath, outputStream, false, false);
 	}
 
-	@Override
-	public InputStream readFile(String path,String version,boolean withPermission) {
-		if(withPermission && !permissionService.fileHasReadPermission(path)){
+	public void importXml(InputStream inputStream,boolean overwrite) throws Exception{
+		if(!permissionService.isAdmin()){
 			throw new NoPermissionException();
 		}
-		
-		if(StringUtils.isNotBlank(version)){
-			repositoryInteceptor.readFile(path+":"+version);
-			return readVersionFile(path, version);
-		}
-		repositoryInteceptor.readFile(path);
-		Node rootNode=getRootNode();
-		int colonPos = path.lastIndexOf(":");
-		if (colonPos > -1) {
-			version = path.substring(colonPos + 1, path.length());
-			path = path.substring(0, colonPos);
-			return readFile(path, version);
-		}
-		path = processPath(path);
-		try {
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
-			}
-			Node fileNode = rootNode.getNode(path);
-			Property property = fileNode.getProperty(DATA);
-			Binary fileBinary = property.getBinary();
-			return fileBinary.getStream();
-		} catch (Exception ex) {
-			throw new RuleException(ex);
+		String rootNodePath=getRootNode().getPath();
+		if(overwrite){
+			session.importXML(rootNodePath, inputStream,ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);				
+		}else{
+			session.importXML(rootNodePath, inputStream,ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);				
 		}
+		session.save();
 	}
 	
-	public void setRepositoryBuilder(RepositoryBuilder repositoryBuilder) {
-		this.repositoryBuilder = repositoryBuilder;
-	}
-
-	private void lockCheck(Node node,User user){
-		try{
-			if(lockManager.isLocked(node.getPath())){
-				String lockOwner=lockManager.getLock(node.getPath()).getLockOwner();
-				if(lockOwner.equals(user.getUsername())){
-					return;
-				}
-				throw new NodeLockException("【"+node.getName()+"】已被"+lockOwner+"锁定!");
-			}			
-		}catch(Exception ex){
-			throw new RuleException(ex);
+	private void createResourcePackageFile(String project,User user) throws Exception{
+		String filePath = processPath(project) + "/" + RES_PACKGE_FILE;
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(filePath)) {
+			createFile(filePath, "<?xml version=\"1.0\" encoding=\"utf-8\"?><res-packages></res-packages>",user);
 		}
 	}
 	
-	private Node getRootNode(){
-		try {
-			return session.getRootNode();
-		} catch (RepositoryException e) {
-			throw new RuleException(e);
+	private void createClientConfigFile(String project,User user) throws Exception{
+		Node rootNode=getRootNode();
+		String filePath = processPath(project) + "/" + CLIENT_CONFIG_FILE;
+		if (!rootNode.hasNode(filePath)) {
+			createFile(filePath, "<?xml version=\"1.0\" encoding=\"utf-8\"?><client-config></client-config>",user);
 		}
 	}
 	
-	private String processPath(String path) {
-		if (path.startsWith("/")) {
-			return path.substring(1, path.length());
+	private void createSecurityConfigFile(User user) throws Exception{
+		String companyId=user.getCompanyId();
+		String filePath=RESOURCE_SECURITY_CONFIG_FILE+(companyId == null ? "" : companyId);
+		Node rootNode=getRootNode();
+		if (!rootNode.hasNode(filePath)) {
+			createFileNode(filePath, "<?xml version=\"1.0\" encoding=\"utf-8\"?><user-permission></user-permission>",user,false);
 		}
-		return path;
 	}
-
-	public void fileRename(String path, String newPath,User user) {
-		if(!permissionService.isAdmin()){
-			throw new NoPermissionException();
-		}
-		
-		repositoryInteceptor.renameFile(path, newPath);
+	
+	private void createFileNode(String path, String content,User user,boolean isFile) throws Exception{
+		String createUser=user.getUsername();
+		repositoryInteceptor.createFile(path,content);
+		Node rootNode=getRootNode();
 		path = processPath(path);
-		newPath = processPath(newPath);
 		try {
-			Node rootNode=getRootNode();
-			if (!rootNode.hasNode(path)) {
-				throw new RuleException("File [" + path + "] not exist.");
+			if (rootNode.hasNode(path)) {
+				throw new RuleException("File [" + path + "] already exist.");
+			}
+			Node fileNode = rootNode.addNode(path);
+			fileNode.addMixin("mix:versionable");
+			fileNode.addMixin("mix:lockable");
+			Binary fileBinary = new BinaryImpl(content.getBytes());
+			fileNode.setProperty(DATA, fileBinary);
+			if(isFile){
+				fileNode.setProperty(FILE, true);				
 			}
-			session.getWorkspace().move("/" + path, "/" + newPath);
+			fileNode.setProperty(CRATE_USER, createUser);
+			Calendar calendar = Calendar.getInstance();
+			calendar.setTime(new Date());
+			DateValue dateValue = new DateValue(calendar);
+			fileNode.setProperty(CRATE_DATE, dateValue);
 			session.save();
 		} catch (Exception ex) {
 			throw new RuleException(ex);
 		}
 	}
-	
-	public void exportXml(String projectPath, OutputStream outputStream) {
-		if(!permissionService.isAdmin()){
-			throw new NoPermissionException();
-		}
-		
-		try {
-			session.exportSystemView(projectPath, outputStream, false, false);
-		} catch (Exception e) {
-			throw new RuleException(e);
-		}
-	}
 
-	public void importXml(InputStream inputStream,boolean overwrite) {
-		if(!permissionService.isAdmin()){
-			throw new NoPermissionException();
-		}
-		
-		try {
-			Node rootNode=getRootNode();
-			if(overwrite){
-				session.importXML(rootNode.getPath(), inputStream,
-						ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);				
-			}else{
-				session.importXML(rootNode.getPath(), inputStream,
-						ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);				
+	private void lockCheck(Node node,User user) throws Exception{
+		if(lockManager.isLocked(node.getPath())){
+			String lockOwner=lockManager.getLock(node.getPath()).getLockOwner();
+			if(lockOwner.equals(user.getUsername())){
+				return;
 			}
-			session.save();
-		} catch (Exception e) {
-			throw new RuleException(e);
+			throw new NodeLockException("【"+node.getName()+"】已被"+lockOwner+"锁定!");
 		}
 	}
 	
 	public void setPermissionService(PermissionService permissionService) {
 		this.permissionService = permissionService;
 	}
-	
-	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-		try {
-			repository = repositoryBuilder.getRepository();
-			SimpleCredentials cred = new SimpleCredentials("admin", "admin".toCharArray());
-			cred.setAttribute("AutoRefresh", true);
-			session = repository.login(cred, null);
-			versionManager = session.getWorkspace().getVersionManager();
-			lockManager=session.getWorkspace().getLockManager();
-			Collection<ReferenceUpdater> updaters = applicationContext.getBeansOfType(ReferenceUpdater.class).values();
-			refactor = new RepositoryRefactor(this, updaters);
-			
-			Collection<RepositoryInteceptor> repositoryInteceptors=applicationContext.getBeansOfType(RepositoryInteceptor.class).values();
-			if(repositoryInteceptors.size()==0){
-				repositoryInteceptor=new DefaultRepositoryInteceptor();
-			}else{
-				repositoryInteceptor=repositoryInteceptors.iterator().next();
-			}
-		} catch (Exception ex) {
-			throw new RuleException(ex);
-		}
-	}
 }

+ 14 - 10
urule-console/src/main/java/com/bstek/urule/console/repository/permission/PermissionServiceImpl.java

@@ -199,20 +199,24 @@ public class PermissionServiceImpl implements PermissionStore,PermissionService
 	private ProjectConfig loadProjectPermission(String project){
 		User user=EnvironmentUtils.getLoginUser(RequestHolder.newRequestContext());
 		String companyId=user.getCompanyId();
-		List<UserPermission> permissions=repositoryService.loadResourceSecurityConfigs(companyId);
-		ProjectConfig target=null;
-		for(UserPermission p:permissions){
-			if(p.getUsername().equals(user.getUsername())){
-				for(ProjectConfig pc:p.getProjectConfigs()){
-					if(pc.getProject().equals(project)){
-						target=pc;
-						break;
+		try{
+			List<UserPermission> permissions=repositoryService.loadResourceSecurityConfigs(companyId);
+			ProjectConfig target=null;
+			for(UserPermission p:permissions){
+				if(p.getUsername().equals(user.getUsername())){
+					for(ProjectConfig pc:p.getProjectConfigs()){
+						if(pc.getProject().equals(project)){
+							target=pc;
+							break;
+						}
 					}
+					break;
 				}
-				break;
 			}
+			return target;
+		}catch(Exception ex){
+			throw new RuleException(ex);
 		}
-		return target;
 	}
 	@Override
 	public void refreshPermissionStore() {

+ 7 - 3
urule-console/src/main/java/com/bstek/urule/console/servlet/client/ClientConfigServletHandler.java

@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 
+import com.bstek.urule.RuleException;
 import com.bstek.urule.Utils;
 import com.bstek.urule.console.EnvironmentUtils;
 import com.bstek.urule.console.User;
@@ -55,7 +56,7 @@ public class ClientConfigServletHandler extends RenderPageServletHandler{
 			writer.close();
 		}
 	}
-	public void loadData(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void loadData(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		String project=req.getParameter("project");
 		project=Utils.decodeURL(project);
 		writeObjectToJson(resp, repositoryService.loadClientConfigs(project));
@@ -66,7 +67,11 @@ public class ClientConfigServletHandler extends RenderPageServletHandler{
 		String file=project+"/"+RepositoryServiceImpl.CLIENT_CONFIG_FILE;
 		String content=req.getParameter("content");
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req, resp));
-		repositoryService.saveFile(file, content, user, false,null);
+		try{
+			repositoryService.saveFile(file, content, false,null,user);			
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 	}
 	
 	public void setRepositoryService(RepositoryService repositoryService) {
@@ -77,5 +82,4 @@ public class ClientConfigServletHandler extends RenderPageServletHandler{
 	public String url() {
 		return "/clientconfig";
 	}
-	
 }

+ 68 - 52
urule-console/src/main/java/com/bstek/urule/console/servlet/common/CommonServletHandler.java

@@ -87,50 +87,58 @@ public class CommonServletHandler extends RenderPageServletHandler{
 		String versionComment=req.getParameter("versionComment");
 		Boolean newVersion = Boolean.valueOf(req.getParameter("newVersion"));
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req, resp));
-		repositoryService.saveFile(file,content,user,newVersion,versionComment);
+		try{
+			repositoryService.saveFile(file,content,newVersion,versionComment,user);			
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 	}
 	public void loadReferenceFiles(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 		String path=req.getParameter("path");
 		path=Utils.decodeURL(path);
 		String searchText=buildSearchText(path,req,false);
-		List<String> files=repositoryService.getReferenceFiles(path,searchText);
-		searchText=buildSearchText(path,req,true);
-		List<String> scriptFiles=repositoryService.getReferenceFiles(path,searchText);
-		if(scriptFiles.size()>0){
-			files.addAll(scriptFiles);
-		}
-		List<RefFile> refFiles=new ArrayList<RefFile>();
-		for(String file:files){
-			RefFile ref=new RefFile();
-			refFiles.add(ref);
-			ref.setPath(file);
-			if(file.endsWith(FileType.Ruleset.toString())){
-				ref.setEditor("/ruleseteditor");
-				ref.setType("决策集");
-			}else if(file.endsWith(FileType.UL.toString())){
-				ref.setEditor("/uleditor");
-				ref.setType("脚本决策集");
-			}else if(file.endsWith(FileType.DecisionTable.toString())){
-				ref.setEditor("/decisiontableeditor");
-				ref.setType("决策表");
-			}else if(file.endsWith(FileType.ScriptDecisionTable.toString())){
-				ref.setEditor("/scriptdecisiontableeditor");
-				ref.setType("脚本决策表");
-			}else if(file.endsWith(FileType.DecisionTree.toString())){
-				ref.setEditor("/decisiontreeeditor");			
-				ref.setType("决策树");
-			}else if(file.endsWith(FileType.RuleFlow.toString())){
-				ref.setEditor("/ruleflowdesigner");			
-				ref.setType("决策流");
+		try{
+			List<String> files=repositoryService.getReferenceFiles(path,searchText);
+			searchText=buildSearchText(path,req,true);
+			List<String> scriptFiles=repositoryService.getReferenceFiles(path,searchText);
+			if(scriptFiles.size()>0){
+				files.addAll(scriptFiles);
 			}
-			int pos=file.lastIndexOf("/");
-			String name=file;
-			if(pos>-1){
-				name=file.substring(pos+1,file.length());
+			List<RefFile> refFiles=new ArrayList<RefFile>();
+			for(String file:files){
+				RefFile ref=new RefFile();
+				refFiles.add(ref);
+				ref.setPath(file);
+				if(file.endsWith(FileType.Ruleset.toString())){
+					ref.setEditor("/ruleseteditor");
+					ref.setType("决策集");
+				}else if(file.endsWith(FileType.UL.toString())){
+					ref.setEditor("/uleditor");
+					ref.setType("脚本决策集");
+				}else if(file.endsWith(FileType.DecisionTable.toString())){
+					ref.setEditor("/decisiontableeditor");
+					ref.setType("决策表");
+				}else if(file.endsWith(FileType.ScriptDecisionTable.toString())){
+					ref.setEditor("/scriptdecisiontableeditor");
+					ref.setType("脚本决策表");
+				}else if(file.endsWith(FileType.DecisionTree.toString())){
+					ref.setEditor("/decisiontreeeditor");			
+					ref.setType("决策树");
+				}else if(file.endsWith(FileType.RuleFlow.toString())){
+					ref.setEditor("/ruleflowdesigner");			
+					ref.setType("决策流");
+				}
+				int pos=file.lastIndexOf("/");
+				String name=file;
+				if(pos>-1){
+					name=file.substring(pos+1,file.length());
+				}
+				ref.setName(name);
 			}
-			ref.setName(name);
+			writeObjectToJson(resp, refFiles);
+		}catch(Exception ex){
+			throw new RuleException(ex);
 		}
-		writeObjectToJson(resp, refFiles);
 	}
 	
 	private String buildSearchText(String path,HttpServletRequest req,boolean isScript){
@@ -202,8 +210,12 @@ public class CommonServletHandler extends RenderPageServletHandler{
 		}else{
 			types=new FileType[]{FileType.UL,FileType.Ruleset,FileType.RuleFlow,FileType.DecisionTable,FileType.ScriptDecisionTable,FileType.DecisionTree,FileType.Scorecard};
 		}
-		Repository repo=repositoryService.loadRepository(project,user.getCompanyId(),false,types,searchFileName);	
-		writeObjectToJson(resp, repo.getRootFile());
+		try{
+			Repository repo=repositoryService.loadRepository(project,user,false,types,searchFileName);	
+			writeObjectToJson(resp, repo.getRootFile());			
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 	}
 	
 	public void loadFunctions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
@@ -258,23 +270,27 @@ public class CommonServletHandler extends RenderPageServletHandler{
 					if(subpaths.length==2){
 						version=subpaths[1];
 					}
-					InputStream inputStream=null;
-					if(StringUtils.isEmpty(version)){
-						inputStream=repositoryService.readFile(path,null);
-					}else{
-						inputStream=repositoryService.readFile(path,version);			
-					}
-					Element element=parseXml(inputStream);
-					for(Deserializer<?> des:deserializers){
-						if(des.support(element)){
-							result.add(des.deserialize(element,true));
-							if(des instanceof ActionLibraryDeserializer){
-								isaction=true;
+					try{
+						InputStream inputStream=null;
+						if(StringUtils.isEmpty(version)){
+							inputStream=repositoryService.readFile(path,null);
+						}else{
+							inputStream=repositoryService.readFile(path,version);			
+						}
+						Element element=parseXml(inputStream);
+						for(Deserializer<?> des:deserializers){
+							if(des.support(element)){
+								result.add(des.deserialize(element));
+								if(des instanceof ActionLibraryDeserializer){
+									isaction=true;
+								}
+								break;
 							}
-							break;
 						}
+						inputStream.close();
+					}catch(Exception ex){
+						throw new RuleException(ex);
 					}
-					inputStream.close();
 				}
 			}
 		}

+ 12 - 8
urule-console/src/main/java/com/bstek/urule/console/servlet/flow/RuleFlowDesignerServletHandler.java

@@ -74,15 +74,19 @@ public class RuleFlowDesignerServletHandler extends RenderPageServletHandler {
 		String file=req.getParameter("file");
 		String version=req.getParameter("version");
 		file=Utils.decodeURL(file);
-		if(StringUtils.isEmpty(version)){
-			inputStream=repositoryService.readFile(file,null);
-		}else{
-			inputStream=repositoryService.readFile(file,version);
+		try{
+			if(StringUtils.isEmpty(version)){
+				inputStream=repositoryService.readFile(file,null);
+			}else{
+				inputStream=repositoryService.readFile(file,version);
+			}
+			Element root=parseXml(inputStream);
+			FlowDefinition fd = flowDeserializer.deserialize(root);
+			inputStream.close();
+			writeObjectToJson(resp, new FlowDefinitionWrapper(fd));
+		}catch(Exception ex){
+			throw new RuleException(ex);
 		}
-		Element root=parseXml(inputStream);
-		FlowDefinition fd = flowDeserializer.deserialize(root,true);
-		inputStream.close();
-		writeObjectToJson(resp, new FlowDefinitionWrapper(fd));
 	}
 	
 	protected Element parseXml(InputStream stream){

+ 37 - 22
urule-console/src/main/java/com/bstek/urule/console/servlet/frame/FrameServletHandler.java

@@ -159,12 +159,16 @@ public class FrameServletHandler extends RenderPageServletHandler{
 		String oldFullPath=req.getParameter("oldFullPath");
 		newFullPath=Utils.decodeURL(newFullPath);
 		oldFullPath=Utils.decodeURL(oldFullPath);
-		InputStream inputStream=repositoryService.readFile(oldFullPath, null);
-		String content=IOUtils.toString(inputStream, "utf-8");
-		inputStream.close();
-		User user=EnvironmentUtils.getLoginUser(new RequestContext(req,resp));
-		repositoryService.createFile(newFullPath, content,user);
-		loadProjects(req, resp);
+		try{
+			InputStream inputStream=repositoryService.readFile(oldFullPath, null);
+			String content=IOUtils.toString(inputStream, "utf-8");
+			inputStream.close();
+			User user=EnvironmentUtils.getLoginUser(new RequestContext(req,resp));
+			repositoryService.createFile(newFullPath, content,user);
+			loadProjects(req, resp);
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 	}
 	
 	public void createFile(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
@@ -236,7 +240,11 @@ public class FrameServletHandler extends RenderPageServletHandler{
 			content.append("</" + name + ">");
 		}
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req,resp));
-		repositoryService.createFile(path, content.toString(),user);
+		try{
+			repositoryService.createFile(path, content.toString(),user);			
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 		RepositoryFile newFileInfo=new RepositoryFile();
 		newFileInfo.setFullPath(path);
 		if(fileType.equals(FileType.VariableLibrary)){
@@ -315,8 +323,12 @@ public class FrameServletHandler extends RenderPageServletHandler{
 		projectName=Utils.decodeURL(projectName);
 		projectName=projectName.trim();
 		Map<String,Object> result=new HashMap<String,Object>();
-		result.put("valid", !repositoryService.fileExistCheck(projectName));
-		writeObjectToJson(resp, result);
+		try{
+			result.put("valid", !repositoryService.fileExistCheck(projectName));
+			writeObjectToJson(resp, result);
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 	}
 	public void fileExistCheck(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 		String fullFileName=req.getParameter("fullFileName");
@@ -326,11 +338,15 @@ public class FrameServletHandler extends RenderPageServletHandler{
 		fullFileName=Utils.decodeURL(fullFileName);
 		fullFileName=fullFileName.trim();
 		Map<String,Object> result=new HashMap<String,Object>();
-		result.put("valid", !repositoryService.fileExistCheck(fullFileName));
-		writeObjectToJson(resp, result);
+		try{
+			result.put("valid", !repositoryService.fileExistCheck(fullFileName));
+			writeObjectToJson(resp, result);			
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 	}
 	
-	public void deleteFile(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void deleteFile(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		String path=req.getParameter("path");
 		path=Utils.decodeURL(path);
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req, resp));
@@ -341,20 +357,20 @@ public class FrameServletHandler extends RenderPageServletHandler{
 		}
 	}
 	
-	public void lockFile(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void lockFile(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		String file=req.getParameter("file");
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req, resp));
 		repositoryService.lockPath(file, user);
 		loadProjects(req, resp);
 	}
-	public void unlockFile(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void unlockFile(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		String file=req.getParameter("file");
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req, resp));
 		repositoryService.unlockPath(file, user);
 		loadProjects(req, resp);
 	}
 	
-	public void exportProjectBackupFile(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void exportProjectBackupFile(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		String path=req.getParameter("path");
 		String projectPath=Utils.decodeURL(path);
 		if(StringUtils.isEmpty(projectPath)){
@@ -372,7 +388,7 @@ public class FrameServletHandler extends RenderPageServletHandler{
 		outputStream.close();
 	}
 	
-	public void createProject(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void createProject(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		String projectName=req.getParameter("newProjectName");
 		projectName=Utils.decodeURL(projectName);
 		boolean classify = getClassify(req,resp);
@@ -382,7 +398,7 @@ public class FrameServletHandler extends RenderPageServletHandler{
 	}
 
 	
-	public void loadProjects(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void loadProjects(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req,resp));
 		boolean classify = getClassify(req,resp);
 		String projectName=req.getParameter("projectName");
@@ -403,7 +419,7 @@ public class FrameServletHandler extends RenderPageServletHandler{
 				types=new FileType[]{FileType.RuleFlow};
 			}
 		}
-		Repository repo=repositoryService.loadRepository(projectName, user.getCompanyId(),classify,types,searchFileName);
+		Repository repo=repositoryService.loadRepository(projectName, user,classify,types,searchFileName);			
 		Map<String,Object> map=new HashMap<String,Object>();
 		map.put("repo", repo);
 		map.put("classify", classify);
@@ -434,14 +450,13 @@ public class FrameServletHandler extends RenderPageServletHandler{
 		return classify;
 	}
 	
-	public void fileRename(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	public void fileRename(HttpServletRequest req, HttpServletResponse resp) throws Exception {
 		String path=req.getParameter("path");
 		path=Utils.decodeURL(path);
 		String newPath=req.getParameter("newPath");
 		newPath=Utils.decodeURL(newPath);
-		User user=EnvironmentUtils.getLoginUser(new RequestContext(req, resp));
-		repositoryService.fileRename(path, newPath,user);
-		loadProjects(req, resp);
+		repositoryService.fileRename(path, newPath);
+		loadProjects(req, resp);			
 	}
 	
 	public void setRepositoryService(RepositoryService repositoryService) {

+ 1 - 1
urule-console/src/main/java/com/bstek/urule/console/servlet/knowledge/LoadKnowledgeServletHandler.java

@@ -58,7 +58,7 @@ public class LoadKnowledgeServletHandler  extends RenderPageServletHandler{
 		String timestamp=req.getParameter("timestamp");
 		KnowledgePackage knowledgePackage=CacheUtils.getKnowledgeCache().getKnowledge(packageId);
 		if(knowledgePackage==null){
-			knowledgePackage=knowledgePackageService.buildKnowledgePackage(packageId,false);
+			knowledgePackage=knowledgePackageService.buildKnowledgePackage(packageId);
 			CacheUtils.getKnowledgeCache().putKnowledge(packageId, knowledgePackage);
 		}
 		if(StringUtils.isNotEmpty(timestamp)){

+ 42 - 32
urule-console/src/main/java/com/bstek/urule/console/servlet/permission/PermissionConfigServletHandler.java

@@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 
+import com.bstek.urule.RuleException;
 import com.bstek.urule.console.EnvironmentUtils;
 import com.bstek.urule.console.User;
 import com.bstek.urule.console.exception.NoPermissionException;
@@ -64,45 +65,50 @@ public class PermissionConfigServletHandler extends RenderPageServletHandler{
 			writer.close();
 		}
 	}
+	
 	public void loadResourceSecurityConfigs(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 		String companyId=EnvironmentUtils.getLoginUser(new RequestContext(req, resp)).getCompanyId();
-		List<UserPermission> permissions=repositoryService.loadResourceSecurityConfigs(companyId);
-		List<User> users=EnvironmentUtils.getEnvironmentProvider().getUsers();
-		if(users==null)users=new ArrayList<User>();
-		List<UserPermission> result=new ArrayList<UserPermission>();
-		for(User user:users){
-			if(user.isAdmin()){
-				continue;
-			}
-			if(companyId!=null){
-				if(user.getCompanyId()==null){
+		try{
+			List<UserPermission> permissions=repositoryService.loadResourceSecurityConfigs(companyId);
+			List<User> users=EnvironmentUtils.getEnvironmentProvider().getUsers();
+			if(users==null)users=new ArrayList<User>();
+			List<UserPermission> result=new ArrayList<UserPermission>();
+			for(User user:users){
+				if(user.isAdmin()){
 					continue;
 				}
-				if(!user.getCompanyId().equals(companyId)){
-					continue;
+				if(companyId!=null){
+					if(user.getCompanyId()==null){
+						continue;
+					}
+					if(!user.getCompanyId().equals(companyId)){
+						continue;
+					}
 				}
-			}
-			boolean exist=false;
-			for(UserPermission p:permissions){
-				if(p.getUsername().equals(user.getUsername())){
-					exist=true;
-					break;
+				boolean exist=false;
+				for(UserPermission p:permissions){
+					if(p.getUsername().equals(user.getUsername())){
+						exist=true;
+						break;
+					}
+				}
+				if(exist){
+					continue;
 				}
+				UserPermission up=new UserPermission();
+				up.setProjectConfigs(new ArrayList<ProjectConfig>());
+				up.setUsername(user.getUsername());
+				result.add(up);
 			}
-			if(exist){
-				continue;
+			result.addAll(permissions);
+			List<RepositoryFile> projects=repositoryService.loadProjects(companyId);
+			for(UserPermission p:result){
+				buildProjectConfigs(projects, p);
 			}
-			UserPermission up=new UserPermission();
-			up.setProjectConfigs(new ArrayList<ProjectConfig>());
-			up.setUsername(user.getUsername());
-			result.add(up);
-		}
-		result.addAll(permissions);
-		List<RepositoryFile> projects=repositoryService.loadProject(companyId);
-		for(UserPermission p:result){
-			buildProjectConfigs(projects, p);
+			writeObjectToJson(resp, result);
+		}catch(Exception ex){
+			throw new RuleException(ex);
 		}
-		writeObjectToJson(resp, result);
 	}
 	
 	private void buildProjectConfigs(List<RepositoryFile> projects,UserPermission p){
@@ -133,8 +139,12 @@ public class PermissionConfigServletHandler extends RenderPageServletHandler{
 		String companyId=user.getCompanyId();
 		String content=req.getParameter("content");
 		String path=RepositoryServiceImpl.RESOURCE_SECURITY_CONFIG_FILE+(companyId==null ? "" : companyId);
-		repositoryService.saveFile(path, content, user, false,null);
-		permissionStore.refreshPermissionStore();
+		try{
+			repositoryService.saveFile(path, content, false,null,user);
+			permissionStore.refreshPermissionStore();			
+		}catch(Exception ex){
+			throw new RuleException(ex);
+		}
 	}
 	
 	public void setRepositoryService(RepositoryService repositoryService) {

+ 1 - 1
urule-console/src/main/java/com/bstek/urule/console/servlet/respackage/PackageServletHandler.java

@@ -421,7 +421,7 @@ public class PackageServletHandler extends RenderPageServletHandler {
 		String path=project+"/"+RepositoryServiceImpl.RES_PACKGE_FILE;
 		String xml=req.getParameter("xml");
 		User user=EnvironmentUtils.getLoginUser(new RequestContext(req,resp));
-		repositoryService.saveFile(path, xml, user, false,null);
+		repositoryService.saveFile(path, xml, false,null,user);
 	}
 	
 	@SuppressWarnings("unchecked")

+ 8 - 5
urule-console/src/main/java/com/bstek/urule/console/servlet/ul/ULEditorServletHandler.java

@@ -29,6 +29,7 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 
+import com.bstek.urule.RuleException;
 import com.bstek.urule.Utils;
 import com.bstek.urule.builder.ResourceLibraryBuilder;
 import com.bstek.urule.console.repository.RepositoryService;
@@ -72,13 +73,15 @@ public class ULEditorServletHandler extends RenderPageServletHandler{
 		OutputStream outputStream=resp.getOutputStream();
 		String version=req.getParameter("version");
 		InputStream inputStream=null;
-		if(StringUtils.isEmpty(version)){
-			inputStream=repositoryService.readFile(file,null);
-		}else{
-			inputStream=repositoryService.readFile(file,version);			
-		}
 		try{
+			if(StringUtils.isEmpty(version)){
+				inputStream=repositoryService.readFile(file,null);
+			}else{
+				inputStream=repositoryService.readFile(file,version);			
+			}
 			IOUtils.copy(inputStream, outputStream);
+		}catch(Exception ex){
+			throw new RuleException(ex);
 		}finally{
 			outputStream.close();
 			inputStream.close();

+ 19 - 15
urule-console/src/main/java/com/bstek/urule/console/servlet/xml/XmlServletHandler.java

@@ -91,25 +91,29 @@ public class XmlServletHandler extends WriteJsonServletHandler implements Applic
 					if(subpaths.length==2){
 						version=subpaths[1];
 					}
-					InputStream inputStream=null;
-					if(StringUtils.isEmpty(version)){
-						inputStream=repositoryService.readFile(path,null);
-					}else{
-						inputStream=repositoryService.readFile(path,version);			
-					}
 					try{
-						Element element=parseXml(inputStream);
-						for(Deserializer<?> des:deserializers){
-							if(des.support(element)){
-								result.add(des.deserialize(element,true));
-								if(des instanceof ActionLibraryDeserializer){
-									isaction=true;
+						InputStream inputStream=null;
+						if(StringUtils.isEmpty(version)){
+							inputStream=repositoryService.readFile(path,null);
+						}else{
+							inputStream=repositoryService.readFile(path,version);			
+						}
+						try{
+							Element element=parseXml(inputStream);
+							for(Deserializer<?> des:deserializers){
+								if(des.support(element)){
+									result.add(des.deserialize(element));
+									if(des instanceof ActionLibraryDeserializer){
+										isaction=true;
+									}
+									break;
 								}
-								break;
 							}
+						}finally{
+							inputStream.close();
 						}
-					}finally{
-						inputStream.close();
+					}catch(Exception ex){
+						throw new RuleException(ex);
 					}
 				}
 			}

+ 2 - 5
urule-core/src/main/java/com/bstek/urule/builder/KnowledgeBuilder.java

@@ -59,9 +59,6 @@ public class KnowledgeBuilder extends AbstractBuilder{
 	private DSLRuleSetBuilder dslRuleSetBuilder;
 	public static final String BEAN_ID="urule.knowledgeBuilder";
 	public KnowledgeBase buildKnowledgeBase(ResourceBase resourceBase) throws IOException{
-		return buildKnowledgeBase(resourceBase,true);
-	}
-	public KnowledgeBase buildKnowledgeBase(ResourceBase resourceBase,boolean withPermission) throws IOException{
 		KnowledgePackageService knowledgePackageService=(KnowledgePackageService)applicationContext.getBean(KnowledgePackageService.BEAN_ID);
 		List<Rule> rules=new ArrayList<Rule>();
 		Map<String,Library> libMap=new HashMap<String,Library>();
@@ -80,7 +77,7 @@ public class KnowledgeBuilder extends AbstractBuilder{
 				if(!builder.support(root)){
 					continue;
 				}
-				Object object=builder.build(root,withPermission);
+				Object object=builder.build(root);
 				ResourceType type=builder.getType();
 				if(type.equals(ResourceType.RuleSet)){
 					RuleSet ruleSet=(RuleSet)object;
@@ -128,7 +125,7 @@ public class KnowledgeBuilder extends AbstractBuilder{
 				break;
 			}
 		}
-		ResourceLibrary resourceLibrary=resourceLibraryBuilder.buildResourceLibrary(libMap.values(),withPermission);
+		ResourceLibrary resourceLibrary=resourceLibraryBuilder.buildResourceLibrary(libMap.values());
 		buildLoopRules(rules, resourceLibrary);
 		Rete rete=reteBuilder.buildRete(rules, resourceLibrary);
 		return new KnowledgeBase(rete,flowMap,retriveNoLhsRules(rules));

+ 1 - 4
urule-core/src/main/java/com/bstek/urule/builder/ResourceBase.java

@@ -34,14 +34,11 @@ public class ResourceBase {
 		this.providers=providers;
 	}
 	public ResourceBase addResource(String path,String version){
-		return addResource(path,version,true);
-	}
-	public ResourceBase addResource(String path,String version,boolean withPermission){
 		boolean support=false;
 		for(ResourceProvider provider:providers){
 			if(provider.support(path)){
 				support=true;
-				resources.add(provider.provide(path,version,withPermission));
+				resources.add(provider.provide(path,version));
 				break;
 			}
 		}

+ 3 - 6
urule-core/src/main/java/com/bstek/urule/builder/ResourceLibraryBuilder.java

@@ -41,11 +41,8 @@ import com.bstek.urule.runtime.BuiltInActionLibraryBuilder;
  */
 public class ResourceLibraryBuilder extends AbstractBuilder{
 	private BuiltInActionLibraryBuilder builtInActionLibraryBuilder;
-	public ResourceLibrary buildResourceLibrary(Collection<Library> libraries){
-		return buildResourceLibrary(libraries,true);
-	}
 	@SuppressWarnings("unchecked")
-	public ResourceLibrary buildResourceLibrary(Collection<Library> libraries,boolean withPermission){
+	public ResourceLibrary buildResourceLibrary(Collection<Library> libraries){
 		if(libraries==null){
 			libraries=Collections.EMPTY_LIST;
 		}
@@ -55,7 +52,7 @@ public class ResourceLibraryBuilder extends AbstractBuilder{
 		List<VariableCategory> parameterVariableCategories=new ArrayList<VariableCategory>();
 		ResourceBase resourceBase=newResourceBase();
 		for(Library lib:libraries){
-			resourceBase.addResource(lib.getPath(),lib.getVersion(),withPermission);
+			resourceBase.addResource(lib.getPath(),lib.getVersion());
 		}
 		for(Resource resource:resourceBase.getResources()){
 			String content=resource.getContent();
@@ -64,7 +61,7 @@ public class ResourceLibraryBuilder extends AbstractBuilder{
 				if(!builder.support(root)){
 					continue;
 				}
-				Object object=builder.build(root,withPermission);
+				Object object=builder.build(root);
 				ResourceType type=builder.getType();
 				if(type.equals(ResourceType.ActionLibrary)){
 					ActionLibrary al=(ActionLibrary)object;

+ 1 - 4
urule-core/src/main/java/com/bstek/urule/builder/RulesRebuilder.java

@@ -82,16 +82,13 @@ import com.bstek.urule.model.rule.loop.LoopTarget;
 public class RulesRebuilder {
 	private ResourceLibraryBuilder resourceLibraryBuilder;
 	public void rebuildRules(List<Library> libraries, List<Rule> rules) {
-		rebuildRules(libraries,rules,true);
-	}
-	public void rebuildRules(List<Library> libraries, List<Rule> rules,boolean withPermission) {
 		if(libraries==null){
 			return;
 		}
 		if(rules==null){
 			return;
 		}
-		ResourceLibrary resLibraries=resourceLibraryBuilder.buildResourceLibrary(libraries,withPermission);
+		ResourceLibrary resLibraries=resourceLibraryBuilder.buildResourceLibrary(libraries);
 		for(Rule rule:rules){
 			Map<String,String> namedMap=new HashMap<String,String>();
 			if(rule.getLhs()!=null){

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/ActionLibraryResourceBuilder.java

@@ -27,8 +27,8 @@ import com.bstek.urule.parse.deserializer.ActionLibraryDeserializer;
  */
 public class ActionLibraryResourceBuilder implements ResourceBuilder<ActionLibrary> {
 	private ActionLibraryDeserializer actionLibraryDeserializer;
-	public ActionLibrary build(Element root,boolean withPermission) {
-		return actionLibraryDeserializer.deserialize(root,withPermission);
+	public ActionLibrary build(Element root) {
+		return actionLibraryDeserializer.deserialize(root);
 	}
 
 	public void setActionLibraryDeserializer(ActionLibraryDeserializer actionLibraryDeserializer) {

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/ConstantLibraryResourceBuilder.java

@@ -26,8 +26,8 @@ import com.bstek.urule.parse.deserializer.ConstantLibraryDeserializer;
  */
 public class ConstantLibraryResourceBuilder implements ResourceBuilder<ConstantLibrary> {
 	private ConstantLibraryDeserializer constantLibraryDeserializer;
-	public ConstantLibrary build(Element root,boolean withPermission) {
-		return constantLibraryDeserializer.deserialize(root,withPermission);
+	public ConstantLibrary build(Element root) {
+		return constantLibraryDeserializer.deserialize(root);
 	}
 	public boolean support(Element root) {
 		return constantLibraryDeserializer.support(root);

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/DecisionTableResourceBuilder.java

@@ -26,8 +26,8 @@ import com.bstek.urule.parse.deserializer.DecisionTableDeserializer;
  */
 public class DecisionTableResourceBuilder implements ResourceBuilder<DecisionTable> {
 	private DecisionTableDeserializer decisionTableDeserializer;
-	public DecisionTable build(Element root,boolean withPermission) {
-		return decisionTableDeserializer.deserialize(root,withPermission);
+	public DecisionTable build(Element root) {
+		return decisionTableDeserializer.deserialize(root);
 	}
 	public ResourceType getType() {
 		return ResourceType.DecisionTable;

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/DecisionTreeResourceBuilder.java

@@ -27,8 +27,8 @@ import com.bstek.urule.parse.deserializer.DecisionTreeDeserializer;
 public class DecisionTreeResourceBuilder implements ResourceBuilder<DecisionTree> {
 	private DecisionTreeDeserializer decisionTreeDeserializer;
 	@Override
-	public DecisionTree build(Element root,boolean withPermission) {
-		return decisionTreeDeserializer.deserialize(root,withPermission);
+	public DecisionTree build(Element root) {
+		return decisionTreeDeserializer.deserialize(root);
 	}
 	@Override
 	public ResourceType getType() {

+ 0 - 4
urule-core/src/main/java/com/bstek/urule/builder/resource/FileResourceProvider.java

@@ -32,10 +32,6 @@ import com.bstek.urule.RuleException;
 public class FileResourceProvider implements ResourceProvider,ApplicationContextAware {
 	private ApplicationContext applicationContext;
 	
-	@Override
-	public Resource provide(String path, String version, boolean withPermiossion) {
-		return provide(path,version);
-	}
 	@Override
 	public Resource provide(String path,String version) {
 		try {

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/FlowResourceBuilder.java

@@ -26,8 +26,8 @@ import com.bstek.urule.parse.deserializer.FlowDeserializer;
  */
 public class FlowResourceBuilder implements ResourceBuilder<FlowDefinition> {
 	private FlowDeserializer flowDeserializer;
-	public FlowDefinition build(Element root,boolean withPermission) {
-		return flowDeserializer.deserialize(root,withPermission);
+	public FlowDefinition build(Element root) {
+		return flowDeserializer.deserialize(root);
 	}
 	public ResourceType getType() {
 		return ResourceType.Flow;

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/ParameterLibraryResourceBuilder.java

@@ -30,12 +30,12 @@ import com.bstek.urule.parse.deserializer.ParameterLibraryDeserializer;
 public class ParameterLibraryResourceBuilder implements ResourceBuilder<VariableCategory> {
 	private ParameterLibraryDeserializer parameterLibraryDeserializer;
 	@Override
-	public VariableCategory build(Element root,boolean withPermission) {
+	public VariableCategory build(Element root) {
 		VariableCategory category=new VariableCategory();
 		category.setName(VariableCategory.PARAM_CATEGORY);
 		category.setClazz(HashMap.class.getName());
 		category.setType(CategoryType.Clazz);
-		category.setVariables(parameterLibraryDeserializer.deserialize(root,withPermission));
+		category.setVariables(parameterLibraryDeserializer.deserialize(root));
 		return category;
 	}
 	@Override

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/builder/resource/ResourceBuilder.java

@@ -23,7 +23,7 @@ import org.dom4j.Element;
  * @since 2014年12月22日
  */
 public interface ResourceBuilder<T>{
-	T build(Element root,boolean withPermission);
+	T build(Element root);
 	boolean support(Element root);
 	ResourceType getType();
 }

+ 0 - 1
urule-core/src/main/java/com/bstek/urule/builder/resource/ResourceProvider.java

@@ -21,6 +21,5 @@ package com.bstek.urule.builder.resource;
  */
 public interface ResourceProvider {
 	Resource provide(String path,String version);
-	Resource provide(String path,String version,boolean withPermiossion);
 	boolean support(String path);
 }

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/RuleSetResourceBuilder.java

@@ -26,8 +26,8 @@ import com.bstek.urule.parse.deserializer.RuleSetDeserializer;
  */
 public class RuleSetResourceBuilder implements ResourceBuilder<RuleSet> {
 	private RuleSetDeserializer ruleSetDeserializer;
-	public RuleSet build(Element root,boolean withPermission) {
-		return ruleSetDeserializer.deserialize(root,withPermission);
+	public RuleSet build(Element root) {
+		return ruleSetDeserializer.deserialize(root);
 	}
 	public boolean support(Element root) {
 		return ruleSetDeserializer.support(root);

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/ScorecardResourceBuilder.java

@@ -58,8 +58,8 @@ public class ScorecardResourceBuilder implements ResourceBuilder<ScoreRule> {
 	private ScorecardDeserializer scorecardDeserializer;
 	private RulesRebuilder rulesRebuilder;
 	@Override
-	public ScoreRule build(Element root,boolean withPermission) {
-		ScorecardDefinition scorecard = scorecardDeserializer.deserialize(root,withPermission);
+	public ScoreRule build(Element root) {
+		ScorecardDefinition scorecard = scorecardDeserializer.deserialize(root);
 		ScoreRule scoreRule=new ScoreRule();
 		scoreRule.setName(scorecard.getName());
 		scoreRule.setEffectiveDate(scorecard.getEffectiveDate());

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/ScriptDecisionTableResourceBuilder.java

@@ -26,8 +26,8 @@ import com.bstek.urule.parse.deserializer.ScriptDecisionTableDeserializer;
  */
 public class ScriptDecisionTableResourceBuilder implements ResourceBuilder<ScriptDecisionTable> {
 	private ScriptDecisionTableDeserializer scriptDecisionTableDeserializer;
-	public ScriptDecisionTable build(Element root,boolean withPermission) {
-		return scriptDecisionTableDeserializer.deserialize(root,withPermission);
+	public ScriptDecisionTable build(Element root) {
+		return scriptDecisionTableDeserializer.deserialize(root);
 	}
 	public ResourceType getType() {
 		return ResourceType.ScriptDecisionTable;

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/builder/resource/VariableLibraryResourceBuilder.java

@@ -26,9 +26,9 @@ import com.bstek.urule.parse.deserializer.VariableLibraryDeserializer;
  */
 public class VariableLibraryResourceBuilder implements ResourceBuilder<VariableLibrary> {
 	private VariableLibraryDeserializer variableLibraryDeserializer;
-	public VariableLibrary build(Element root,boolean withPermission) {
+	public VariableLibrary build(Element root) {
 		VariableLibrary lib=new VariableLibrary();
-		lib.setVariableCategories(variableLibraryDeserializer.deserialize(root,withPermission));
+		lib.setVariableCategories(variableLibraryDeserializer.deserialize(root));
 		return lib;
 	}
 

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/AbstractParser.java

@@ -29,7 +29,7 @@ import com.bstek.urule.model.rule.Value;
  * @since 2015年2月28日
  */
 public abstract  class AbstractParser<T> implements Parser<T> {
-	protected List<Parameter> parseParameters(Element element,ValueParser valueParser,boolean withPermission) {
+	protected List<Parameter> parseParameters(Element element,ValueParser valueParser) {
 		List<Parameter> parameters=new ArrayList<Parameter>();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -46,7 +46,7 @@ public abstract  class AbstractParser<T> implements Parser<T> {
 					}
 					Element e=(Element)o;
 					if(valueParser.support(e.getName())){
-						Value value=valueParser.parse(e,withPermission);
+						Value value=valueParser.parse(e);
 						parameter.setValue(value);
 						break;
 					}

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/AbstractRuleParser.java

@@ -33,7 +33,7 @@ public abstract class AbstractRuleParser<T> implements Parser<T> {
 	protected LhsParser lhsParser;
 	protected RhsParser rhsParser;
 	private OtherParser otherParser;
-	public void parseRule(Rule rule,Element element,boolean withPermission) {
+	public void parseRule(Rule rule,Element element) {
 		rule.setName(element.attributeValue("name"));
 		String salience=element.attributeValue("salience");
 		if(StringUtils.isNotEmpty(salience)){
@@ -81,11 +81,11 @@ public abstract class AbstractRuleParser<T> implements Parser<T> {
 			}
 			Element ele=(Element)obj;
 			if(lhsParser.support(ele.getName())){
-				rule.setLhs(lhsParser.parse(ele,withPermission));				
+				rule.setLhs(lhsParser.parse(ele));				
 			}else if(rhsParser.support(ele.getName())){
-				rule.setRhs(rhsParser.parse(ele,withPermission));				
+				rule.setRhs(rhsParser.parse(ele));				
 			}else if(otherParser.support(ele.getName())){
-				rule.setOther(otherParser.parse(ele,withPermission));
+				rule.setOther(otherParser.parse(ele));
 			}else if(ele.getName().equals("remark")){
 				rule.setRemark(ele.getText());
 			}

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/ActionLibraryParser.java

@@ -28,7 +28,7 @@ import com.bstek.urule.model.library.action.SpringBean;
  * @since 2014年12月23日
  */
 public class ActionLibraryParser implements Parser<ActionLibrary> {
-	public ActionLibrary parse(Element element,boolean withPermission) {
+	public ActionLibrary parse(Element element) {
 		ActionLibrary lib=new ActionLibrary();
 		for(Object obj:element.elements()){
 			if(obj==null){

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/CommonFunctionActionParser.java

@@ -27,7 +27,7 @@ import com.bstek.urule.model.rule.lhs.CommonFunctionParameter;
  */
 public class CommonFunctionActionParser extends ActionParser {
 	@Override
-	public Action parse(Element element,boolean withPermission) {
+	public Action parse(Element element) {
 		ExecuteCommonFunctionAction action=new ExecuteCommonFunctionAction();
 		action.setLabel(element.attributeValue("function-label"));
 		action.setName(element.attributeValue("function-name"));
@@ -51,7 +51,7 @@ public class CommonFunctionActionParser extends ActionParser {
 				if(!e.getName().equals("value")){
 					continue;
 				}
-				p.setObjectParameter(valueParser.parse(e,withPermission));
+				p.setObjectParameter(valueParser.parse(e));
 			}
 			action.setParameter(p);
 		}

+ 3 - 3
urule-core/src/main/java/com/bstek/urule/parse/ComplexArithmeticParser.java

@@ -27,7 +27,7 @@ import com.bstek.urule.model.rule.ComplexArithmetic;
 public class ComplexArithmeticParser implements Parser<ComplexArithmetic> {
 	private ValueParser valueParser;
 	private ParenParser parenParser;
-	public ComplexArithmetic parse(Element element,boolean withPermission) {
+	public ComplexArithmetic parse(Element element) {
 		ComplexArithmetic arithmetic=new ComplexArithmetic();
 		ArithmeticType arithmeticType=ArithmeticType.valueOf(element.attributeValue("type"));
 		arithmetic.setType(arithmeticType);
@@ -37,9 +37,9 @@ public class ComplexArithmeticParser implements Parser<ComplexArithmetic> {
 			}
 			Element ele=(Element)obj;
 			if(valueParser.support(ele.getName())){
-				arithmetic.setValue(valueParser.parse(ele,withPermission));
+				arithmetic.setValue(valueParser.parse(ele));
 			}else if(parenParser.support(ele.getName())){
-				arithmetic.setValue(parenParser.parse(ele,withPermission));
+				arithmetic.setValue(parenParser.parse(ele));
 			}
 		}
 		return arithmetic;

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/ConsolePrintActionParser.java

@@ -25,7 +25,7 @@ import com.bstek.urule.action.ConsolePrintAction;
  * @since 2014年12月23日
  */
 public class ConsolePrintActionParser extends ActionParser {
-	public Action parse(Element element,boolean withPermission) {
+	public Action parse(Element element) {
 		ConsolePrintAction action=new ConsolePrintAction();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -33,7 +33,7 @@ public class ConsolePrintActionParser extends ActionParser {
 			}
 			Element ele=(Element)obj;
 			if(valueParser.support(ele.getName())){
-				action.setValue(valueParser.parse(ele,withPermission));
+				action.setValue(valueParser.parse(ele));
 				break;
 			}
 		}

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/ConstantLibraryParser.java

@@ -31,7 +31,7 @@ import com.bstek.urule.model.library.constant.ConstantLibrary;
  */
 public class ConstantLibraryParser implements Parser<ConstantLibrary> {
 	public static final String BEAN_ID="urule.constantLibraryParser";
-	public ConstantLibrary parse(Element element,boolean withPermission) {
+	public ConstantLibrary parse(Element element) {
 		List<ConstantCategory> categories=new ArrayList<ConstantCategory>();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){

+ 3 - 3
urule-core/src/main/java/com/bstek/urule/parse/CriteriaParser.java

@@ -28,7 +28,7 @@ import com.bstek.urule.model.rule.lhs.Criterion;
 public class CriteriaParser extends CriterionParser {
 	private ValueParser valueParser;
 	private LeftParser leftParser;
-	public Criterion parse(Element element,boolean withPermission) {
+	public Criterion parse(Element element) {
 		Criteria criteria=new Criteria();
 		Op op=Op.valueOf(element.attributeValue("op"));
 		criteria.setOp(op);
@@ -39,9 +39,9 @@ public class CriteriaParser extends CriterionParser {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(name.equals("value")){
-				criteria.setValue(valueParser.parse(ele,withPermission));
+				criteria.setValue(valueParser.parse(ele));
 			}else if(name.equals("left")){
-				criteria.setLeft(leftParser.parse(ele,withPermission));
+				criteria.setLeft(leftParser.parse(ele));
 			}
 		}
 		return criteria;

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/CriterionParser.java

@@ -32,7 +32,7 @@ import com.bstek.urule.model.rule.lhs.Criterion;
 public abstract class CriterionParser extends AbstractParser<Criterion> implements ApplicationContextAware {
 	protected Collection<CriterionParser> criterionParsers;
 	
-	protected List<Criterion> parseCriterion(Element element,boolean withPermission){
+	protected List<Criterion> parseCriterion(Element element){
 		List<Criterion> list=null;
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -43,7 +43,7 @@ public abstract class CriterionParser extends AbstractParser<Criterion> implemen
 			for(CriterionParser parser:criterionParsers){
 				if(parser.support(name)){
 					if(list==null)list=new ArrayList<Criterion>();
-					Criterion criterion=parser.parse(ele,withPermission);
+					Criterion criterion=parser.parse(ele);
 					if(criterion!=null){
 						list.add(criterion);						
 					}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/ExecuteMethodActionParser.java

@@ -28,13 +28,13 @@ import com.bstek.urule.model.rule.Parameter;
  * @since 2014年12月23日
  */
 public class ExecuteMethodActionParser extends ActionParser {
-	public Action parse(Element element,boolean withPermission) {
+	public Action parse(Element element) {
 		ExecuteMethodAction action=new ExecuteMethodAction();
 		action.setBeanId(element.attributeValue("bean"));
 		action.setBeanLabel(element.attributeValue("bean-label"));
 		action.setMethodLabel(element.attributeValue("method-label"));
 		action.setMethodName(element.attributeValue("method-name"));
-		List<Parameter> parameters = parseParameters(element,valueParser,withPermission);
+		List<Parameter> parameters = parseParameters(element,valueParser);
 		action.setParameters(parameters);
 		return action;
 	}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/JunctionParser.java

@@ -27,8 +27,8 @@ import com.bstek.urule.model.rule.lhs.Or;
  * @since 2014年12月23日
  */
 public class JunctionParser extends CriterionParser {
-	public Criterion parse(Element element,boolean withPermission) {
-		List<Criterion> list=parseCriterion(element,withPermission);
+	public Criterion parse(Element element) {
+		List<Criterion> list=parseCriterion(element);
 		if(list==null || list.size()==0){
 			return null;
 		}

+ 11 - 11
urule-core/src/main/java/com/bstek/urule/parse/LeftParser.java

@@ -36,7 +36,7 @@ public class LeftParser extends AbstractParser<Left> {
 	private SimpleArithmeticParser arithmeticParser;
 	private ValueParser valueParser;
 	@Override
-	public Left parse(Element element,boolean withPermission) {
+	public Left parse(Element element) {
 		Left left=new Left();
 		String type=element.attributeValue("type");
 		if(StringUtils.isNotEmpty(type)){
@@ -49,16 +49,16 @@ public class LeftParser extends AbstractParser<Left> {
 			left.setLeftPart(buildVariableLeftPart(element));
 			break;
 		case function:
-			left.setLeftPart(buildFunctionLeftPart(element,withPermission));
+			left.setLeftPart(buildFunctionLeftPart(element));
 			break;
 		case method:
-			left.setLeftPart(buildMethodLeftPart(element,withPermission));
+			left.setLeftPart(buildMethodLeftPart(element));
 			break;
 		case parameter:
 			left.setLeftPart(buildVariableLeftPart(element));
 			break;
 		case commonfunction:
-			left.setLeftPart(buildCommonFunctionLeftPart(element,withPermission));
+			left.setLeftPart(buildCommonFunctionLeftPart(element));
 		case NamedReference:
 			throw new RuleException("Not support reference type.");
 		case all:
@@ -76,14 +76,14 @@ public class LeftParser extends AbstractParser<Left> {
 			}
 			Element ele=(Element)obj;
 			if(arithmeticParser.support(ele.getName())){
-				left.setArithmetic(arithmeticParser.parse(ele,withPermission));
+				left.setArithmetic(arithmeticParser.parse(ele));
 			}
 		}
 		return left;
 	}
 
 	
-	private CommonFunctionLeftPart buildCommonFunctionLeftPart(Element element,boolean withPermission){
+	private CommonFunctionLeftPart buildCommonFunctionLeftPart(Element element){
 		CommonFunctionLeftPart part=new CommonFunctionLeftPart();
 		part.setName(element.attributeValue("function-name"));
 		part.setLabel(element.attributeValue("function-label"));
@@ -107,27 +107,27 @@ public class LeftParser extends AbstractParser<Left> {
 				if(!e.getName().equals("value")){
 					continue;
 				}
-				p.setObjectParameter(valueParser.parse(e,withPermission));
+				p.setObjectParameter(valueParser.parse(e));
 			}
 			part.setParameter(p);
 		}
 		return part;
 	}
 	
-	private MethodLeftPart buildMethodLeftPart(Element element,boolean withPermission){
+	private MethodLeftPart buildMethodLeftPart(Element element){
 		MethodLeftPart part=new MethodLeftPart();
 		part.setBeanId(element.attributeValue("bean-name"));
 		part.setBeanLabel(element.attributeValue("bean-label"));
 		part.setMethodLabel(element.attributeValue("method-label"));
 		part.setMethodName(element.attributeValue("method-name"));
-		part.setParameters(parseParameters(element, valueParser,withPermission));
+		part.setParameters(parseParameters(element, valueParser));
 		return part;
 	}
 	
-	private FunctionLeftPart buildFunctionLeftPart(Element element,boolean withPermission){
+	private FunctionLeftPart buildFunctionLeftPart(Element element){
 		FunctionLeftPart part=new FunctionLeftPart();
 		part.setName(element.attributeValue("name"));
-		part.setParameters(parseParameters(element, valueParser,withPermission));
+		part.setParameters(parseParameters(element, valueParser));
 		return part;
 	}
 	

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/LhsParser.java

@@ -31,13 +31,13 @@ import com.bstek.urule.model.rule.lhs.Lhs;
  */
 public class LhsParser implements Parser<Lhs>,ApplicationContextAware {
 	private Collection<CriterionParser> criterionParsers;
-	public Lhs parse(Element element,boolean withPermission) {
+	public Lhs parse(Element element) {
 		Lhs lhs=new Lhs();
-		lhs.setCriterion(parseCriterion(element,withPermission));
+		lhs.setCriterion(parseCriterion(element));
 		return lhs;
 	}
 	
-	public Criterion parseCriterion(Element element,boolean withPermission){
+	public Criterion parseCriterion(Element element){
 		Criterion criterion=null;
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -47,7 +47,7 @@ public class LhsParser implements Parser<Lhs>,ApplicationContextAware {
 			String name=ele.getName();
 			for(CriterionParser parser:criterionParsers){
 				if(parser.support(name)){
-					criterion=(Criterion)parser.parse(ele,withPermission);
+					criterion=(Criterion)parser.parse(ele);
 					if(criterion!=null){
 						break;
 					}

+ 5 - 5
urule-core/src/main/java/com/bstek/urule/parse/LoopRuleParser.java

@@ -28,9 +28,9 @@ import com.bstek.urule.model.rule.loop.LoopTarget;
  */
 public class LoopRuleParser extends AbstractRuleParser<LoopRule> {
 	private ValueParser valueParser;
-	public LoopRule parse(Element element,boolean withPermission) {
+	public LoopRule parse(Element element) {
 		LoopRule rule=new LoopRule();
-		parseRule(rule, element,withPermission);
+		parseRule(rule, element);
 		
 		LoopStart loopStart=new LoopStart();
 		rule.setLoopStart(loopStart);
@@ -43,9 +43,9 @@ public class LoopRuleParser extends AbstractRuleParser<LoopRule> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(name.equals("loop-start")){
-				loopStart.setActions(rhsParser.parseActions(ele,withPermission));
+				loopStart.setActions(rhsParser.parseActions(ele));
 			}else if(name.equals("loop-end")){
-				loopEnd.setActions(rhsParser.parseActions(ele,withPermission));
+				loopEnd.setActions(rhsParser.parseActions(ele));
 			}else if(name.equals("loop-target")){
 				LoopTarget loopTarget=new LoopTarget();
 				rule.setLoopTarget(loopTarget);			
@@ -55,7 +55,7 @@ public class LoopRuleParser extends AbstractRuleParser<LoopRule> {
 					}
 					Element e=(Element)eleObj;
 					if(valueParser.support(e.getName())){
-						loopTarget.setValue(valueParser.parse(e,withPermission));
+						loopTarget.setValue(valueParser.parse(e));
 						break;
 					}
 				}

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/NamedJunctionParser.java

@@ -34,7 +34,7 @@ import com.bstek.urule.model.rule.lhs.NamedJunction;
  */
 public class NamedJunctionParser extends CriterionParser {
 	private ValueParser valueParser;
-	public Criterion parse(Element element,boolean withPermission) {
+	public Criterion parse(Element element) {
 		NamedJunction junction=new NamedJunction();
 		junction.setReferenceName(element.attributeValue("reference-name"));
 		junction.setVariableCategory(element.attributeValue("var-category"));
@@ -50,12 +50,12 @@ public class NamedJunctionParser extends CriterionParser {
 			if(!name.equals("named-criteria")){
 				continue;
 			}
-			items.add(parseNamedItem(ele,withPermission));
+			items.add(parseNamedItem(ele));
 		}
 		return junction;
 	}
 	
-	private NamedItem parseNamedItem(Element element,boolean withPermission){
+	private NamedItem parseNamedItem(Element element){
 		NamedItem item=new NamedItem();
 		String variable=element.attributeValue("var");
 		if(StringUtils.isNotEmpty(variable)){
@@ -76,7 +76,7 @@ public class NamedJunctionParser extends CriterionParser {
 			}
 			Element ele=(Element)obj;
 			if(valueParser.support(ele.getName())){
-				item.setValue(valueParser.parse(ele,withPermission));
+				item.setValue(valueParser.parse(ele));
 				break;
 			}
 		}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/OtherParser.java

@@ -30,7 +30,7 @@ import com.bstek.urule.model.rule.Other;
  */
 public class OtherParser implements Parser<Other>,ApplicationContextAware {
 	private Collection<ActionParser> actionParsers;
-	public Other parse(Element element,boolean withPermission) {
+	public Other parse(Element element) {
 		Other other=new Other();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -40,7 +40,7 @@ public class OtherParser implements Parser<Other>,ApplicationContextAware {
 			String name=ele.getName();
 			for(ActionParser actionParser:actionParsers){
 				if(actionParser.support(name)){
-					other.addAction(actionParser.parse(ele,withPermission));
+					other.addAction(actionParser.parse(ele));
 					break;
 				}
 			}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/ParameterLibraryParser.java

@@ -29,7 +29,7 @@ import com.bstek.urule.model.library.variable.Variable;
 public class ParameterLibraryParser implements Parser<List<Variable>> {
 	private VariableParser variableParser;
 	@Override
-	public List<Variable> parse(Element element,boolean withPermission) {
+	public List<Variable> parse(Element element) {
 		List<Variable> variables=new ArrayList<Variable>();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -38,7 +38,7 @@ public class ParameterLibraryParser implements Parser<List<Variable>> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(name.equals("parameter")){
-				variables.add(variableParser.parse(ele,withPermission));
+				variables.add(variableParser.parse(ele));
 			}
 		}
 		return variables;

+ 3 - 3
urule-core/src/main/java/com/bstek/urule/parse/ParenParser.java

@@ -27,7 +27,7 @@ public class ParenParser implements Parser<ParenValue> {
 	private ValueParser valueParser;
 	private ComplexArithmeticParser arithmeticParser;
 	@Override
-	public ParenValue parse(Element element,boolean withPermission) {
+	public ParenValue parse(Element element) {
 		ParenValue value=new ParenValue();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -35,9 +35,9 @@ public class ParenParser implements Parser<ParenValue> {
 			}
 			Element ele=(Element)obj;
 			if(valueParser.support(ele.getName())){
-				value.setValue(valueParser.parse(ele,withPermission));
+				value.setValue(valueParser.parse(ele));
 			}else if(arithmeticParser.support(ele.getName())){
-				value.setArithmetic(arithmeticParser.parse(ele,withPermission));
+				value.setArithmetic(arithmeticParser.parse(ele));
 			}
 		}
 		return value;

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/Parser.java

@@ -23,5 +23,5 @@ import org.dom4j.Element;
  */
 public interface Parser<T> {
 	boolean support(String name);
-	T parse(Element element,boolean withPermission);
+	T parse(Element element);
 }

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/RhsParser.java

@@ -33,12 +33,12 @@ import com.bstek.urule.model.rule.Rhs;
  */
 public class RhsParser implements Parser<Rhs>,ApplicationContextAware {
 	private Collection<ActionParser> actionParsers;
-	public Rhs parse(Element element,boolean withPermission) {
+	public Rhs parse(Element element) {
 		Rhs rhs=new Rhs();
-		rhs.setActions(parseActions(element,withPermission));
+		rhs.setActions(parseActions(element));
 		return rhs;
 	}
-	public List<Action> parseActions(Element element,boolean withPermission){
+	public List<Action> parseActions(Element element){
 		List<Action> actions=new ArrayList<Action>();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -48,7 +48,7 @@ public class RhsParser implements Parser<Rhs>,ApplicationContextAware {
 			String name=ele.getName();
 			for(ActionParser actionParser:actionParsers){
 				if(actionParser.support(name)){
-					actions.add(actionParser.parse(ele,withPermission));
+					actions.add(actionParser.parse(ele));
 					break;
 				}
 			}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/RuleParser.java

@@ -24,9 +24,9 @@ import com.bstek.urule.model.rule.Rule;
  * @since 2014年12月23日
  */
 public class RuleParser extends AbstractRuleParser<Rule> {
-	public Rule parse(Element element,boolean withPermission) {
+	public Rule parse(Element element) {
 		Rule rule=new Rule();
-		parseRule(rule, element,withPermission);
+		parseRule(rule, element);
 		return rule;
 	}
 	public boolean support(String name) {

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/RuleSetParser.java

@@ -35,7 +35,7 @@ public class RuleSetParser implements Parser<RuleSet> {
 	private RuleParser ruleParser;
 	private LoopRuleParser loopRuleParser;
 	private RulesRebuilder rulesRebuilder;
-	public RuleSet parse(Element element,boolean withPermission) {
+	public RuleSet parse(Element element) {
 		RuleSet ruleSet=new RuleSet();
 		String parameterLibrary=element.attributeValue("parameter-library");
 		if(StringUtils.isNotEmpty(parameterLibrary)){
@@ -52,9 +52,9 @@ public class RuleSetParser implements Parser<RuleSet> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(ruleParser.support(name)){
-				rules.add(ruleParser.parse(ele,withPermission));
+				rules.add(ruleParser.parse(ele));
 			}else if(loopRuleParser.support(name)){
-				rules.add(loopRuleParser.parse(ele,withPermission));
+				rules.add(loopRuleParser.parse(ele));
 			}else if(name.equals("import-variable-library")){
 				ruleSet.addLibrary(new Library(ele.attributeValue("path"),null,LibraryType.Variable));
 			}else if(name.equals("import-constant-library")){
@@ -68,7 +68,7 @@ public class RuleSetParser implements Parser<RuleSet> {
 			}
 		}
 		ruleSet.setRules(rules);
-		rulesRebuilder.rebuildRules(ruleSet.getLibraries(), rules,withPermission);
+		rulesRebuilder.rebuildRules(ruleSet.getLibraries(), rules);
 		return ruleSet;
 	}
 	public void setRulesRebuilder(RulesRebuilder rulesRebuilder) {

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/SimpleArithmeticParser.java

@@ -26,7 +26,7 @@ import com.bstek.urule.model.rule.SimpleArithmeticValue;
  * @since 2014年12月23日
  */
 public class SimpleArithmeticParser implements Parser<SimpleArithmetic> {
-	public SimpleArithmetic parse(Element element,boolean withPermission) {
+	public SimpleArithmetic parse(Element element) {
 		SimpleArithmetic arithmetic=new SimpleArithmetic();
 		ArithmeticType arithmeticType=ArithmeticType.valueOf(element.attributeValue("type"));
 		arithmetic.setType(arithmeticType);
@@ -39,7 +39,7 @@ public class SimpleArithmeticParser implements Parser<SimpleArithmetic> {
 			}
 			Element ele=(Element)obj;
 			if(this.support(ele.getName())){
-				value.setArithmetic(this.parse(ele,withPermission));
+				value.setArithmetic(this.parse(ele));
 				break;
 			}
 		}

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/SpringBeanParser.java

@@ -27,7 +27,7 @@ import com.bstek.urule.model.library.action.SpringBean;
  * @since 2014年12月23日
  */
 public class SpringBeanParser implements Parser<SpringBean> {
-	public SpringBean parse(Element element,boolean withPermission) {
+	public SpringBean parse(Element element) {
 		SpringBean bean=new SpringBean();
 		bean.setId(element.attributeValue("id"));
 		for(Object obj:element.elements()){

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/ValueParser.java

@@ -41,7 +41,7 @@ import com.bstek.urule.model.rule.lhs.CommonFunctionParameter;
  */
 public class ValueParser extends AbstractParser<Value> {
 	private ComplexArithmeticParser arithmeticParser;
-	public Value parse(Element element,boolean withPermission) {
+	public Value parse(Element element) {
 		AbstractValue av=null;
 		ValueType type=ValueType.valueOf(element.attributeValue("type"));
 		if(type.equals(ValueType.Input)){
@@ -88,7 +88,7 @@ public class ValueParser extends AbstractParser<Value> {
 			mv.setMethodName(methodName);
 			String methodLabel=element.attributeValue("method-label");
 			mv.setMethodLabel(methodLabel);
-			List<Parameter> parameters = parseParameters(element,this,withPermission);
+			List<Parameter> parameters = parseParameters(element,this);
 			mv.setParameters(parameters);
 			av=mv;
 		}else if(type.equals(ValueType.CommonFunction)){
@@ -115,7 +115,7 @@ public class ValueParser extends AbstractParser<Value> {
 					if(!e.getName().equals("value")){
 						continue;
 					}
-					p.setObjectParameter(this.parse(e,withPermission));
+					p.setObjectParameter(this.parse(e));
 				}
 				value.setParameter(p);
 			}
@@ -150,7 +150,7 @@ public class ValueParser extends AbstractParser<Value> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(arithmeticParser.support(name)){
-				av.setArithmetic(arithmeticParser.parse(ele,withPermission));
+				av.setArithmetic(arithmeticParser.parse(ele));
 				break;
 			}
 		}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/VariableAssignActionParser.java

@@ -27,7 +27,7 @@ import com.bstek.urule.model.rule.lhs.LeftType;
  * @since 2014年12月23日
  */
 public class VariableAssignActionParser extends ActionParser {
-	public Action parse(Element element,boolean withPermission) {
+	public Action parse(Element element) {
 		VariableAssignAction action=new VariableAssignAction();
 		String referenceName=element.attributeValue("reference-name");
 		if(StringUtils.isNotEmpty(referenceName)){
@@ -59,7 +59,7 @@ public class VariableAssignActionParser extends ActionParser {
 			}
 			Element ele=(Element)obj;
 			if(valueParser.support(ele.getName())){
-				action.setValue(valueParser.parse(ele,withPermission));
+				action.setValue(valueParser.parse(ele));
 				break;
 			}
 		}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/VariableCategoryParser.java

@@ -26,7 +26,7 @@ import com.bstek.urule.model.library.variable.VariableCategory;
  */
 public class VariableCategoryParser implements Parser<VariableCategory> {
 	private VariableParser variableParser;
-	public VariableCategory parse(Element element,boolean withPermission) {
+	public VariableCategory parse(Element element) {
 		VariableCategory category=new VariableCategory();
 		category.setName(element.attributeValue("name"));
 		category.setClazz(element.attributeValue("clazz"));
@@ -38,7 +38,7 @@ public class VariableCategoryParser implements Parser<VariableCategory> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(variableParser.support(name)){
-				category.addVariable(variableParser.parse(ele,withPermission));
+				category.addVariable(variableParser.parse(ele));
 			}
 		}
 		return category;

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/VariableLibraryParser.java

@@ -28,7 +28,7 @@ import com.bstek.urule.model.library.variable.VariableCategory;
  */
 public class VariableLibraryParser implements Parser<List<VariableCategory>> {
 	private VariableCategoryParser variableCategoryParser;
-	public List<VariableCategory> parse(Element element,boolean withPermission) {
+	public List<VariableCategory> parse(Element element) {
 		List<VariableCategory> variableCategories=new ArrayList<VariableCategory>();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -37,7 +37,7 @@ public class VariableLibraryParser implements Parser<List<VariableCategory>> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(variableCategoryParser.support(name)){
-				variableCategories.add(variableCategoryParser.parse(ele,withPermission));
+				variableCategories.add(variableCategoryParser.parse(ele));
 			}
 		}
 		return variableCategories;

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/VariableParser.java

@@ -26,7 +26,7 @@ import com.bstek.urule.model.library.variable.Variable;
  * @since 2014年12月23日
  */
 public class VariableParser implements Parser<Variable> {
-	public Variable parse(Element element,boolean withPermission) {
+	public Variable parse(Element element) {
 		Variable variable=new Variable();
 		variable.setName(element.attributeValue("name"));
 		variable.setLabel(element.attributeValue("label"));

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/decisiontree/ActionTreeNodeParser.java

@@ -37,7 +37,7 @@ import com.bstek.urule.parse.Parser;
 public class ActionTreeNodeParser implements Parser<ActionTreeNode>,ApplicationContextAware {
 	private Collection<ActionParser> actionParsers;
 	@Override
-	public ActionTreeNode parse(Element element,boolean withPermission) {
+	public ActionTreeNode parse(Element element) {
 		ActionTreeNode node=new ActionTreeNode();
 		node.setNodeType(TreeNodeType.action);
 		List<Action> actions=new ArrayList<Action>();
@@ -50,7 +50,7 @@ public class ActionTreeNodeParser implements Parser<ActionTreeNode>,ApplicationC
 			
 			for(ActionParser actionParser:actionParsers){
 				if(actionParser.support(name)){
-					actions.add(actionParser.parse(ele,withPermission));
+					actions.add(actionParser.parse(ele));
 					break;
 				}
 			}

+ 5 - 5
urule-core/src/main/java/com/bstek/urule/parse/decisiontree/ConditionTreeNodeParser.java

@@ -37,7 +37,7 @@ public class ConditionTreeNodeParser implements Parser<ConditionTreeNode> {
 	private VariableTreeNodeParser variableTreeNodeParser;
 	private ActionTreeNodeParser actionTreeNodeParser;
 	@Override
-	public ConditionTreeNode parse(Element element,boolean withPermission) {
+	public ConditionTreeNode parse(Element element) {
 		ConditionTreeNode node=new ConditionTreeNode();
 		node.setNodeType(TreeNodeType.condition);
 		node.setOp(Op.valueOf(element.attributeValue("op")));
@@ -51,17 +51,17 @@ public class ConditionTreeNodeParser implements Parser<ConditionTreeNode> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(valueParser.support(name)){
-				node.setValue(valueParser.parse(ele,withPermission));
+				node.setValue(valueParser.parse(ele));
 			}else if(support(name)){
-				ConditionTreeNode cn=parse(ele,withPermission);
+				ConditionTreeNode cn=parse(ele);
 				cn.setParentNode(node);
 				conditionTreeNodes.add(cn);
 			}else if(variableTreeNodeParser.support(name)){
-				VariableTreeNode vn=variableTreeNodeParser.parse(ele,withPermission);
+				VariableTreeNode vn=variableTreeNodeParser.parse(ele);
 				vn.setParentNode(node);
 				variableTreeNodes.add(vn);
 			}else if(actionTreeNodeParser.support(name)){
-				ActionTreeNode an=actionTreeNodeParser.parse(ele,withPermission);
+				ActionTreeNode an=actionTreeNodeParser.parse(ele);
 				an.setParentNode(node);
 				actionTreeNodes.add(an);
 			}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/decisiontree/DecisionTreeParser.java

@@ -50,7 +50,7 @@ public class DecisionTreeParser implements Parser<DecisionTree> {
 	private VariableTreeNodeParser variableTreeNodeParser;
 	private RulesRebuilder rulesRebuilder;
 	@Override
-	public DecisionTree parse(Element element,boolean withPermission) {
+	public DecisionTree parse(Element element) {
 		DecisionTree tree=new DecisionTree();
 		
 		String salience=element.attributeValue("salience");
@@ -92,7 +92,7 @@ public class DecisionTreeParser implements Parser<DecisionTree> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(variableTreeNodeParser.support(name)){
-				tree.setVariableTreeNode(variableTreeNodeParser.parse(ele,withPermission));
+				tree.setVariableTreeNode(variableTreeNodeParser.parse(ele));
 			}if(name.equals("import-variable-library")){
 				libs.add(new Library(ele.attributeValue("path"),null,LibraryType.Variable));
 			}else if(name.equals("import-constant-library")){

+ 3 - 3
urule-core/src/main/java/com/bstek/urule/parse/decisiontree/VariableTreeNodeParser.java

@@ -34,7 +34,7 @@ public class VariableTreeNodeParser implements Parser<VariableTreeNode> {
 	private LeftParser leftParser;
 	private ConditionTreeNodeParser conditionTreeNodeParser;
 	@Override
-	public VariableTreeNode parse(Element element,boolean withPermission) {
+	public VariableTreeNode parse(Element element) {
 		VariableTreeNode node=new VariableTreeNode();
 		node.setNodeType(TreeNodeType.variable);
 		List<ConditionTreeNode> conditionTreeNodes=new ArrayList<ConditionTreeNode>();
@@ -45,9 +45,9 @@ public class VariableTreeNodeParser implements Parser<VariableTreeNode> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(name.equals("left")){
-				node.setLeft(leftParser.parse(ele,withPermission));
+				node.setLeft(leftParser.parse(ele));
 			}else if(conditionTreeNodeParser.support(name)){
-				ConditionTreeNode cn=conditionTreeNodeParser.parse(ele,withPermission);
+				ConditionTreeNode cn=conditionTreeNodeParser.parse(ele);
 				cn.setParentNode(node);
 				conditionTreeNodes.add(cn);
 			}

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/ActionLibraryDeserializer.java

@@ -27,8 +27,8 @@ import com.bstek.urule.parse.ActionLibraryParser;
 public class ActionLibraryDeserializer implements Deserializer<ActionLibrary> {
 	public static final String BEAN_ID="urule.actionLibraryDeserializer";
 	private ActionLibraryParser actionLibraryParser;
-	public ActionLibrary deserialize(Element root,boolean withPermission) {
-		return actionLibraryParser.parse(root,withPermission);
+	public ActionLibrary deserialize(Element root) {
+		return actionLibraryParser.parse(root);
 	}
 	public boolean support(Element root) {
 		return actionLibraryParser.support(root.getName());

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/ConstantLibraryDeserializer.java

@@ -27,8 +27,8 @@ import com.bstek.urule.parse.ConstantLibraryParser;
 public class ConstantLibraryDeserializer implements Deserializer<ConstantLibrary> {
 	public static final String BEAN_ID="urule.constantLibraryDeserializer";
 	private ConstantLibraryParser constantLibraryParser;
-	public ConstantLibrary deserialize(Element root,boolean withPermission) {
-		return constantLibraryParser.parse(root,withPermission);
+	public ConstantLibrary deserialize(Element root) {
+		return constantLibraryParser.parse(root);
 	}
 	public boolean support(Element root) {
 		return constantLibraryParser.support(root.getName());

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/DecisionTableDeserializer.java

@@ -27,8 +27,8 @@ import com.bstek.urule.parse.table.DecisionTableParser;
 public class DecisionTableDeserializer implements Deserializer<DecisionTable>{
 	public static final String BEAN_ID="urule.decisionTableDeserializer";
 	private DecisionTableParser decisionTableParser;
-	public DecisionTable deserialize(Element root,boolean withPermission) {
-		return decisionTableParser.parse(root,withPermission);
+	public DecisionTable deserialize(Element root) {
+		return decisionTableParser.parse(root);
 	}
 	public boolean support(Element root) {
 		return decisionTableParser.support(root.getName());

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/DecisionTreeDeserializer.java

@@ -28,8 +28,8 @@ public class DecisionTreeDeserializer implements Deserializer<DecisionTree> {
 	public static final String BEAN_ID="urule.decisionTreeDeserializer";
 	private DecisionTreeParser decisionTreeParser;
 	@Override
-	public DecisionTree deserialize(Element root,boolean withPermission) {
-		return decisionTreeParser.parse(root,withPermission);
+	public DecisionTree deserialize(Element root) {
+		return decisionTreeParser.parse(root);
 	}
 	public void setDecisionTreeParser(DecisionTreeParser decisionTreeParser) {
 		this.decisionTreeParser = decisionTreeParser;

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/deserializer/Deserializer.java

@@ -21,6 +21,6 @@ import org.dom4j.Element;
  * @since 2014年12月23日
  */
 public interface Deserializer<T>{
-	T deserialize(Element root,boolean withPermission);
+	T deserialize(Element root);
 	boolean support(Element root);
 }

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/FlowDeserializer.java

@@ -26,8 +26,8 @@ import com.bstek.urule.parse.flow.FlowDefinitionParser;
 public class FlowDeserializer implements Deserializer<FlowDefinition>{
 	public static final String BEAN_ID="urule.flowDeserializer";
 	private FlowDefinitionParser flowDefinitionParser;
-	public FlowDefinition deserialize(Element root,boolean withPermission) {
-		return (FlowDefinition)flowDefinitionParser.parse(root,withPermission);
+	public FlowDefinition deserialize(Element root) {
+		return (FlowDefinition)flowDefinitionParser.parse(root);
 	}
 	public boolean support(Element root) {
 		if(flowDefinitionParser.support(root.getName())){

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/ParameterLibraryDeserializer.java

@@ -30,8 +30,8 @@ public class ParameterLibraryDeserializer implements Deserializer<List<Variable>
 	public static final String BEAN_ID="urule.parameterLibraryDeserializer";
 	private ParameterLibraryParser parameterLibraryParser;
 	@Override
-	public List<Variable> deserialize(Element root,boolean withPermission) {
-		return parameterLibraryParser.parse(root,withPermission);
+	public List<Variable> deserialize(Element root) {
+		return parameterLibraryParser.parse(root);
 	}
 	@Override
 	public boolean support(Element root) {

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/RuleSetDeserializer.java

@@ -27,8 +27,8 @@ import com.bstek.urule.parse.RuleSetParser;
 public class RuleSetDeserializer implements Deserializer<RuleSet>{
 	public static final String BEAN_ID="urule.ruleSetDeserializer";
 	private RuleSetParser ruleSetParser;
-	public RuleSet deserialize(Element root,boolean withPermission) {
-		return ruleSetParser.parse(root,withPermission);
+	public RuleSet deserialize(Element root) {
+		return ruleSetParser.parse(root);
 	}
 	public boolean support(Element root) {
 		if(ruleSetParser.support(root.getName())){

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/ScorecardDeserializer.java

@@ -28,8 +28,8 @@ public class ScorecardDeserializer implements Deserializer<ScorecardDefinition>
 	public static final String BEAN_ID="urule.scorecardDeserializer";
 	private ScorecardParser scorecardParser;
 	@Override
-	public ScorecardDefinition deserialize(Element root,boolean withPermission) {
-		ScorecardDefinition card=scorecardParser.parse(root,withPermission);
+	public ScorecardDefinition deserialize(Element root) {
+		ScorecardDefinition card=scorecardParser.parse(root);
 		return card;
 	}
 	

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/ScriptDecisionTableDeserializer.java

@@ -27,8 +27,8 @@ import com.bstek.urule.parse.table.ScriptDecisionTableParser;
 public class ScriptDecisionTableDeserializer implements Deserializer<ScriptDecisionTable>{
 	public static final String BEAN_ID="urule.scriptDecisionTableDeserializer";
 	private ScriptDecisionTableParser scriptDecisionTableParser;
-	public ScriptDecisionTable deserialize(Element root,boolean withPermission) {
-		return scriptDecisionTableParser.parse(root,withPermission);
+	public ScriptDecisionTable deserialize(Element root) {
+		return scriptDecisionTableParser.parse(root);
 	}
 	public boolean support(Element root) {
 		return scriptDecisionTableParser.support(root.getName());

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/deserializer/VariableLibraryDeserializer.java

@@ -30,8 +30,8 @@ import com.bstek.urule.parse.VariableLibraryParser;
 public class VariableLibraryDeserializer implements Deserializer<List<VariableCategory>>{
 	public static final String BEAN_ID="urule.variableLibraryDeserializer";
 	private VariableLibraryParser variableLibraryParser;
-	public List<VariableCategory> deserialize(Element root,boolean withPermission) {
-		return variableLibraryParser.parse(root,withPermission);
+	public List<VariableCategory> deserialize(Element root) {
+		return variableLibraryParser.parse(root);
 	}
 	public boolean support(Element root) {
 		if(variableLibraryParser.support(root.getName())){

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/ActionNodeParser.java

@@ -24,7 +24,7 @@ import com.bstek.urule.model.flow.ActionNode;
  * @since 2014年12月23日
  */
 public class ActionNodeParser extends FlowNodeParser<ActionNode> {
-	public ActionNode parse(Element element,boolean withPermission) {
+	public ActionNode parse(Element element) {
 		ActionNode action=new ActionNode(element.attributeValue("name"));
 		action.setActionBean(element.attributeValue("action-bean"));
 		action.setEventBean(element.attributeValue("event-bean"));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/DecisionNodeParser.java

@@ -30,7 +30,7 @@ import com.bstek.urule.model.flow.DecisionType;
  * @since 2014年12月23日
  */
 public class DecisionNodeParser extends FlowNodeParser<DecisionNode> {
-	public DecisionNode parse(Element element,boolean withPermission) {
+	public DecisionNode parse(Element element) {
 		DecisionNode decision=new DecisionNode(element.attributeValue("name"));
 		decision.setEventBean(element.attributeValue("event-bean"));
 		String decitionType=element.attributeValue("decision-type");

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/EndNodeParser.java

@@ -24,7 +24,7 @@ import com.bstek.urule.model.flow.EndNode;
  * @since 2014年12月23日
  */
 public class EndNodeParser extends FlowNodeParser<EndNode> {
-	public EndNode parse(Element element,boolean withPermission) {
+	public EndNode parse(Element element) {
 		EndNode end=new EndNode(element.attributeValue("name"));
 		end.setConnections(parseConnections(element));
 		end.setEventBean(element.attributeValue("event-bean"));

+ 2 - 2
urule-core/src/main/java/com/bstek/urule/parse/flow/FlowDefinitionParser.java

@@ -38,7 +38,7 @@ import com.bstek.urule.parse.Parser;
 @SuppressWarnings("rawtypes")
 public class FlowDefinitionParser implements Parser<FlowDefinition>,ApplicationContextAware {
 	private Collection<FlowNodeParser> nodeParsers;
-	public FlowDefinition parse(Element element,boolean withPermission) {
+	public FlowDefinition parse(Element element) {
 		FlowDefinition flow=new FlowDefinition();
 		flow.setId(element.attributeValue("id"));
 		String debug=element.attributeValue("debug");
@@ -63,7 +63,7 @@ public class FlowDefinitionParser implements Parser<FlowDefinition>,ApplicationC
 			}else{
 				for(FlowNodeParser parser:nodeParsers){
 					if(parser.support(ele.getName())){
-						nodes.add((FlowNode)parser.parse(ele,withPermission));
+						nodes.add((FlowNode)parser.parse(ele));
 						break;
 					}
 				}

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/ForkNodeParser.java

@@ -24,7 +24,7 @@ import com.bstek.urule.model.flow.ForkNode;
  * @since 2014年12月23日
  */
 public class ForkNodeParser extends FlowNodeParser<ForkNode> {
-	public ForkNode parse(Element element,boolean withPermission) {
+	public ForkNode parse(Element element) {
 		ForkNode fork=new ForkNode(element.attributeValue("name"));
 		fork.setConnections(parseConnections(element));
 		fork.setEventBean(element.attributeValue("event-bean"));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/JoinNodeParser.java

@@ -24,7 +24,7 @@ import com.bstek.urule.model.flow.JoinNode;
  * @since 2014年12月23日
  */
 public class JoinNodeParser extends FlowNodeParser<JoinNode> {
-	public JoinNode parse(Element element,boolean withPermission) {
+	public JoinNode parse(Element element) {
 		JoinNode join=new JoinNode(element.attributeValue("name"));
 		join.setConnections(parseConnections(element));
 		join.setEventBean(element.attributeValue("event-bean"));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/RuleNodeParser.java

@@ -25,7 +25,7 @@ import com.bstek.urule.model.flow.RuleNode;
  */
 public class RuleNodeParser extends FlowNodeParser<RuleNode> {
 	@Override
-	public RuleNode parse(Element element,boolean withPermission) {
+	public RuleNode parse(Element element) {
 		RuleNode node=new RuleNode(element.attributeValue("name"));
 		node.setFile(element.attributeValue("file"));
 		node.setVersion(element.attributeValue("version"));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/RulePackageNodeParser.java

@@ -25,7 +25,7 @@ import com.bstek.urule.model.flow.RulePackageNode;
  */
 public class RulePackageNodeParser extends FlowNodeParser<RulePackageNode> {
 	@Override
-	public RulePackageNode parse(Element element,boolean withPermission) {
+	public RulePackageNode parse(Element element) {
 		RulePackageNode node=new RulePackageNode(element.attributeValue("name"));
 		node.setConnections(parseConnections(element));
 		node.setProject(element.attributeValue("project"));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/ScriptNodeParser.java

@@ -25,7 +25,7 @@ import com.bstek.urule.model.flow.ScriptNode;
  */
 public class ScriptNodeParser extends FlowNodeParser<ScriptNode> {
 	@Override
-	public ScriptNode parse(Element element,boolean withPermission) {
+	public ScriptNode parse(Element element) {
 		ScriptNode node =new ScriptNode();
 		node.setName(element.attributeValue("name"));
 		node.setEventBean(element.attributeValue("event-bean"));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/flow/StartNodeParser.java

@@ -24,7 +24,7 @@ import com.bstek.urule.model.flow.StartNode;
  * @since 2014年12月23日
  */
 public class StartNodeParser extends FlowNodeParser<StartNode> {
-	public StartNode parse(Element element,boolean withPermission) {
+	public StartNode parse(Element element) {
 		StartNode start=new StartNode(element.attributeValue("name"));
 		start.setConnections(parseConnections(element));
 		start.setEventBean(element.attributeValue("event-bean"));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/scorecard/AttributeRowParser.java

@@ -30,7 +30,7 @@ import com.bstek.urule.parse.Parser;
  */
 public class AttributeRowParser implements Parser<AttributeRow> {
 	@Override
-	public AttributeRow parse(Element element,boolean withPermission) {
+	public AttributeRow parse(Element element) {
 		AttributeRow row=new AttributeRow();
 		row.setRowNumber(Integer.valueOf(element.attributeValue("row-number")));
 		List<ConditionRow> rows=new ArrayList<ConditionRow>();

+ 3 - 3
urule-core/src/main/java/com/bstek/urule/parse/scorecard/CardCellParser.java

@@ -33,7 +33,7 @@ public class CardCellParser implements Parser<CardCell> {
 	private ValueParser valueParser;
 	private JointParser jointParser;
 	@Override
-	public CardCell parse(Element element,boolean withPermission) {
+	public CardCell parse(Element element) {
 		CardCell cell=new CardCell();
 		cell.setType(CellType.valueOf(element.attributeValue("type")));
 		cell.setCol(Integer.valueOf(element.attributeValue("col")));
@@ -51,9 +51,9 @@ public class CardCellParser implements Parser<CardCell> {
 			}
 			Element ele=(Element)obj;
 			if(valueParser.support(ele.getName())){
-				cell.setValue(valueParser.parse(ele,withPermission));
+				cell.setValue(valueParser.parse(ele));
 			}else if(jointParser.support(ele.getName())){
-				cell.setJoint(jointParser.parse(ele,withPermission));
+				cell.setJoint(jointParser.parse(ele));
 			}
 		}
 		return cell;

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/scorecard/CustomColParser.java

@@ -26,7 +26,7 @@ import com.bstek.urule.parse.Parser;
  */
 public class CustomColParser implements Parser<CustomCol> {
 	@Override
-	public CustomCol parse(Element element,boolean withPermission) {
+	public CustomCol parse(Element element) {
 		CustomCol col=new CustomCol();
 		col.setColNumber(Integer.parseInt(element.attributeValue("col-number")));
 		col.setName(element.attributeValue("name"));

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/scorecard/ScorecardParser.java

@@ -52,7 +52,7 @@ public class ScorecardParser implements Parser<ScorecardDefinition> {
 	private CustomColParser customColParser=new CustomColParser();
 	private RulesRebuilder rulesRebuilder;
 	@Override
-	public ScorecardDefinition parse(Element element,boolean withPermission) {
+	public ScorecardDefinition parse(Element element) {
 		ScorecardDefinition card=new ScorecardDefinition();
 		card.setName(element.attributeValue("name"));
 		card.setScoringType(ScoringType.valueOf(element.attributeValue("scoring-type")));
@@ -124,11 +124,11 @@ public class ScorecardParser implements Parser<ScorecardDefinition> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(cardCellParser.support(name)){
-				cells.add(cardCellParser.parse(ele,withPermission));
+				cells.add(cardCellParser.parse(ele));
 			}else if(attributeRowParser.support(name)){
-				rows.add(attributeRowParser.parse(ele,withPermission));
+				rows.add(attributeRowParser.parse(ele));
 			}else if(customColParser.support(name)){
-				cols.add(customColParser.parse(ele,withPermission));
+				cols.add(customColParser.parse(ele));
 			}else if(name.equals("import-variable-library")){
 				card.addLibrary(new Library(ele.attributeValue("path"),null,LibraryType.Variable));
 			}else if(name.equals("import-constant-library")){

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/table/CellParser.java

@@ -35,7 +35,7 @@ public class CellParser implements Parser<Cell>,ApplicationContextAware {
 	private JointParser jointParser;
 	private ValueParser valueParser;
 	private Collection<ActionParser> actionParsers;
-	public Cell parse(Element element,boolean withPermission) {
+	public Cell parse(Element element) {
 		Cell cell=new Cell();
 		cell.setRow(Integer.valueOf(element.attributeValue("row")));
 		cell.setCol(Integer.valueOf(element.attributeValue("col")));
@@ -47,13 +47,13 @@ public class CellParser implements Parser<Cell>,ApplicationContextAware {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(jointParser.support(name)){
-				cell.setJoint(jointParser.parse(ele,withPermission));
+				cell.setJoint(jointParser.parse(ele));
 			}else if(valueParser.support(name)){
-				cell.setValue(valueParser.parse(ele,withPermission));
+				cell.setValue(valueParser.parse(ele));
 			}else{
 				for(ActionParser parser:actionParsers){
 					if(parser.support(name)){
-						cell.setAction(parser.parse(ele,withPermission));
+						cell.setAction(parser.parse(ele));
 						break;
 					}
 				}

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/table/ColumnParser.java

@@ -28,7 +28,7 @@ import com.bstek.urule.parse.Parser;
  * @since 2015年1月19日
  */
 public class ColumnParser implements Parser<Column> {
-	public Column parse(Element element,boolean withPermission) {
+	public Column parse(Element element) {
 		Column col=new Column();
 		col.setNum(Integer.valueOf(element.attributeValue("num")));
 		col.setType(ColumnType.valueOf(element.attributeValue("type")));

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/table/DecisionTableParser.java

@@ -47,7 +47,7 @@ public class DecisionTableParser implements Parser<DecisionTable> {
 	private ColumnParser columnParser;
 	private CellParser cellParser;
 	private RulesRebuilder rulesRebuilder;
-	public DecisionTable parse(Element element,boolean withPermission) {
+	public DecisionTable parse(Element element) {
 		DecisionTable table =new DecisionTable();
 		String salience=element.attributeValue("salience");
 		if(StringUtils.isNotEmpty(salience)){
@@ -85,11 +85,11 @@ public class DecisionTableParser implements Parser<DecisionTable> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(rowParser.support(name)){
-				table.addRow(rowParser.parse(ele,withPermission));
+				table.addRow(rowParser.parse(ele));
 			}else if(columnParser.support(name)){
-				table.addColumn(columnParser.parse(ele,withPermission));
+				table.addColumn(columnParser.parse(ele));
 			}else if(cellParser.support(name)){
-				table.addCell(cellParser.parse(ele,withPermission));
+				table.addCell(cellParser.parse(ele));
 			}if(name.equals("import-variable-library")){
 				table.addLibrary(new Library(ele.attributeValue("path"),null,LibraryType.Variable));
 			}else if(name.equals("import-constant-library")){

+ 5 - 5
urule-core/src/main/java/com/bstek/urule/parse/table/JointParser.java

@@ -30,7 +30,7 @@ import com.bstek.urule.parse.ValueParser;
  */
 public class JointParser implements Parser<Joint> {
 	private ValueParser valueParser;
-	public Joint parse(Element element,boolean withPermission) {
+	public Joint parse(Element element) {
 		Joint joint=new Joint();
 		joint.setType(JointType.valueOf(element.attributeValue("type")));
 		for(Object obj:element.elements()){
@@ -39,14 +39,14 @@ public class JointParser implements Parser<Joint> {
 			}
 			Element ele=(Element)obj;
 			if(ele.getName().equals("condition")){
-				joint.addCondition(parseCondition(ele,withPermission));
+				joint.addCondition(parseCondition(ele));
 			}else if(support(ele.getName())){
-				joint.addJoint(parse(ele,withPermission));
+				joint.addJoint(parse(ele));
 			}
 		}
 		return joint;
 	}
-	public Condition parseCondition(Element element,boolean withPermission) {
+	public Condition parseCondition(Element element) {
 		Condition condition=new Condition();
 		condition.setOp(Op.valueOf(element.attributeValue("op")));
 		for(Object obj:element.elements()){
@@ -55,7 +55,7 @@ public class JointParser implements Parser<Joint> {
 			}
 			Element ele=(Element)obj;
 			if(valueParser.support(ele.getName())){
-				condition.setValue(valueParser.parse(ele,withPermission));
+				condition.setValue(valueParser.parse(ele));
 				break;
 			}
 		}

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/table/RowParser.java

@@ -25,7 +25,7 @@ import com.bstek.urule.parse.Parser;
  * @since 2015年1月19日
  */
 public class RowParser implements Parser<Row> {
-	public Row parse(Element element,boolean withPermission) {
+	public Row parse(Element element) {
 		Row row=new Row();
 		row.setHeight(Integer.valueOf(element.attributeValue("height")));
 		row.setNum(Integer.valueOf(element.attributeValue("num")));

+ 1 - 1
urule-core/src/main/java/com/bstek/urule/parse/table/ScriptCellParser.java

@@ -25,7 +25,7 @@ import com.bstek.urule.parse.Parser;
  * @since 2015年1月19日
  */
 public class ScriptCellParser implements Parser<ScriptCell>{
-	public ScriptCell parse(Element element,boolean withPermission) {
+	public ScriptCell parse(Element element) {
 		ScriptCell cell=new ScriptCell();
 		cell.setRow(Integer.valueOf(element.attributeValue("row")));
 		cell.setCol(Integer.valueOf(element.attributeValue("col")));

+ 4 - 4
urule-core/src/main/java/com/bstek/urule/parse/table/ScriptDecisionTableParser.java

@@ -30,7 +30,7 @@ public class ScriptDecisionTableParser implements Parser<ScriptDecisionTable> {
 	private RowParser rowParser;
 	private ColumnParser columnParser;
 	private ScriptCellParser scriptCellParser;
-	public ScriptDecisionTable parse(Element element,boolean withPermission) {
+	public ScriptDecisionTable parse(Element element) {
 		ScriptDecisionTable table =new ScriptDecisionTable();
 		for(Object obj:element.elements()){
 			if(obj==null || !(obj instanceof Element)){
@@ -39,11 +39,11 @@ public class ScriptDecisionTableParser implements Parser<ScriptDecisionTable> {
 			Element ele=(Element)obj;
 			String name=ele.getName();
 			if(rowParser.support(name)){
-				table.addRow(rowParser.parse(ele,withPermission));
+				table.addRow(rowParser.parse(ele));
 			}else if(columnParser.support(name)){
-				table.addColumn(columnParser.parse(ele,withPermission));
+				table.addColumn(columnParser.parse(ele));
 			}else if(scriptCellParser.support(name)){
-				table.addCell(scriptCellParser.parse(ele,withPermission));
+				table.addCell(scriptCellParser.parse(ele));
 			}if(name.equals("import-variable-library")){
 				table.addLibrary(new Library(ele.attributeValue("path"),null,LibraryType.Variable));
 			}else if(name.equals("import-constant-library")){

+ 0 - 1
urule-core/src/main/java/com/bstek/urule/runtime/service/KnowledgePackageService.java

@@ -26,5 +26,4 @@ import com.bstek.urule.runtime.KnowledgePackage;
 public interface KnowledgePackageService {
 	public static final String BEAN_ID="urule.knowledgePackageService";
 	KnowledgePackage buildKnowledgePackage(String packageInfo) throws IOException;
-	KnowledgePackage buildKnowledgePackage(String packageInfo,boolean withPermission) throws IOException;
 }