皮皮网

【通用题库易语言源码】【dede网易源码】【修罗论坛源码】drools源码

时间:2024-12-26 23:35:39 分类:娱乐 来源:烟溯源码烧了

1.Java学习资源
2.Drools规则引擎
3.Google Aviator——轻量级 Java 表达式引擎实战
4.关于DROOLS规则引擎的源码图书那里有卖的,急需啊!

drools源码

Java学习资源

       Java Commons

       Java tutorial

       WebService常用第三方webservice

       IDEEclipse

       Eclipse GUI Plugin

       Eclipse根据java代码生成UML图

       Tomcat

       Hudson

       Jenkins

       Atlassian Bamboo

       TeamCity

       JUnit

       DbUnit

       JMockit

       TestNG

       ReportNG

       SLF4J

       Log4j

       Logback

       Log4E代码评审

       guava

       jga

       Java Class Dependency Analyzer

       OW2Forge

       Rock

       apache

       Apache Commons

       sandbox中的项目无法直接通过maven进行依赖,必须通过svn下载源码,源码部署到本地maven仓库中。源码例如对于sandbox中的源码classscan项目:

       # 项目地址:commons.apache.org/sand...

       svn checkout mons/sandbox/classscan classscan

       cd classscan

       当install带有parent的maven项目时,如果没有把parent一并install,源码其它项目引用时会出现

       mvn install--Failed to read artifact descriptor for org.apache.maven.plugins:maven-source-plugin:jar:2.1.2

       cd parent (classscan/parent)

       mvn clean package install -DskipTests

       cd ../api (classscan/api)

       mvn clean package install -DskipTests

       cd ../bcel (classscan/bcel)

       mvn clean package install -DskipTests

       在pom.xml中添加依赖

       org.apache.commons.classscan bcel 0.2-SNAPSHOT org.apache.commons.classscan api 0.2-SNAPSHOT

       Eclipse中Update Project,选择Force Update of Snapshots/Releases

       Apache HttpComponents

       Maven and M2Eclipse

       maven快速下载某个jar包依赖的源码通用题库易语言源码所有jar

       经常碰到这种事情:在一些非maven工程中(由于某种原因这种工程还是手工添加依赖的),需要用到某个新的类库(假设这个类库发布在maven库中),而这个类库又间接依赖很多其他类库,如果依赖路径非常复杂的话,一个个检查手动下载是很麻烦的事。下面给出一个便捷的源码办法,创建一个新目录里面建一个maven pom文件,源码 添加需要依赖的类库:

       4.0.0 com.dep.download dep-download 1.0-SNAPSHOT com.xx.xxx yy-yyy x.y.z

       在这个目录下运行命令,所有跟这个类库相关的源码直接和间接依赖的jar包都会下载到 ./target/dependency/下

       杂项

       间接依赖的jar包能否直接使用

       如果工程依赖A.jar,并用maven设置好依赖,源码同时A.jar会依赖B.jar,源码所以maven在下载A.jar的源码同时会下载B.jar,这时如果项目发现需要使用B.jar中的源码一些内容,在maven中不必从新设置依赖,源码可以在工程中直接使用。源码

       把某个本地jar包安装到本地仓库中

       mvn install:install-file -DgroupId=“edu.jiangxin” -DartifactId=”gcu” -Dversion=“1.0.0”

       -Dpackaging=”jar” -Dfile=“D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar”

       把某个本地jar包部署到某个远程仓库中

       mvn deploy:deploy-file -DgroupId=“edu.jiangxin” -DartifactId=”gcu” -Dversion=“1.0.0”

       -Dpackaging=”jar” -Dfile=“D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar” -Durl= yourlocalrepository:...

       -DrepositoryId=internal

       bintray

        bintray.com/

       Ant

       Eclipse Color Themes

       MyEclipse

       EclEmma

       eCobertura

       JavaNCSS

       Clover(收费)

       CAP (code analysis plugin)

       Visual Performance Analyzer

       VisualVM

       JD(Java Decompiler)

       注:不支持命令行使用,因而很难批量编译。dede网易源码

       jad

       注:jad支持命令行方式使用,最新版本为1.5.8g,支持的class版本过低。经常出现问题:The class file version is .0 (only .3, .0 and .0 are supported)。还有一个工具uuDeJava,也是基于jad,所以估计也难以避免这个问题。

       jdec

       JODED

       J Java Decompiler

       注:收费软件,没有试用过

       ProGuard

       FindBugs

       PMD

       Metric

       Jdepend

       SourceHelper

       Structure

       inFusion

       SourceMonitor

       Simian

       CheckStyle

       CCTE

       J-Technologies一家(收费)

       FORTIFY SCA(收费)

       coverity(收费)

       klocwork(收费)

       GProf

       Dot and Graphviz

       sikuli

       exe4j

       JBoss

       GlassFish

       Virgo

       Jetty

       cpDetector

       EZMorph

       Apache Shiro

       Struts

       Spring

       Hibernate

       iBATIS/MyBatis

       appfuse

       TopLink

       json

       neethi

       XML

       SAXON

       jsoup

       HTML Parser

       Java port of Mozilla charset detector(jchardet)

       JMX

       jsch

       * yFiles

       The yFiles diagramming software components are extensive class libraries that enable you to add high-quality diagramming functionality to your own software applications

       OpenLDAP

       Protobuf

       zip4j

       JFlex

       JavaCC

       sablecc

       Xtext

       antlr

       cglib

       javassist

       jclasslib

       ical4j

       分词规则引擎

       Drools

       jBPM

       OpenAS2

       Java Native Access (JNA)

       mpi

       Java

       eBus

       JACOBA

       Apache POI - the Java API for Microsoft Documents

       iText(AGPL)

       aspose

       MVEL(Drools)

       OGNL(Struts)

       SPEL(Spring)

       JSP EL

       freemarker

       Velocity

       Aurora

Drools规则引擎

       规则引擎,全称为业务规则管理系统,主要思想是将业务决策分离出来,使用预定义语义模板编写,实现决策逻辑的灵活配置与管理。规则引擎从推理引擎发展而来,将业务决策从应用程序代码中分离,接受数据输入,修罗论坛源码解释规则,并根据规则做出决策。多数规则引擎支持规则顺序与冲突检测,集成脚本语言与通用开发语言接口。

       业内存在多种规则引擎,包括开源与商业选项。开源代表如Drools,商业代表包括Visual Rules和iLog等。市面上规则引擎产品主要有Drools、VisualRules和iLog等。

       Drools是一款基于Java语言的开源规则引擎,提供将复杂业务规则以脚本形式存储的能力,无需修改代码或重启服务器即可在线生效。其具有访问策略便捷、调整和管理简单,符合行业标准,kafka manager 源码速度快、效率高的特点。业务分析师或审核人员可轻松查看规则,确保编码规则执行所需业务逻辑。Drools的前身是Codehaus的开源项目Drools,后被整合进JBoss应用服务器,更名JBoss Rules。

       Drools遵循RETE算法实现,为Java量身定制,具备面向对象接口,使得商业规则表达自然。官网为drools.org,中文网为Drools中文网。Drools源码可从GitHub下载。

       Drools主要由规则与规则执行两部分构成。规则通过Drools提供的传奇脚本 源码API编译、收集和执行。API大致分为三类:规则编译、规则收集和规则执行。Drools作为BRMS解决方案,涉及规则文件、规则基础、规则会话与实体类的创建。

       当前Drools最新版本为7.0.0.Final,未来版本迭代加速。从Drools6.x到7版本,发生重大变化。Drools7新功能包括规则引擎优化、性能提升与功能扩展。

       在项目中使用Drools,既可独立使用也可与Spring整合。独立使用仅需导入Maven依赖。配置文件通常为resources/META-INF/kmodule.xml,定义规则基础、规则会话与实体类。

       规则引擎在项目中通过规则文件定义业务逻辑,如案例中定义企业风险类别与分数计算。通过Drools API将数据传入,规则引擎匹配规则并返回结果。使用规则引擎的优势在于动态管理规则,业务人员可以像管理数据一样调整规则,无需重启服务。

Google Aviator——轻量级 Java 表达式引擎实战

       本文将探讨Google Aviator——一款轻量级Java表达式引擎,其在实战中的表现和与其他常用表达式引擎如Drools、IKExpression和Groovy的对比。Drools以其高性能和Java实现闻名,但主要关注复杂对象的规则匹配,而Aviator则定位在轻量级和高性能之间,编译执行模式提供更好的性能。IKExpression作为解释执行的引擎,虽然简洁,但在性能上不如Aviator和Groovy。Groovy凭借动态执行和JIT编译,适用于频繁执行的场景。

       在实际场景中,比如监控告警规则配置,Aviator能快速将规则转化为表达式并执行,如示例所示:

       通过自定义函数实现,只需继承AbstractAlertFunction,如源码所示,并在初始化时注册。对于性能问题,推荐使用编译缓存模式,以减少每次执行时的编译成本。

       Aviator的性能优化和管理可以通过其提供的缓存管理方法来实现。对于更深入的技术探讨和参考,可以参考作者的个人博客和相关文档。

关于DROOLS规则引擎的图书那里有卖的,急需啊!

       InfoQ发布了一个关于规则引擎的介绍Real-World Rule Engines,原文 /articles/Rule-Engines

       ONJava上也有两篇文章:

       Give Your Business Logic a Framework with Drools /lpt/a/

       Using Drools in Your Enterprise Java Application /lpt/a/

       下面总结一下其中的精华:

       大多数web和企业Java应用可以分成三个部分:一个和用户交互的前台, 一个和后台系统,例如数据库交互的服务层,以及他们中间的业务逻辑。 现在使用框架构建前台和后台系统已经成为普遍共识(例如, Struts, Cocoon, Spring, Hibernate, JDO, 和 Entity Beans), 但却没有一个标准的方法来构建业务逻辑。一些框架,例如 EJB 和 Spring 只在一个高层实现业务逻辑,但对于我们组织逻辑代码没有任何帮助,所以,为什么没有一个框架来替换冗繁,易错的if...then语句呢,这个框架应该和其它前台或后台框架一样,易于配置,具有可读性和重用性。下面我们将介绍Drools 规则引擎,这个来解决我们问题的框架。

       下面是一个典型的Java业务逻辑的代码

       if ((user.isMemberOf(AdministratorGroup)

       && user.isMemberOf(teleworkerGroup))

       || user.isSuperUser(){

       // more checks for specific cases

       if((expenseRequest.code().equals("B")

       ||(expenseRequest.code().equals("A")

       &&(totalExpenses<)

       &&(bossSignOff> totalExpenses))

       &&(deptBudget.notExceeded)) {

       //issue payments

       } else if {

       //check lots of other conditions

       }

       } else {

       // even more business logic

       }

       这是大多数程序员写业务逻辑的方法,但是有以下的问题:

       如果用户有另一个选项,例如("C") ,那么需要修改上面的代码,当代码很长的时候,修改代码是难于维护的

       我们如何保证代码的正确性,这个代码只有程序员能够看到,真正的使用者,业务人员无法看到这个代码

       很多应用程序有相同的业务逻辑,如果某个业务改变了,如何保证其他业务逻辑的一致性

       业务逻辑能否不合java语言绑定?

       业务逻辑能否用其他的脚本语言。

       Java下的规则引擎标准就是JSR,它的实现主要有Jess Jena Drools

       Drools中,一个典型的业务逻辑的配置,如下

       <?xml version="1.0"?>

       <rule-set name="BusinessRulesSample"

       xmlns="mendPurchase());

       }

       </java:functions>

       <rule-set>

       <!-- Ensure stock price is not too high-->

       <rule name="Stock Price Low Enough">

       <!-- Params to pass to business rule -->

       <parameter identifier="stockOffer">

       <class>StockOffer</class>

       </parameter>

       <!-- Conditions or 'Left Hand Side'

       (LHS) that must be met for

       business rule to fire -->

       <!-- note markup -->

       <java:condition>

       stockOffer.getRecommendPurchase() == null

       </java:condition>

       <java:condition>

       stockOffer.getStockPrice() <

       </java:condition>

       <!-- What happens when the business

       rule is activated -->

       <java:consequence>

       stockOffer.setRecommendPurchase(

       StockOffer.YES);

       printStock(stockOffer);

       </java:consequence>

       </rule>

       </rule-set>

       一条规则就是rule-set中的rule,如果有很多规则,就要写很多的rule。

       上面规则的意思是判断股票价格是否小于,如果这个标准改变了,那么只要修改这个规则文件,而不用去修改源代码了

copyright © 2016 powered by 皮皮网   sitemap