在实际的开发过程中,往往对规则引擎的使用方式是:通过规则引擎配置规则,然后使用不同的开发语言来调用规则,下面我说一说Java和.Net是如何来调用规则包的
Java调用规则
Java调用规则有3种方式
1:Java类调用规则包
首先在eclipse的java工程中,点击属性设置其路径。在其属性窗口的Java Build Path中设置Libraries,通过Add External JARs…加入VisualRules安装目录的lib下的engine.jar、jakarta.jar,在通过Add External Class Folder…加入VisualRules安装目录下的rules目录。如下所示:
添加Java测试类
在java工程中添加一个java类,名为TestHello.java,其内容编辑如下:
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineFactory;
public class TestHello {
public static void main(String[] args) {
try {
RuleEngine engine = RuleEngineFactory.newInstance().getRuleEngine();
engine.put("name", "访问测试");
engine.excute("hello");// 或engine.excute("hello.rsc"); hello或hello.rsc为它在导入的rules下的路径
System.out.println(engine.getString("welcome"));
} catch (Exception e) {
e.printStackTrace() ;
}
}
}
执行java测试类
点击执行后,可以看到如下结果:
说明已经调用了hello规则包,并且根据传入的name值“访问测试”,返回处理结果是 hello+“访问测试”。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
2:Java类通过规则服务调用
首先需要查看服务器的Rule Engine Server服务是否开启,为了能够正常启动Rule Engine Server,首先需要设置Java路径:
设置JAVA_HOME变量
在windows环境中,设置系统的环境变量,添加一个JAVA_HOME变量,将其设置为VisualRules安装目录下的jre目录。
如果已经安装了JDK,则可以设置为JDK的安装目录。
启动Rule Engine Server
在系统的服务中启动Rule Engine Server服务:
设置java工程路径
首先在eclipse的java工程中,点击属性设置其路径。在其属性窗口的Java Build Path中设置Libraries,通过Add External JARs…加入VisualRules安装目录的lib下的json-lib-2.3-jdk1.3.jar以及jdom.jar。如下所示:
添加Java测试类
在java工程中添加一个java类,名为HelloServer.java,其内容编辑如下:
import com.flagleader.engine.RuleService;
import com.flagleader.engine.impl.RuleServerPoolFactory;
public class HelloServer {
public static void main(String[] args) {
try {
RuleServerPoolFactory factory = RuleServerPoolFactory.getFactory("localhost", 1508) ;
RuleService service = factory.getRuleService() ;
service.put("name","测试通讯");
service.execute("hello") ;
System.out.println(service.getString("welcome")) ;
} catch (Exception e) {
e.printStackTrace() ;
}
}
}
执行java测试类
点击执行后,可以看到如下结果:
说明已经调用了hello规则包,并且根据传入的name值“访问测试”,返回处理结果是 hello+“测试通讯”。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
3:Java类通过SOAP调用
首先需要查看服务器的Apache Tomcat rules服务是否开启,同时需要保证缺省安装的Tomcat工程下面有个soap的工程:
注意要将生成在VisualRules的安装目录的rules目录下的hello.rsc复制到tomcat的webapps\soap\WEB-INFO\classes目录下,这样可以保证规则包可以通过axis访问。
启动Rule Engine Server
在系统的服务中启动Apache Tomcat rules服务:
设置java工程路径
首先在eclipse的java工程中,点击属性设置其路径。在其属性窗口的Java Build Path中设置Libraries,通过Add External JARs…加入VisualRules安装目录的lib下的json-lib-2.3-jdk1.3.jar、jdom.jar、axis.jar、commons-discovery-0.2.jar、commons-logging.jar、jaxrpc.jar、mail.jar、saaj.jar、wsdl4j-1.5.1.jar、xerces.jar、xml-apis.jar。如下所示:
添加Java测试类
在java工程中添加一个java类,名为HelloSoap.java,其内容编辑如下:
import com.flagleader.engine.RuleService;
import com.flagleader.engine.impl.RuleSoapFactory;
public class HelloSoap {
public static void main(String[] args) {
try {
RuleSoapFactory factory = new
RuleSoapFactory("http://localhost:8880/soap/services/RuleSoap","") ;
RuleService service = factory.getRuleService() ;
service.put("name","测试通讯");
service.execute("hello") ;
System.out.println(service.getString("welcome")) ;
} catch (Exception e) {
e.printStackTrace() ;
}
}
}
执行java测试类
点击执行后,可以看到如下结果:
说明已经调用了hello规则包,并且根据传入的name值“访问测试”,返回处理结果是 hello+“测试通讯”。
.Net调用规则
.net调用规则目前只有一种方式
<!--StartFragment -->
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RuleEngine;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
RuleServerPoolFactory factory = RuleServerPoolFactory.getFactory("127.0.0.1",1508);
RuleService service = factory.RuleService;
service.put("name","测试访问");
service.execute("hello");
Console.WriteLine(service.getString("welcome"));
Console.Read();
}
}
}
相关推荐
如何用.net调用java或net写的webservice(遵循wsdl规则
动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...
顺丰、EMS 单号算法 delphi 写的,里面部分变量可能是...算法与http://download.csdn.net/detail/jnwz159/2695670是一样的,应一位网友的要求"翻译"成了java版,内部没做优化,原先的需要自己改动的地方仍需自己优化
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
钉钉 Java SDK 钉钉官方提供了统一的SDK,使用SDK可以便捷的调用服务端API。注意:此SDK包含原有...(2).NET SDK 需要依赖 .NET Framework 2.0及以上 (不支持Windows Phone平台)。 (3)Python SDK需要依赖python2
1、eclipse安装groovy的插件。 2、创建java project。 3、把groovy-all-2.1.9.jar,加入...4、编写hello.groovy脚本文件,并在java代码中调用脚本文件 http://blog.csdn.net/bolg_hero/article/details/19077981
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 ) I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( Find...
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...
.NET平台将 C#作为其固有语言,重温了许多Java的技术规则。C#中也有一个虚拟机,叫做公用语言运行环境(CLR),它的对象也具有同样的层次。但是 C#的设计意图是要使用全部的Win32 API甚至更多。由于C#与 Windows的体系...
RPA,做过几个rpa项目,罗列总结自己常用得一些 uipath和vba常用方法 ...RPA机器人如同人类一样能够操作各种IT应用程序,如浏览器、Office软件、Java/.net等语言编写的程序、ERP软件(SAP/Oracle)等等
无论是Web调用还是智能设备APP调用,只要约定好参数形式和规则就能够协同开发。返回值用得最多的就是JSON形式。服务端除了保证正常的业务功能,还要经常对传进来的参数进行验证,例如某些参数不能为空,字符串必须...
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要...
XmlSerializer 在程序中通过单个 API 调用来执行 XML 文档和对象之间的转换。转换的映射规则在 .NET 类中通过元数据属性来表示。这一编程模型带有自己的错误类别,开发人员需要了解如何诊断这些错误。例如,元数据...
import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; import javax.swing.JFrame; import javax.swing.JOptionPane; /*...
控制模型将信息模型、机构摩型和框架模型有机的结合在一起,它根据其中定义的业务规则来流转业务流程,控制模型是工作引擎的控制中心。图1是基于工作引擎的信息系统通用框架的结构图。 任务管理主要根据调度中心的...
c#学习笔记(1) ...(Microsoft后来在完全面向.NET框架的开发语言集中加入了Visual J#.NET,算是对Java语言用户的一种照顾。) 有人说,选择C#意味着选择MS(在中国的程序员当中,这并不是件值得自豪的事...
•java.net.* , •java.io.*, •java.text.*, •java.sql.*, •java.awt.*, •java.swing.*. 使用构造器执行初始化 •构造器最大的用处就是在创建对象时执行初始化,系统会默认的进行初始化。 •如果...
1、支持地图种类繁多:几乎包含所有主流在线地图,包括不仅限于谷歌、百度、高德、四维、微软、诺基亚、天地图、腾讯、ArcGIS、雅虎等地图,每... 19、Windows原生语言开发,比Java/.NET等语言开发的程序效率高几倍。