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

VRS相关调用


一、Java类通过规则服务调用
         在Eclipse中制作一个HelloServer类,main中接收参数输入姓名,通过端口形式的规则服务调用hello规则包,显示返回的欢迎辞。
         首先需要查看服务器的Rule Engine Server服务是否开启,为了能够正常启动Rule Engine Server,首先需要设置Java路径:

1.设置JAVA_HOME变量
         在windows环境中,设置系统的环境变量,添加一个JAVA_HOME变量,将其设置为VisualRules安装目录下的jre目录。如果已经安装了JDK,则可以设置为JDK的安装目录。


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


2.启动Rule Engine Server
         在系统的服务中启动Rule Engine Server服务:




3.设置java工程路径
         首先在eclipse的java工程中,点击属性设置其路径。在其属性窗口的Java Build Path中设置Libraries,通过Add External JARs…加入VisualRules安装目录的lib下的json-lib-2.3-jdk1.3.jar以及jdom.jar。如下所示:

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


4.添加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() ;
}
}
}

5.执行java测试类
          点击执行后,可以看到如下结果:


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


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


二、Java类通过SOAP调用
          在Eclipse中制作一个HelloSoap类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。
          首先需要查看服务器的Apache Tomcat rules服务是否开启,同时需要保证缺省安装的Tomcat工程下面有个soap的工程


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


          注意要将生成在VisualRules的安装目录的rules目录下的hello.rsc复制到tomcat的webapps\soap\WEB-INFO\classes目录下,这样可以保证规则包可以通过axis访问。
          在系统的服务中启动Apache Tomcat rules服务:




1.设置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。如下所示:

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


2.添加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() ;
}
}
}

3.执行java测试类
          点击执行后,可以看到如下结果:

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


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

三、C#通过规则服务调用
          在VS中制作一个HelloServer类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。
1.新建C#工程
          在VS中,新建一个名为HelloServer的控制台应用程序的工程:

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


2.添加引用
          将RuleEngine.dll添加到引用中。该文件一般位于VisualRules安装目录的samples\notnet\RuleEngine\bin\Release目录下:

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


3.编写Program.cs
          代码如下,其中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();
        }
    }
}

4.执行测试类
          点击执行后,看到执行结果如下,说明已经调用规则包成功:

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


四、C#通过SOAP调用
          在VS中制作一个HelloSoap类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。
1.新建C#工程
          在VS中,新建一个名为HelloSoap的控制台应用程序的工程:


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


2.添加引用
          将RuleEngine.dll添加到引用中。该文件一般位于VisualRules安装目录的samples\notnet\RuleEngine\bin\Release目录下:

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


3.添加服务引用

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


          然后输入Soap服务所在的地址,在地址栏中输入http://192.168.1.121:8880/soap/services/RuleSoap?wsdl 。
          点击“前往”后,可以看到规则服务提供的接口。
          输入一个命名空间后,点击确认。


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


4.编写Program.cs
          在此中输入三个类,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();
        }
    }
}

5.执行测试类
          点击执行后,看到执行结果如下,说明已经调用规则包成功:

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


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

你可能感兴趣的:(java,Web,规则引擎,java类调用,VRS)