在实际的开发过程中,往往对规则引擎的使用方式是:通过规则引擎配置规则,然后使用不同的开发语言来调用规则,下面我说一说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();
}
}
}
相关推荐
【Java与.NET的相互调用】 在当前的IT行业中,Java和.NET是两种主流的开发平台,它们各自拥有强大的生态系统和丰富的库支持。在某些复杂的项目中,开发者可能需要结合这两种技术,实现跨平台的交互。本文将详细介绍...
SOAP消息包括封装结构、编码规则和RPC表示。 - **WSDL(Web Service描述语言)**:描述Web Service的接口、消息格式和操作的XML文档,让客户端能够理解和调用服务。 - **UDDI**:一种标准,使得服务提供者能够...
ASP.NET调用扫描仪扫描数据并上传是一种常见的企业级应用需求,主要用于自动化处理文档和图像。这个场景下,开发者通常会使用特定的扫描仪控件或者API来集成扫描功能到Web应用程序中。以下是对该主题的详细解释: 1...
在.NET(Enyim.Caching)和Java(例如spymemcached)之间,只要遵循相同的协议规则,就可以共享同一Memcached集群中的数据。 为了实现.NET和Java之间的互通,你需要确保以下几点: 1. **相同的数据结构和序列化**...
SOAP消息包括封装结构、编码规则和RPC(远程过程调用)表示三部分,确保数据的传输与协议无关。 - WSDL(Web Service描述语言):WSDL用于定义Web Service的接口,描述服务如何被调用、使用哪种消息格式以及在哪里...
7. **内存管理**:由于Java和C/C++对内存管理的方式不同,调用DLL时需要注意内存的分配和释放。JAWIN库会处理大部分内存管理问题,但在处理指针和复杂数据结构时,需要特别注意。 8. **线程安全**:如果DLL函数不是...
标题中的“代码查看工具”指的是专门用于浏览、分析和理解编程语言源代码的软件工具,这里特别提到了针对C、C++、JAVA和.NET平台的支持。这类工具通常具有语法高亮、代码折叠、搜索定位、代码跳转等功能,极大地提高...
根据给定文件的信息,我们可以从中提炼出与Java、.NET 和 J2EE 相关的知识点,特别是聚焦于.NET框架下的C#语言及其面试题目。接下来,我们将详细解析这些知识点。 ### 1. C#中的引用类型 **知识点:** - **枚举 ...
《.NET和Java进行ArcGIS Engine开发培训教程》是一份深度探讨地理信息系统(GIS)开发技术的综合资料,主要聚焦于使用两种主流编程语言——.NET和Java与Esri公司的ArcGIS Engine集成开发。这份教程旨在帮助开发者...
- Java中可以通过`java.net.HttpURLConnection`或者第三方库如Apache HttpClient来发送SOAP请求。 - 构建SOAP消息的方式与VB.NET类似,但需要注意字符串转义的不同,例如在Java中XML的双引号需要用`\"`来表示。 -...
开发者应妥善管理这些敏感信息,遵循API的使用规则,防止滥用和泄露。 7. **异常处理**:在实际开发中,需要考虑网络错误、接口调用失败、解析错误等各种异常情况,通过Java的异常处理机制确保程序的健壮性。 8. *...
import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; public class SmsAPIDemo { public static void main(String[] args) throws Exception { String appKey =...
ASP.NET和Java是两种广泛应用的Web开发技术,SSH和JSP分别是Java领域的框架和技术。这里主要探讨这些技术的基础知识和相关考试重点。 首先,ASP.NET是微软公司推出的用于构建动态Web应用程序的框架,它基于.NET ...
Quartz.NET是基于Java的Quartz项目的.NET版本,它为.NET开发者提供了一个完全开源的、强大且灵活的作业调度框架。Quartz.NET的核心功能包括: 1. **作业与触发器**:在Quartz.NET中,任务被称为“作业”(Job),而...
标题中的“vb6、c#、java的jawin-2.0调用c#做的dll”涉及到了跨语言调用的技术,主要集中在VB6、C#和Java之间如何通过...在实际开发过程中,需要深入理解各语言的特性和接口调用规则,以确保DLL的高效、稳定和兼容性。
此外,注意DLL的命名约定,因为C#的DLL默认使用.NET的命名规则,而在Java中可能需要使用传统的Windows DLL命名规则。 总结来说,Java调用C# DLL的过程涉及到跨语言交互,可以通过JNA或JNI实现。JNA提供了一种便捷的...
7. **ESBSimpleSamples.Services.Web**: 这可能是一个包含Web服务(如ASP.NET Web API)的项目,这些服务可以通过HTTP协议被ESB访问和调用。 8. **ESBSimpleSamples.ServiceComponents**: 这可能是服务组件的集合,...
构造函数的执行顺序遵循一定的规则:静态字段和静态构造函数先于实例构造函数和方法。base关键字与Java的super类似,用于在子类构造函数中调用父类的构造函数。 委托在ASP.NET中扮演着重要角色,它们是类型安全的...
对于Java,虽然没有列出具体的示例,但其命名规则和习惯与C#类似,例如类名首字母大写(PascalCase),变量名首字母小写(camelCase),避免使用`goto`,以及鼓励使用注释、常量类和枚举等。在Java中,`this`关键字...
C#融合了C++和Java的许多优点,提供了更简洁、高效且安全的编程体验。 ##### Microsoft.NET —— 一场新的革命 .NET是Microsoft推出的一个软件框架,旨在提供一种统一的平台,让开发者可以创建和运行各种类型的Web...