规则引擎Visual Rules Solution开发基础教程【连载4】--VRS相关调用篇

本文档介绍了如何通过Java和C#调用Visual Rules Solution(VRS)的规则服务。首先,展示了Java类如何通过Rule Engine Server和SOAP方式与规则包交互,接着讲解了C#应用的相同调用过程。详细步骤包括环境配置、服务启动、类库引用和代码实现,最后展示了成功调用后的输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[align=center][size=x-large][b]VRS相关调用[/b][/size][/align]

[size=large][b]一、Java类通过规则服务调用[/b][/size]
[size=medium] 在Eclipse中制作一个HelloServer类,main中接收参数输入姓名,通过端口形式的规则服务调用hello规则包,显示返回的欢迎辞。
首先需要查看服务器的Rule Engine Server服务是否开启,为了能够正常启动Rule Engine Server,首先需要设置Java路径:[/size]
[b][size=medium]1.设置JAVA_HOME变量[/size][/b]
[size=medium] 在windows环境中,设置系统的环境变量,添加一个JAVA_HOME变量,将其设置为VisualRules安装目录下的jre目录。如果已经安装了JDK,则可以设置为JDK的安装目录。[/size]

[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6759/f54b4815-92ea-3b54-9f4e-24c9ff7c1e9a.jpg[/img]
[/align]

[b][size=medium]2.启动Rule Engine Server[/size][/b]
[size=medium] 在系统的服务中启动Rule Engine Server服务:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6765/76559ddc-19ed-3a42-afe7-9bdc4c92f789.jpg[/img]
[/align]

[size=medium][b]3.设置java工程路径[/b][/size]
[size=medium] 首先在eclipse的java工程中,点击属性设置其路径。在其属性窗口的Java Build Path中设置Libraries,通过Add External JARs…加入VisualRules安装目录的lib下的json-lib-2.3-jdk1.3.jar以及jdom.jar。如下所示:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6767/dd1470b5-9816-32d4-98eb-687b31235d72.jpg[/img]
[/align]

[size=medium][b]4.添加Java测试类[/b][/size]
[size=medium] 在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() ;
}
}
}[/size]
[size=medium][b]5.执行java测试类[/b][/size]
[size=medium] 点击执行后,可以看到如下结果:[/size]

[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6771/3314672f-d0a4-36c2-8742-e051f4466076.jpg[/img]
[/align]

[size=medium] 说明已经调用了hello规则包,并且根据传入的name值“访问测试”,返回处理结果是 hello+“测试通讯”。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
[/size]

[b][size=medium]二、Java类通过SOAP调用[/size][/b]
[size=medium] 在Eclipse中制作一个HelloSoap类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。
首先需要查看服务器的Apache Tomcat rules服务是否开启,同时需要保证缺省安装的Tomcat工程下面有个soap的工程[/size]:
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6773/da67ced8-32ce-331e-a03c-9331014c2853.jpg[/img]
[/align]

[size=medium] 注意要将生成在VisualRules的安装目录的rules目录下的hello.rsc复制到tomcat的webapps\soap\WEB-INFO\classes目录下,这样可以保证规则包可以通过axis访问。[/size]
[size=medium] 在系统的服务中启动Apache Tomcat rules服务:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6775/36d4a975-db37-3c36-9bdf-419153b79052.jpg[/img]
[/align]

[size=medium][b]1.设置java工程路径[/b][/size]
[size=medium] 首先在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。如下所示:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6777/ec132662-3e47-3c92-97aa-816845fe215a.jpg[/img]
[/align]

[size=medium][b]2.添加Java测试类[/b][/size]
[size=medium] 在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() ;
}
}
}[/size]
[size=medium][b]3.执行java测试类[/b][/size]
[size=medium] 点击执行后,可以看到如下结果:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6779/f6f6c602-b357-305b-8871-f932b8cd6870.jpg[/img]
[/align]

[size=medium] 说明已经调用了hello规则包,并且根据传入的name值“访问测试”,返回处理结果是 hello+“测试通讯”。[/size]

[size=medium][b]三、C#通过规则服务调用[/b][/size]
[size=medium] 在VS中制作一个HelloServer类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。[/size]
[size=medium][b]1.新建C#工程[/b][/size]
[size=medium] 在VS中,新建一个名为HelloServer的控制台应用程序的工程:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6782/958af224-053e-39f1-81e5-09fbbc052cce.jpg[/img]
[/align]

[size=medium][b]2.添加引用[/b][/size]
[size=medium] 将RuleEngine.dll添加到引用中。该文件一般位于VisualRules安装目录的samples\notnet\RuleEngine\bin\Release目录下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6784/2f8e1166-a1c6-32df-a43f-9dcda458d481.jpg[/img]
[/align]

[size=medium][b]3.编写Program.cs[/b][/size]
[size=medium] 代码如下,其中192.168.19.128为服务器地址:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RuleEngine;
namespace HelloServer
{
class Program
{
static void Main(string[] args)
{
RuleServerPoolFactory factory = RuleServerPoolFactory.getFactory("192.168.19.128", 1508);
RuleService service = factory.RuleService;
service.put("name", "测试Socket访问");
service.execute("hello");

Console.WriteLine( service.getString("welcome") );
Console.Read();
}
}
}[/size]
[size=medium][b]4.执行测试类[/b][/size]
[size=medium] 点击执行后,看到执行结果如下,说明已经调用规则包成功:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6786/4b6603f7-655e-35d6-850b-d92f79c7252a.jpg[/img]
[/align]

[size=medium][b]四、C#通过SOAP调用[/b][/size]
[size=medium] 在VS中制作一个HelloSoap类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。[/size]
[size=medium][b]1.新建C#工程[/b][/size]
[size=medium] 在VS中,新建一个名为HelloSoap的控制台应用程序的工程:
[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6788/f4c41102-de26-31a4-9b3c-80cb5e8416d0.jpg[/img]
[/align]

[size=medium][b]2.添加引用[/b][/size]
[size=medium] 将RuleEngine.dll添加到引用中。该文件一般位于VisualRules安装目录的samples\notnet\RuleEngine\bin\Release目录下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6790/07f6f0d8-5944-3837-9b5e-4cadc22cea14.jpg[/img]
[/align]

[size=medium][b]3.添加服务引用[/b][/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6792/b09503ed-e7cd-308a-9a91-0ae030fff8ab.jpg[/img]
[/align]

[size=medium] 然后输入Soap服务所在的地址,在地址栏中输入http://192.168.1.121:8880/soap/services/RuleSoap?wsdl 。
点击“前往”后,可以看到规则服务提供的接口。
输入一个命名空间后,点击确认。[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6794/f09295d3-6894-373b-bf93-23c000858278.jpg[/img]
[/align]

[size=medium][b]4.编写Program.cs[/b][/size]
[size=medium] 在此中输入三个类,RuleSoapFactory、RuleSoapService、Program,其中RuleSoapFactory、RuleSoapService是对规则调用接口的实现。其他程序都可以像Program操作的那样,调用规则包。:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RuleEngine;
namespace HelloSoap
{
public class RuleSoapFactory : RuleServiceFactory
{
override public RuleService RuleService
{
get
{
return new RuleSoapService(this);
}
}
public RuleSoapFactory()
: base()
{
}
public virtual void close()
{
}
public virtual void forceClose()
{
this.close();
}
public virtual void open()
{
}
}
public class RuleSoapService : AbstractRuleService
{
private RuleSoapFactory Factory
{
get
{
return (RuleSoapFactory)factory;
}
}
public RuleSoapService(RuleSoapFactory factory)
: base(factory)
{
}
protected override System.String send(System.String xml)
{
try
{
HelloSoap.ServiceReference1.RuleSoapClient soap = new HelloSoap.ServiceReference1.RuleSoapClient();
return soap.getRule(xml);
}
catch (System.Exception e)
{
Factory.forceClose();
throw new RuleServiceException(e);
}
}
}
class Program
{
static void Main(string[] args)
{
RuleSoapFactory factory = new RuleSoapFactory();
RuleService service = factory.RuleService;
service.put("name", "测试Soap访问");
service.execute("hello");
Console.WriteLine(service.getString("welcome"));
Console.Read();
}
}
}[/size]
[size=medium][b]5.执行测试类[/b][/size]
[size=medium] 点击执行后,看到执行结果如下,说明已经调用规则包成功:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0111/6796/b8ec8314-35ce-397c-b862-530d93fa0e32.jpg[/img]
[/align]

[size=medium] 以上实例讲述了如何使用VisualRules,此例子主要是讲述了VisualRules是如何和其他系统接口的。关于如何采用VisualRules进行更深入的功能开发,可以参考其他的教程说明,详细了讲述了如何开发一个对数据库操作的管理系统。可以通过查看《旗正商业规则定制平台基础教程》了解如何通过VisualRules开发基于数据库的管理系统。了解使用VisualRules开发基于数据库管理系统的快捷。[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值