外部系统调用规则引擎接口

flagleader 发布于 2013/08/23 14:48
阅读 469
收藏 6

外部系统调用规则引擎接口

    规则包:新建一个hello规则包,此规则包接受一个参数(用户姓名),如果姓名不为空,则返回欢迎词“Hello+姓名,如果姓名为空,则返回欢迎词“Hello World”。

    Java类调用规则引擎:在Eclipse中制作一个TestHello类,main中接收参数输入姓名,调用hello规则包后显示返回的欢迎辞。

    Java类通过规则服务Socket调用规则引擎:在Eclipse中制作一个HelloServer类,main中接收参数输入姓名,通过端口形式的规则服务调用hello规则包,显示返回的欢迎辞。

    Java类通过SOAP调用规则引擎:在Eclipse中制作一个HelloSoap类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。

    C#通过规则服务Socket调用规则引擎:在VS中制作一个HelloServer类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。

    C#通过SOAP调用规则引擎:在VS中制作一个HelloSoap类,将姓名参数传递给规则服务,并调用hello规则包,显示返回的欢迎辞。

     规则包开发

    通过规则配置器的测试步骤包括创建工程、创建规则包、定义对象库、定义规则、发布规则包、测试规则包

    创建规则包

    右键点击“体验开发” —“新建规则包”:

 


点击新建规则包后,在体验开发工程下面就会新建一个“规则包”的规则包,可以将其直接改名为hello:

 

 

    定义对象库

    然后展开hello规则包,点击规则包下面的“对象库”,在中间的编辑窗口中,点击添加按钮,并且输入需要添加的变量名、类型和显示名称,如下所示:
 

 


    同理添加另一个变量,名称为welcome,类型为string,显示名称为欢迎辞:
 

 


    配置规则

    配置好的业务规则,如下图所示:
 

 


    发布规则包


    规则包发布时,需要根据该规则包生成对应的java代码,然后将该代码编译,生成.rsc文件。将此文件输出到调用该规则包的应用程序的路径目录中,就完成了发布操作。
    规则引擎可以采用自动发布和手动发布两种方式,自动发布可以设置缺省的发布路径,并且设置成在保存的时候,同时发布规则包。手动发布是在发布时,指定输出路径:

    这里简单说一下规则引擎自动发布规则包执行文件(.rsc)

    自动发布规则包

    在规则配置器中,点击保存后,会将当前规则包以rpk文件的方式,并且将编译后的规则包以rsc文件的方式保存查看规则配置器中设置的自动发布路径下,已经生成了hello.rsc文件:

 


    此目录是VisualRules自带的Tomcat的缺省工程路径,当规则包发布到此目录后,可以通过tomcat的 http://localhost:8880/下面的jsp文件来访问这些规则包。

    Java类引入jar包调用规则包

    首先在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类,只需加入上述的代码,即可完成调用规则包的工作。
其他的应用程序调用规则引擎还有如下方式:
  1. Java类通过规则引擎服务Socket调用
  2. Java类通过SOAP调用规则引擎
  3. C#通过规则引擎服务调用
  4. C# 通过SOAP调用规则引擎


 

 

 

加载中
返回顶部
顶部