`
何必如此
  • 浏览: 53571 次
社区版块
存档分类
最新评论

规则引擎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的安装目录。





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。如下所示:




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测试类
          点击执行后,可以看到如下结果:





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


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





          注意要将生成在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。如下所示:




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测试类
          点击执行后,可以看到如下结果:




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

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




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




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.执行测试类
          点击执行后,看到执行结果如下,说明已经调用规则包成功:




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





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




3.添加服务引用




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





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.执行测试类
          点击执行后,看到执行结果如下,说明已经调用规则包成功:




          以上实例讲述了如何使用VisualRules,此例子主要是讲述了VisualRules是如何和其他系统接口的。关于如何采用VisualRules进行更深入的功能开发,可以参考其他的教程说明,详细了讲述了如何开发一个对数据库操作的管理系统。可以通过查看《旗正商业规则定制平台基础教程》了解如何通过VisualRules开发基于数据库的管理系统。了解使用VisualRules开发基于数据库管理系统的快捷。
  • 大小: 44.2 KB
  • 大小: 21.2 KB
  • 大小: 62.3 KB
  • 大小: 107.5 KB
  • 大小: 26.2 KB
  • 大小: 21 KB
  • 大小: 88.3 KB
  • 大小: 128.8 KB
  • 大小: 73.3 KB
  • 大小: 29.1 KB
  • 大小: 103.7 KB
  • 大小: 75.3 KB
  • 大小: 29.1 KB
  • 大小: 18.7 KB
  • 大小: 46.5 KB
  • 大小: 93.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics