旗正业务规则管理系统程序员教程.pdf_第1页
旗正业务规则管理系统程序员教程.pdf_第2页
旗正业务规则管理系统程序员教程.pdf_第3页
旗正业务规则管理系统程序员教程.pdf_第4页
旗正业务规则管理系统程序员教程.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

旗正业务规则管理系统程序员教程.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

旗正业务规则管理系统程序员教程 第 1 页 共 68 页 旗正业务规则管理系统 程序员教程 旗正业务规则管理系统程序员教程 第 2 页 共 68 页 目目 录录 产品介绍产品介绍 . 4 背景说明 . 4 适应需求变化是程序员最大的挑战 . 4 如何适应需求变化 . 5 为面向配置编程提供可视化设计工具 . 6 业务规则管理系统 . 6 visualrules的功能 . 8 visualrules的应用 . 10 visualrules核心技术 . 12 visualrules的特点 . 14 visualrules与web开发平台的区别 . 16 visualrules组成 . 16 规则引擎 . 17 规则服务 . 18 数据库配置器 . 19 页面模板编辑器 . 19 页面配置器 . 19 规则配置器 . 20 规则库管理系统 . 21 规则包执行原理 . 21 visualrules安装 . 22 安装简介 . 22 安装配置要求 . 23 服务器版安装 . 24 目录结构 . 29 规则服务配置文件 . 31 visualrules体验开发体验开发 . 33 旗正业务规则管理系统程序员教程 第 3 页 共 68 页 关键知识点 . 33 hello world案例开发 . 34 案例描述 . 34 规则包开发 . 34 java类调用规则包 . 46 java类通过规则服务调用 . 48 java类通过soap调用 . 51 c#通过规则服务调用 . 53 c#通过soap调用 . 55 visualrules深入了解深入了解 . 59 规则配置器 . 60 工作空间、工程、规则组、规则包区别 . 60 对象库能传入的参数 . 60 规则的处理机制 . 61 内存表格的处理机制 . 62 规则的内置循环操作 . 64 null对象的处理 . 65 数据库单表操作的功能 . 65 自定义查询的设置 . 67 数据库表本地内存缓存 . 68 数据库表结构更新 . 68 规则执行轨迹的原理 . 68 旗正业务规则管理系统程序员教程 第 4 页 共 68 页 产品介绍产品介绍 背景说明背景说明 适应需求变化是程序员最大的挑战适应需求变化是程序员最大的挑战 程序员在设计并开发软件系统时, 碰到的最大的问题是软件需求不清或者需求的频繁变 动。这些变动主要来自于几个方面: 1、 前期项目调研时,需求不明确 由于需求必须由真正的客户进行确认,并且要变革现有的管理流程和操作方式。程 序员在项目前期调研需求时,客户又往往不能前瞻性的说明最终想要的系统是怎样 的,因此前期调研的需求也往往是不明确、不完整的。 这样导致的后果是,程序员需要加上自己的理解和设计,来补足需求的不完整部分 以及确定不明确部分。当程序员的理解和用户最终的需求不一致时,就会导致返工 甚至项目的不能使用。 2、 用户需求出现反复,不确定 即使前期已经经过确认的用户需求,在真正最后交付使用的时候,仍有可能发生变 化。 变化的原因可能是用户的要求提高了, 或者是程序员没有真正的理解用户需求。 这些需求变化,总是发生在即将系统上线的时候,程序员会疲于修改这些需求而造 成新的问题。 3、 用户需求增加或者变更 一般性的项目,系统上线之后,会有较长时间的稳定期。但随着信息化对企业业务 管理的深入,某些需求的变更却会发生的非常频繁。比如企业管理流程的变化,产 品定价策略的变化,分销返点政策的变化,促销方案的变化等等。 这些变化有些是会定期发生变化的,而有些则是不时的在发生。 需求的变更造成程序员大量的重复劳动, 同时也让程序员为了满足新的需求, 改动大量 的原先的代码,造成了程序的不稳定等问题。总之,如何适应需求变化,是程序员在系统设 计时最主要考虑的问题。 旗正业务规则管理系统程序员教程 第 5 页 共 68 页 如何适应需求变化如何适应需求变化 为了能够使开发的系统能够适应需求的变化, 程序员做了大量的尝试, 也将此作为评价 自己系统的一个重要指标。目前程序员为了适应需求变化的尝试主要包括以下几个方面: 1、 设计模式的应用 设计模式是目前高级程序员,特别是系统分析员必备的技能之一。设计模式最根本 的目的,就是为了适应变化,控制变化点。每个模式,都是为了将来系统扩展的考 虑,而设计的系统架构。设计模式有几个根本的原则: 设计模式主张面向接口编程,而不是面向实现编程。就是希望将来具体的实现发生 变化时,不会影响到其他调用该功能的部分。 设计模式主张优先使用对象组合,而不是使用类继承。就是因为使用类继承,会是 将来需求增加时, 使得类的数量会急剧增加。 而使用组合, 则会大大减少类的数量。 设计模式主张发现并封装变化点,就是希望能够事先考虑到将来可能变化的地方, 而将其封装起来。 设计模式主张类对扩展开放,对修改关闭。就是希望将来需求变化时,不要通过修 改现有的类来实现,而是通过扩展新的类来进行实现。 2、 配置化编程的应用 由于采用编码方式,使得程序很难清晰的定位出程序间的接口等关系。为了能够使 得程序尽可能的松耦合,现在推出的一些框架,就是希望将程序间的相互调用,通 过配置的方式实现。比如 spring,通过 xml 配置文件,来实现接口的具体实现的 调用。另外想 struts 等,也是通过 xml 配置文件,来定义具体的页面跳转等。 hibernate 等也是通过 xml 结构,来定义数据库的表结构等信息。这些工作都是希 望能够将变化通过修改 xml 文件来实现, 而不是通过修改程序代码的方式来实现。 3、 面向配置开发平台的应用 为了能够快速适应将来的这些变化。也可以通过构建开发平台。通过尽可能的复用 组件的方式,来实现快速的开发新的应用,同时也加快了需求变化时相应的修改的 工作。 以上这些都是现在程序员为了满足需求变化而做的努力。 都希望能够设计一个好的系统 架构,以便将来需求变化时,能够尽可能少的去修改程序,尽可能快的适应变化。 旗正业务规则管理系统程序员教程 第 6 页 共 68 页 为面向配置编程提供可视化设计工具为面向配置编程提供可视化设计工具 面向配置编程使得程序员将工作从原来的完全的编码,转到要书写大量的 xml 文件上 来。如何管理这些 xml 文件,以及如何简便的开发和维护这些 xml 文件,是目前碰到的 一个新问题。很多时候,发现当不用程序语言,而采用 xml 语言来进行一些实现,好像也 只是转换了一种语言而已,而不是根本性的减少了工作量,而且有时候书写 xml 文件反而 不能像程序一样,有编辑器来自动做严格的语法校验,因此开发的时候也容易出问题。 因此需要为这些 xml 文件,提供一个简便的可视化的设计工作。让程序员通过可视化 工具,可以比较方便的进行配置,并且这些 xml 文件也是自动生成并管理的。 比如 struts 等,就提供了可视化的图形设计器,通过拖拉等方式,实现了对 xml 文件 的管理。程序员根本不用管生成的 xml 究竟是怎样的,直接使用图形化设计器即可。 比如 hibernate 等,也是提供了自动生成工具,可以来生成这些 xml 文件,程序员也 不用再去关心怎么去编写这些文件。 这些工具的提供, 都大大节约了程序员的工作时间。 但是虽然有这些工具的提供以及充 分借鉴了设计模式等思想的好的系统架构的实现, 程序员在面对真正客户需求变化时, 还是 显得力不从心, 感觉客户永远都在挑战程序员的极限。 当程序员可以满足用户的需求变更时, 会发现用户需求变更的频率也相应的提高了,用户也总是会不断的提出新的要求等。 因此,我们需要更加简单和直接的工具,可以直接管理客户需求,可以最快的适应需求 的变化。 业务规则管理系统业务规则管理系统 将用户的业务规则分门别类进行管理, 同时提供可视化的配置工具, 让最终用户可以直 接配置和实现规则。 使得用户可以了解业务规则的实现, 并且可以直接的对业务规则进行修 改。这种方式可以最快的满足用户需求。 要采用业务规则管理系统来全面的管理用户的业务规则, 就需要很清晰的区分程序中的 逻辑以及业务相关逻辑。 要采用业务语言来描述业务逻辑, 并且可以和程序逻辑无缝的加以 衔接。 从技术结构上分析,要实现一个系统,特别是基于数据库的 b/s 方式的应用系统,最主 要是实现好表现层、业务逻辑层和数据库层。这几个层面的实现都有所侧重。 旗正业务规则管理系统程序员教程 第 7 页 共 68 页 表现层,主要专注于如何显示数据给用户,以及如何接收用户的输入。在表现层中,更 多是控制页面的样式和布局等,以及进行页面组件的控制。至于如何从服务器端取得数据, 以及如何将录入的数据存储到服务器上。 这些是后台业务逻辑层和数据库层考虑的问题。 特 别是目前 ajax 技术的应用,更加区分了表现层和业务逻辑层的界限。界面层通过 dhtml 和 javascript 等来控制界面的显示,数据的存取等全部通过 ajax 传递到服务器上。界面通 过 javascript 来对接收到的数据进行处理。由于目前 ajax 以及其他 ria 技术的普及,在界 面层更多的关注于基于某个框架的应用,比如现在流行的 jquery,extjs,dojo,flex 等, 这些框架简化了很多界面层的开发工作, 也使得程序员可以更加方便的实现各种易用性强的 操作界面。 为了让界面层能够制作界面效果和易用性强的功能, 对于数据的处理等, 需要尽量放到 业务逻辑层来实现。界面只管显示效果、格式以及一些基本的校验等。 业务逻辑层的侧重和界面层的侧重完全不同, 界面层需要提供给程序员尽可能强大的功 能等,让其设计出非常好的效果。而业务逻辑层,不用再管数据的格式等。数据的类型和格 式都可以是确定的, 其侧重就是如何灵活的设置数据处理逻辑。 这些逻辑有些是和业务相关 的,有些是和具体的技术实现相关的。通过规则引擎和规则配置器是比较好的实现方案。其 可以采用业务语言来展现业务逻辑的实现, 并且可以实现业务逻辑变更的实时应用。 因此业 务逻辑层的重点就是如何采用业务语言来描述业务逻辑,并且实现业务逻辑的实时可变。 数据库层实现就是要采用对象化的方式来操作数据库层。 存储数据库的代码, 最好是自 动生成的,业务逻辑等,只需要通过接口以及参数,就可以实现对数据库的操作。目前的 hibernate、ibatis 等都是通过采用对象化的类来实现对数据库的操作,方便了业务逻辑层的 调用。 从传统意义上来说, 业务规则管理系统需要能够管理业务逻辑层中的和业务相关的商业 规则,能够将这些规则从业务逻辑层中提取出来,专门有规则配置器来进行定义和管理。但 是在实际的应用中, 经常会发现商业规则和程序规则在很多时候不能很好的进行区分, 另外 有很多逻辑即可以通过数据库表来加以实现, 有可以通过决策表等来加以实现。 因此商业逻 辑和数据库层有些时候,也很难区分开来。 为了更方便的来实现和管理商业规则,visualrules 扩展了规则引擎和规则配置器能够 实现的业务逻辑的范围。 除了能够定义一般意义上的商业规则, 还能定义更加复杂的和数据 库层相关的处理规则等。 旗正业务规则管理系统程序员教程 第 8 页 共 68 页 visualrules 的功能的功能 为了能够更全面和简便的管理业务规则,visualrules 的规则引擎能支持更广泛的业务 逻辑实现范围。就目前的规则引擎,缺省情况下,规则引擎提供了以下的实现: 1、 常规值对象 常用的数值型、字符串、列表、map、日期等都作为常规类型支持,规则可以直接 按照这些类型进行处理。 2、 数据库对象 包括数据库表对象、视图对象、查询对象、sql 语句对象、存储过程对象、码表常 量对象等。 这些数据库对象,都可以直接根据数据库中的结构自动生成该对象的结构,以及对 该对象的处理方法等。 3、 内存表格对象 为了能够更方便的对批量数据进行处理,支持了内存中的数据表格,以便对批量数 据进行更加方便的处理。内存表格支持表格的列操作,汇总,匹配,追加等操作。 4、 xml 对象 规则引擎支持了 xml 对象的实现。目前的实现基于 jdom 1.0,在实现 xml 对象 时,可以对 xml 节点的创建、赋值、属性等有更加简便的操作。 5、 soap 对象 规则引擎可以直接操作 soap 对象,自动处理 soap 的交互等。规则可以直接和 soap 对象,传递参数和调用等。 6、 excel 对象 规则引擎基于 poi 实现了对 excel 的操作。包括 excel 工作簿,excel 的表格等。其 中为了更加方便的操作 excel 表格中的数据,特别提供了表格状的数据,以及纵横 表格的数据处理。更加方便的实现对 excel 的存取等操作。 在规则配置器中, 为了更多更方便的操作这些规则引擎支持的对象, 规则配置器也特别 的增加了相应的功能: 1、 对象库定义 对象库中可以定义常规对象、外部调用以及常量调用等。对其中常规对象的操作, 可以定义各种公式,比如取日期的年份、月份等方法。另外对于 string、list、date 旗正业务规则管理系统程序员教程 第 9 页 共 68 页 等对象的操作,还可以直接取得对应 java 的类实现下所有的方法。对于外部调用, 如果某些功能,采用规则配置不方便实现。就可以通过程序书写对应的代码,然后 通过外部调用。常量调用可以为一些常量,比如 0、1 等定义特殊的含义。 2、 数据库对象定义 可以通过数据库的信息,直接取得数据库连接对象。根据这个数据库连接对象,可 以直接执行 sql 语句等。在数据库连接对象下面,可以添加数据库表对象、视图 对象、查询对象、存储过程对象等。其中数据库表对象、视图对象、存储过程对象, 都可以直接从数据库中取得所有的表信息,然后选择添加即可。选择了数据库表对 象之后,表的字段名称、类型、描述等都可以直接从数据库中取得,并且会自动添 加增加、删除、修改、查找的方法,以及对结果集的下一条、上一条、根据字段取 值等方法。同时还可以看到表的数据等。操作非常简便。 对于数据库查询对象,直接根据 select 语句可以直接取得 select 查询返回的结果集 的字段信息,以及操作结果集的各种方法。对这些数据库对象的操作,都可以自动 从数据库中读取,也会根据数据库变更情况进行调整。 3、 内存表格对象定义 对于内存表格对象,分为列信息以及数据信息。列信息在对象库中定义,数据信息 在规则执行时控制,同时在对象库中,也可以看到规则执行后的内存中表格数据。 由于用户一般会将一些表格数据,采用 excel 来进行存储。因此规则配置器提供了 导入导出功能,实现从 excel 中直接读取信息,以及数据,实现数据的初始化操作。 在和 excel 进行交互时, 要求 excel 中第一个 sheet 保存表格信息。 并且第一行保存 了列信息,第二行开始,才存储数据信息。在读取列信息时,还会根据第二行存储 的数据,自动设置列的类型。 4、 xml 对象定义 可以直接根据 xml 结构的描述,直接生成 xml 对象,包括根节点和子节点等信 息。并且自动生成了操作 xml 节点的属性,文本等方法。 5、 soap 对象定义 soap 对象可以通过直接访问 soap 的地址,得到 saop 服务对外提供的接口以及 参数等信息。自动生成对 soap 对象的参数操作以及执行调用等方法。 6、 excel 对象定义 在对象库下面可以直接定义一个 excel 工作簿对象,在工作簿对象下面,可以定义 旗正业务规则管理系统程序员教程 第 10 页 共 68 页 sheet 对象,sheet 对象分为三种,一种是常规对象,这可以直接根据行号、列号操 作单元格。一种是表格状 sheet,这种可以通过下一条等操作,取得某行数据,并 且根据列号操作单元格。另一种是纵横表格状 sheet,这种可以直接通过下一条等 操作,直接取得下一个单元格。 规则配置器除了支持更多的处理对象之外,还对业务逻辑的定义,扩展了功能。目前的 规则定制,具有以下一些功能: 1、 规则集实现 在实际的规则处理中,需要分类管理规则,同时需要对规则的流转进行控制。规则 集的应用,可以实现规则的分类,实现子规则,实现规则循环。规则集可以将所有 的规则,以树状的形式进行管理。 2、 多种决策表 决策表包括几种样式,一种是表格状决策表,这种决策表纵向和横向的上面都是条 件,中间部分才是赋值处理。还有一种是多维决策表,每个维度都是条件,并且需 要设置满足每个维度条件之后的赋值操作等。另一种是关联决策表,关联决策表可 以对前一维度,设置单独的第二个条件,并且设置满足条件之后的赋值操作。 3、 规则的多种方式操作 规则除了常规的条件和动作之外。 还增加了初始化操作、 否则操作、 否则如果操作、 异常操作等。 另外规则还支持根据表格数据内置循环等属性。 同时还支持互斥规则、 失效规则;支持规则有效期;支持规则轨迹记录等。 4、 规则流程 可以采用流程图方式来定义规则的执行顺序等。可以在流程中设置条件等等操作。 目前,visualrules 的规则配置器已经可以支持定义绝大多数业务逻辑层和数据库层所 需要定义的业务逻辑和操作。 同时为了方便前端界面等方便的调用规则中定义的逻辑。 还自 动生成了可供 ajax 方式调用的 jsp 文件,甚至前端的操作界面的代码。 visualrules 的应用的应用 visualrules 提供的这些功能,可以快速的实现用户所需要的系统,可以随时的修改用 户的业务规则,以便快速的变更系统以适应新的业务需求。但在目前的项目开发中,采用了 众多的组件,众多的系统架构的情况下,究竟在哪些地方使用 visualrules 产品,完成那些 旗正业务规则管理系统程序员教程 第 11 页 共 68 页 方面的工作。这是程序员必须要考虑的问题。 就 visualrules 完整的产品功能来说,可以采用此工具完成整个项目的制作,包括实现 页面层的代码。但是实际的应用中,根据程序员自身的技术特点,以及公司本身积累的一些 组件和经验,并不会全面的采用 visualrules 来实现整个项目。因此以下是可以考虑的 visualrules 的应用场景: 1、 经常变更的商业规则 一般性的类型校验、格式校验、范围判断等逻辑,都可以通过配置方式自动实现, 对于表的操作,其编写的代码也不是太复杂,而且变动也不会太频繁。 但是某些也业务相关的商业规则,却可能会定期的发生变更,比如一个季度或者一 个月变化一下。像一些奖惩机制、促销策略、计费规则、新产品等。 对于这部分商业规则,不适合采用程序代码或者 xml 配置文件等方式来实现。因 为这些方式实现,最终用户必须依赖程序员才能对规则进行修改,而且响应速度也 非常的慢。 要实现这种应用,就需要在程序中编写调用规则引擎的代码。调用规则引擎有多种 方式,一种是通过 java 类库调用,一种是通过 socket 通讯,还有一种是通过 soap 服务调用。 2、 后台逻辑的配置实现 软件系统在设计时,必须考虑将来用户可能会有的变化,或者允许其发生变更。这 些变化点,必须加以封装,并且使其影响最小。但是,在系统设计的过程中,并不 能将所有的变化点,都能采用好的设计来加以封装。因为最终系统都是围绕数据库 存储来进行,有些结构设计必须依赖数据库表结构的设计。当设计的表结构并不能 满足将来业务需求的变更时,就必须去修改数据库表结构。或者修改某些码表形式 的数据。 采用 visualrules 可以让数据库结构的变化, 像业务逻辑的变化一样简单。 使得数据 库结构发生变化时,影响也是最小的。 采用这种方式实现时,可以考虑直接通过 ajax 来调用后台逻辑,并且返回需要取 得的数据等。 3、 b/s 方式的完整功能的实现 visualrules 提供了多种 web 页面的模板,根据这些模板,可以生成用户操作的 web 页面源代码,无需做程序改动,就能实现用户界面层。缺省模板中,已经可以实现 旗正业务规则管理系统程序员教程 第 12 页 共 68 页 录入、查询、列表等多种功能界面。 用户也可以通过增加 web 页面模板,来支持生成更多的操作界面。 采用 visualrules 来实现系统可以加快程序员实现整个系统,可以实现对业务规则的管 理,简化业务逻辑变更的工作,减轻系统维护的工作。使得系统可以适应将来需求的变化。 visualrules 核心技术核心技术 visualrules 产品最关键的就是实现一个业务语言和程序语言的对应,并且自动编译对 应的程序代码,以及实现代码的动态加载。 业务逻辑举例:业务逻辑举例: 举个最简单的例子: 我们计算电信资费逻辑为: 如果 消费时间在晚上 10 点之后,并且在早上 7 点之前 那么 费用 等于 通话时间0.3 元。 如果 消费时间在 早上 7 点之后并且在晚上 10 点之前 那么 费用 等于 通话时间0.6 元。 java 实现:实现: 采用 java 语言实现,一般的实现如下: 定义变量:定义变量: date xiaofei ;/消费时间 double tonghua ; /通话时间 double feiyong ; /费用 实现逻辑:实现逻辑: if ( xiaofei. gethours() =22 ) feiyong = tonghua*0.3 ; if ( xiaofei. gethours() 7) 旗正业务规则管理系统程序员教程 第 13 页 共 68 页 visual rules 实现:实现: 在 visualrules 中,对 java 语言的实现进行本地化对应: 在对象库中,定义三个传入传出变量:在对象库中,定义三个传入传出变量: 变量 1:变量名 xiaofei ,类型为 date ,中文名称为消费时间 ,java 中对应为 xiaofei。 添加一个 xiaofei 变量的子函数 gethours()。定义如下: 变量名为 gethours(),类型为 int,中文名称为消费时间段,java 中对应为 xiaofei.gethours(). 变量 2: 变量 名 tonghua, 类型 为 double , 中文名称为消费时间 , java 中对应为 tonghua。 变量 3: 变 量 名 feiyong, 类型为 double , 中文名称为消费时间 , java 中对应为 feiyong。 在规则包定制中,新建两个规则: 规则规则 1:新建两个条件和一个动作。新建两个条件和一个动作。 选择对象库中变量名为 gethours()的对象,作为条件 1 的被判断值,选择判断符为小于 等于,输入常量 7 作为判断值。 选择对象库中变量名为 gethours()的对象,作为条件 2 的被判断值,选择判断符为大于 等于,输入常量 22 作为判断值。设置两个条件之间的关系为或者关系。 选择动作为赋值类型,选择对象库中变量名为 feiyong 的对象作为赋值动作的被赋值对 象,选择变量名为 tonghua 的对象并且常量 0.3 作为所赋的值。 规则规则 2:新建两个条件和一个动作。:新建两个条件和一个动作。 选择对象库中变量名为 gethours()的对象, 作为条件 1 的被判断值, 选择判断符为大于, 输入常量 7 作为判断值。 选择对象库中变量名为 gethours()的对象, 作为条件 2 的被判断值, 选择判断符为小于, 输入常量 22 作为判断值。设置两个条件之间的关系为并且关系。 选择动作为赋值类型,选择对象库中变量名为 feiyong 的对象作为赋值动作的被赋值对 象,选择变量名为 tonghua 的对象并且常量 0.6 作为所赋的值。 visual rules 逻辑:逻辑: 这样,这样,visualrules 中显示的规则包逻辑为:中显示的规则包逻辑为: 如果 消费时间段小于等于 7 或者 消费时间段 大于等于 22 那么 费用 等于 通话时间0.3 元。 如果 消费时间段 大于 7 并且 消费时间段 小于 22 旗正业务规则管理系统程序员教程 第 14 页 共 68 页 那么 费用 等于 通话时间0.6 元。 此逻辑显示界面其实和 java 语言完全一一对应,最终生成的代码也一致。生成代码为: /* * 规则 * 如果: * 消费时间段小于等于7 * 或者 消费时间段大于等于22 * 那么: * 费用 = 通话时间0.3 */ private int private int excuterule0() throws throws exception try try if if ( xiaofei.gethours()=22 ) feiyong = (doubledouble)tonghua*0.3; catch catch (exception e) throw throw e ; return return m_return_default; /* * 规则1 * 如果: * 消费时间段大于7 * 并且 消费时间段小于22 * 那么: * 费用 = 通话时间0.6 */ private int private int excuterule1() throws throws exception try try if if ( xiaofei.gethours()7 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 测试类测试类 点击执行后,可以看到如下结果: 旗正业务规则管理系统程序员教程 第 48 页 共 68 页 说明已经调用了 hello 规则包,并且根据传入的 name 值“访问测试” ,返回处理结果是 hello+“访问测试” 。 同理,任何的其他 java 类,只需加入上述的代码,即可完成调用规则包的工作。 java 类通过规则服务调用类通过规则服务调用 在 eclipse 中制作一个 helloserver 类, main 中接收参数输入姓名, 通过端口形式的规则 服务调用 hello 规则包,显示返回的欢迎辞。 首先需要查看服务器的 rule engine server 服务是否开启,为了能够正常启动 rule engine server,首先需要设置 java 路径: 设置设置 java_home 变量变量 在 windows 环境中,设置系统的环境变量,添加一个 java_home 变量,将其设置为 visualrules 安装目录下的 jre 目录。 如果已经安装了 jdk,则可以设置为 jdk 的安装目录。 旗正业务规则管理系统程序员教程 第 49 页 共 68 页 启动启动 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。如下所示: 旗正业务规则管理系统程序员教程 第 50 页 共 68 页 添加添加 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.p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论