content: //package com.us.drools.util;
  //
  ///**
  // * Created by yangyibo on 16/12/8.
  // */
  //import java.io.File;
  //import java.io.IOException;
  //import java.util.ArrayList;
  //import java.util.List;
  //
  //import com.us.drools.bean.ResourceWrapper;
  //import org.drools.compiler.kie.builder.impl.InternalKieModule;
  //import org.kie.api.KieServices;
  //import org.kie.api.builder.KieBuilder;
  //import org.kie.api.builder.KieFileSystem;
  //import org.kie.api.builder.ReleaseId;
  //import org.kie.api.builder.model.KieBaseModel;
  //import org.kie.api.builder.model.KieModuleModel;
  //import org.kie.api.builder.model.KieSessionModel;
  //import org.kie.api.conf.EqualityBehaviorOption;
  //import org.kie.api.conf.EventProcessingOption;
  //import org.kie.internal.io.ResourceFactory;
  //
  ///**
  // * 动态生成kjar工具类
  // * @author caicongyang1
  // * @version id: DroolsUtils, v 0.1 16/10/26 下午1:58 caicongyang1 Exp $$
  // */
  //public class DroolsUtils {
  //
  //    /**
  //     * 默认规则文件所在路径
  //     */
  //    private static final String RULES_PATH = "rules";
  //
  //    /**
  //     * 获取规定目录下的规则文件
  //     *
  //     * @return
  //     * @throws IOException
  //     */
  //    private static List<File> getRuleFiles() throws IOException {
  //        List<File> list = new ArrayList<File>();
  //        String filePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
  //        File rootDir = new File(filePath);
  //        File[] files = rootDir.listFiles();
  //        for (File itemFile : files) {
  //            if (itemFile.isDirectory() && itemFile.getName().equals(RULES_PATH)) {
  //                for (File f : itemFile.listFiles()) {
  //                    if (f.getName().endsWith(".drl")) {
  //                        list.add(f);
  //                    }
  //                }
  //            }
  //        }
  //        return list;
  //    }
  //
  //    /**
  //     * 初始化一个kjar：把原有的drl包含进新建的kjar中
  //     *
  //     * @param ks
  //     * @param releaseId
  //     * @return
  //     * @throws IOException
  //     */
  //    public static InternalKieModule initKieJar(KieServices ks, ReleaseId releaseId) throws IOException {
  //        KieFileSystem kfs = createKieFileSystemWithKProject(ks, true);
  //        kfs.writePomXML(getPom(releaseId));
  //        for (File file : getRuleFiles()) {
  //            kfs.write("src/main/resources/" + file.getName(),
  //                    ResourceFactory.newClassPathResource(RULES_PATH + File.separator + file.getName(), "UTF-8"));
  //        }
  //        KieBuilder kieBuilder = ks.newKieBuilder(kfs);
  //        if (!kieBuilder.buildAll().getResults().getMessages().isEmpty()) {
  //            throw new IllegalStateException("Error creating KieBuilder.");
  //        }
  //        return (InternalKieModule) kieBuilder.getKieModule();
  //    }
  //
  //    public static InternalKieModule createKieJar(KieServices ks, ReleaseId releaseId, ResourceWrapper resourceWrapper) {
  //        KieFileSystem kfs = createKieFileSystemWithKProject(ks, true);
  //        kfs.writePomXML(getPom(releaseId));
  //        kfs.write("src/main/resources/" + resourceWrapper.getTargetResourceName(), resourceWrapper.getResource());
  //        KieBuilder kieBuilder = ks.newKieBuilder(kfs);
  //        if (!kieBuilder.getResults().getMessages().isEmpty()) {
  //            System.out.println(kieBuilder.getResults().getMessages());
  //            throw new IllegalStateException("Error creating KieBuilder.");
  //        }
  //        return (InternalKieModule) kieBuilder.getKieModule();
  //    }
  //
  //    /**
  //     * 创建默认的kbase和stateful的kiesession
  //     *
  //     * @param ks
  //     * @param isdefault
  //     * @return
  //     */
  //    public static KieFileSystem createKieFileSystemWithKProject(KieServices ks, boolean isdefault) {
  //        KieModuleModel kproj = ks.newKieModuleModel();
  //        KieBaseModel kieBaseModel1 = kproj.newKieBaseModel("KBase").setDefault(isdefault)
  //                .setEqualsBehavior(EqualityBehaviorOption.EQUALITY).setEventProcessingMode(EventProcessingOption.STREAM);
  //        // Configure the KieSession.
  //        kieBaseModel1.newKieSessionModel("KSession").setDefault(isdefault)
  //                .setType(KieSessionModel.KieSessionType.STATEFUL);
  //        KieFileSystem kfs = ks.newKieFileSystem();
  //        kfs.writeKModuleXML(kproj.toXML());
  //        return kfs;
  //    }
  //
  //    /**
  //     * 创建kjar的pom
  //     *
  //     * @param releaseId
  //     * @param dependencies
  //     * @return
  //     */
  //    public static String getPom(ReleaseId releaseId, ReleaseId... dependencies) {
  //        String pom = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
  //                + "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
  //                + "         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n"
  //                + "  <modelVersion>4.0.0</modelVersion>\n" + "\n" + "  <groupId>" + releaseId.getGroupId()
  //                + "</groupId>\n" + "  <artifactId>" + releaseId.getArtifactId() + "</artifactId>\n" + "  <version>"
  //                + releaseId.getVersion() + "</version>\n" + "\n";
  //        if (dependencies != null && dependencies.length > 0) {
  //            pom += "<dependencies>\n";
  //            for (ReleaseId dep : dependencies) {
  //                pom += "<dependency>\n";
  //                pom += "  <groupId>" + dep.getGroupId() + "</groupId>\n";
  //                pom += "  <artifactId>" + dep.getArtifactId() + "</artifactId>\n";
  //                pom += "  <version>" + dep.getVersion() + "</version>\n";
  //                pom += "</dependency>\n";
  //            }
  //            pom += "</dependencies>\n";
  //        }
  //        pom += "</project>";
  //        return pom;
  //    }
  //}