今天给各位分享规则引擎drools的rete算法实现原理和事实匹配过程的知识,其中也会对规则引擎drools的rete算法实现原理和事实匹配过程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
规则引擎drools的rete算法实现原理和事实匹配过程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于规则引擎drools的rete算法实现原理和事实匹配过程、规则引擎drools的rete算法实现原理和事实匹配过程的信息别忘了在本站进行查找喔。
本文导读目录:
2、规则引擎drools的rete算法实现原理和事实匹配过程
一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: ^once 这个模式包含一个特殊的字符 ,表示该模式只匹配那些以 once 开头的字符串。例如该模式与字符串 "once upon a time" 匹配,与 "There once was a man from NewYork" 不匹配。正如如 符号表示开头一样, 符号用来匹配那些以给定模式结尾的字符串。 bucket$ 这个模式与 "Who kept all of this cash in a bucket" 匹配,与 "buckets" 不匹配。字符 和 同时使用时,表示精确匹配(字符串与模式一样)。例如: ^bucket$ 只匹配字符串 "bucket"。如果一个模式不包括 和 ,那么它与任何包含该模式的字符串匹配。例如模式: once 与字符串 There once was a man from NewYork Who kept all of his cash in a bucket. 是匹配的。 在该模式中的字母 (o-n-c-e) 是字面的字符,也就是说,他们表示该字母本身,数字也是一样的。其他一些稍微复杂的字符,如标点符号和白字符(空格、制表符等),要用到转义序列。所有的转义序列都用反斜杠 打头。制表符的转义序列是 。所以如果我们要检测一个字符串是否以制表符开头,可以用这个模式: ^ 类似的,用 表示"新行", 表示回车。其他的特殊符号,可以用在前面加上反斜杠,如反斜杠本身用 表示,句号 用 表示,以此类推。 在 INTERNET 的程序中,正则表达式通常用来验证用户的输入。当用户提交一个 FORM 以后,要判断输入的电话号码、地址、EMAIL 地址、信用卡号码等是否有效,用普通的基于字面的字符是不够的。 所以要用一种更自由的描述我们要的模式的办法,它就是字符簇。要建立一个表示所有元音字符的字符簇,就把所有的元音字符放在一个方括号里: [AaEeIiOoUu] 这个模式与任何元音字符匹配,但只能表示一个字符。用连字号可以表示一个字符的范围,如: [a-z] // 匹配所有的小写字母 [A-Z] // 匹配所有的大写字母 [a-zA-Z] // 匹配所有的字母 [0-9] // 匹配所有的数字 [0-9.-] // 匹配所有的数字,句号和减号 [ f ] // 匹配所有的白字符 同样的,这些也只表示一个字符,这是一个非常重要的。如果要匹配一个由一个小写字母和一位数字组成的字符串,比如 "z2"、"t6" 或 "g7",但不是 "ab2"、"r2d3" 或 "b52" 的话,用这个模式: ^[a-z][0-9]$ 尽管 代表 26 个字母的范围,但在这里它只能与第一个字符是小写字母的字符串匹配。 前面曾经提到^表示字符串的开头,但它还有另外一个含义。当在一组方括号里使用 时,它表示"非"或"排除"的意思,常常用来剔除某个字符。还用前面的例子,我们要求第一个字符不能是数字: ^[^0-9][0-9]$ 这个模式与 "&5"、"g7"及"-2" 是匹配的,但与 "12"、"66" 是不匹配的。下面是几个排除特定字符的例子: [^a-z] //除了小写字母以外的所有字符 [^\/^] //除了()(/)(^)之外的所有字符 [^"'] //除了双引号(")和单引号(')之外的所有字符 特殊字符 (点,句号)在正则表达式中用来表示除了"新行"之外的所有字符。所以模式 与任何两个字符的、以数字5结尾和以其他非"新行"字符开头的字符串匹配。模式 可以匹配任何字符串,换行符( 、 )除外。 PHP的正则表达式有一些内置的通用字符簇,列表如下: 到现在为止,你已经知道如何去匹配一个字母或数字,但更多的情况下,可能要匹配一个单词或一组数字。一个单词有若干个字母组成,一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数。 这些例子描述了花括号的三种不同的用法。一个数字 的意思是前面的字符或字符簇只出现x次 ;一个数字加逗号 的意思是前面的内容出现x或更多的次数 ;两个数字用逗号分隔的数字 表示 前面的内容至少出现x次,但不超过y次。我们可以把模式扩展到更多的单词或数字: ^[a-zA-Z0-9_]{1,}$ // 所有包含一个以上的字母、数字或下划线的字符串 ^[1-9][0-9]{0,}$ // 所有的正整数 ^-{0,1}[0-9]{1,}$ // 所有的整数 ^[-]?[0-9]+.?[0-9]+$ // 所有的浮点数 最后一个例子不太好理解,是吗?这么看吧:以一个可选的负号 () 开头 ()、跟着1个或更多的数字()、和一个小数点()再跟上1个或多个数字),并且后面没有其他任何东西()。下面你将知道能够使用的更为简单的方法。 特殊字符 与 是相等的,它们都代表着: 0个或1个前面的内容 或 前面的内容是可选的 。所以刚才的例子可以简化为: ^-?[0-9]{1,}.?[0-9]{1,}$ 特殊字符 与 是相等的,它们都代表着 0 个或多个前面的内容 。最后,字符 与 是相等的,表示 1 个或多个前面的内容 ,所以上面的4个例子可以写成: ^[a-zA-Z0-9_]+$ // 所有包含一个以上的字母、数字或下划线的字符串 ^[1-9][0-9]*$ // 所有的正整数 ^-?[0-9]+$ // 所有的整数 ^[-]?[0-9]+(.[0-9]+)?$ // 所有的浮点数 当然这并不能从技术上降低正则表达式的复杂性,但可以使它们更容易阅读。 Drools是一款基于Java的开源规则引擎,实现了将业务决策从应用程序中分离出来。本文是作为一个技术角度进行编写,文采有限,仅供对drools有一定了解,并且想搞清楚drools内部实现原理,并想提升编程技巧的同行学习和指正。 1、案例 一个学校把学生的信息录入系统中,想找一批篮球苗子进行培养,为中国体育事业输送人才。 (1)事实:StudentFact对象 该对象中存放了学生的基本信息。年级,性别,年龄,身高,身体素质的信息。 (2)筛选规则:SelectStudentRule描述。 IF: 年级是三年级以上, 性别是男的, 年龄小于10岁, 身体健壮, 身高170cm以上, THEN: 这个男孩是一个篮球苗子,需要培养,把该学生的信息存放到篮球苗子的表中 2、rete算法包含的部分 Working-Memory:存放要匹配规则的事实,也就说,存放的是业务对象,即StudentFact对象。 RuleBase:存放的是业务人员制定的形形色色的规则SelectStudentRule。 Pattern-Matcher:业务对象匹配规则的重要部分,也就是业务对象在规则网络中流动的过程的执行器。即StudentFact匹配SelectStudentRule的过程。 Agenda:一旦一个业务对象匹配了一个规则,会形成该规则和该业务对象的一个议程。即StudentFact要把该学生信息存入篮球苗子表中的事件。 Execution-Engine:业务对象匹配上一个规则后,业务对象执行规则结果的执行器。即将StudentFact信息存放如篮球苗子表中事件的执行器。 3、rete算法的网络图 匹配过程: (1)、匹配过程中事实在网络节点中的流转顺序为A-->B-->C-->D-->E-->F-->G-->H-->I--->规则匹配通过 (2)、从working-Memory中拿出一个待匹配的StudentFact对象,进入根节点然后进行匹配,以下是fact在各个节点中的活动图: A节点:拿StudentFact的年级数值进行年级匹配,如果年级符合条件,则把该StudentFact的引用记录到A节点的alpha内存区中,退出年级匹配。 B节点:拿StudentFact的性别内容进行性别匹配,如果性别符合条件,则把该StudentFact的引用记录到B节点的alpha内存区中,然后找到B节点左引用的Beta节点,也就是C节点。 C节点:C节点找到自己的左引用也就是A节点,看看A节点的alpha内存区中是否存放了StudentFact的引用,如果存放,说明年级和性别两个条件都符合,则在C节点的Beta内存区中存放StudentFact的引用,退出性别匹配。 D节点:拿StudentFact的年龄数值进行年龄条件匹配,如果年龄符合条件,则把该StudentFact的引用记录到D节点的alpha的内存区中,然后找到D节点的左引用的Beta节点,也就是E节点。 E节点:E节点找到自己的左引用也就是C节点,看看C节点的Beta内存区中是否存放了StudentFact的引用,如果存放,说明年级,性别,年龄三个条件符合,则在E节点的Beta内存区中存放StudentFact的引用,退出年龄匹配。 F节点:拿StudentFact的身体数值进行身体条件匹配,如果身体条件符合,则把该StudentFact的引用记录到D节点的alpha的内存区中,然后找到F节点的左引用的Beta节点,也就是G节点。 G节点:G节点找到自己的左引用也就是E节点,看看E节点的Beta内存区中是否存放了StudentFact的引用,如果存放,说明年级,性别,年龄,身体四个条件符合,则在G节点的Beta内存区中存放StudentFact的引用,退出身体匹配。 H节点:拿StudentFact的身高数值进行身高条件匹配,如果身高条件符合,则把该StudentFact的引用记录到H节点的alpha的内存区中,然后找到H节点的左引用的Beta节点,也就是I节点。 I节点:I节点找到自己的左引用也就是G节点,看看G节点的Beta内存区中是否存放了StudentFact的引用,如果存放了,说明年级,性 别,年龄,身体,身高五个条件都符合,则在I节点的Beta内存区中存放StudentFact引用。同时说明该StudentFact对象匹配了该规 则,形成一个议程,加入到冲突区,执行该条件的结果部分:该学生是一个篮球苗子。 4、drools源码,一个事实匹配规则过程的原理介绍 一个Fact通过Session添加到规则网络中,如何进行规则匹配的大致过程如下: (1)、通过根结点对象从EntryPointNode的Map集合中找到相应的EntryPointNode对象; (2)、EntryPointNode对象有一个ObjectTypeNode的Map集合,把fact的class转化成ClassObjectType,从该集合中找到ObjectTypeNode; (3)、OjectTypeNode对象的sink属性引用着这个fact事实的规则网络; (4)、从sink属性中的链表中拿出一个alphaNode进行匹配,递归遍历所有alphaNode的子节点(sink属性),根据alphaNode中的条件对Fact数据进行比较。 ==>(向下(子节点)是试图完整匹配一条规则),如果向下有不匹配的,表示该规则不符合当前fact,退出递归,开始向右匹配。 ==>(向右(nextRightTupleSinkNode属性)开始试图匹配另一条规则)。 ===>向下(当前AlphaNode子节点代表的规则的所有条件模式)匹配,如果所有的子节点alphaNode中隐藏的条件都符合, 则完全匹配一条规则,形成议程加入冲突集合,待匹配完所有的规则,再根据规则的优先级执行匹配上的规则的结果部分,更改Fact的数据。 ===>向右(进行另一个规则的匹配),如果所有的子节点alphaNode中隐藏的条件都符合,则完全匹配一条规则,形成议程加入冲突集合,待匹配完所有的规则,再根据规则的优先级执行匹配上的规则的结果部分,更改Fact的数据。 PS:本文由读者供稿,有一定的专业性和应用场景,如有疑问可通过联系作者后进群讨论! —————END————— 适用于:Exchange Server 2013 可以使用传输规则来识别流经 Exchange 2013 组织的邮件并采取措施。 传输规则类似于 Outlook 和 Outlook Web App 中可用的收件箱规则。 主要区别在于传输规则在邮件传输过程中对其进行操作,而不是在邮件传递到邮箱后进行操作。 传输规则包含更丰富的条件、例外和操作集,让你能灵活实施多种类型的邮件策略。 本文介绍了传输规则的 组件及其工作方式。 可以使用 Exchange 管理中心 (EAC) 或 Exchange 命令行管理程序来管理传输规则。 有关如何管理传输规则的说明,请参阅 管理 Exchange 2013 中的传输规则。 可以选择强制实施每个规则、只是测试规则,或测试每个规则并通知发件人。 若要了解测试选项的详细信息,请参阅 Test a transport rule和 Policy Tips。 若要使用传输规则实现特定的消息传递策略,请参阅以下主题: 使用传输规则检查 Exchange 2013 中的邮件附件 传输规则的常见附件拦截应用场景 Exchange 2013 中的组织范围的免责声明、签名、页脚或页眉 使用传输规则以便邮件可以规避待筛选邮件功能 使用传输规则根据字词、短语或模式的列表路由电子邮件 常见邮件审批场景 传输规则由条件、异常、操作和属性组成: 条件:确定要对其应用操作的消息。 一些条件检查邮件头字段(例如“收件人”、“发件人”或“抄送”字段)。 其他条件检查邮件属性(例如邮件主题、正文、附件、邮件大小或邮件分类)。 大多数条件要求你指定比较运算符(例如等于、不等于或包含)以及要匹配的值。 如果没有条件或例外,规则将应用到所有邮件。 有关 Exchange 2013 中的传输规则条件的详细信息,请参阅 Exchange 2013 中) 谓词 (传输规则条件和例外。 例外:(可选)标识不应应用操作的消息。 条件中可用的相同邮件标识符同样在例外中可用。 例外会覆盖条件并阻止规则操作应用于邮件,即使邮件匹配所有配置的条件也是如此。 操作:指定对与规则中的条件匹配且与任何异常不匹配的邮件执行的操作。 例外会覆盖条件并阻止将操作应用于电子邮件,即使该邮件符合所有配置的条件也是如此。 有关 Exchange 2013 中的传输规则操作的详细信息,请参阅 Exchange 2013 中的传输规则操作。 属性:指定非条件、异常或操作的其他规则设置。 例如,应何时应用规则、是否强制实施或测试规则,以及规则可用的时间段。 有关详细信息,请参阅本主题中的传输规则属性部分。 下表显示了在规则中如何处理多个条件、条件值、例外和操作。 组件 逻辑 备注 多个条件 AND 邮件必须匹配该规则的所有条件。 如果需要匹配一个条件或另一个条件,请对每个条件使用不同的规则。 例如,如果要为带有附件的邮件和包含指定文本的邮件添加相同的免责声明,请为每个条件创建一个规则。 在 EAC 中,你可以轻松地复制规则。 一个条件具有多个值 OR 一些条件允许你指定多个值。 邮件必须匹配任一(并非全部)指定值。 例如,如果电子邮件的主题为 Stock price information,并且主题包含这些词中的任一个条件被配置为匹配单词 Contoso 或 stock,则符合该条件,因为主题中至少包含指定值中的一个。 多个例外 OR 如果邮件匹配任何例外,则操作不会应用到邮件。 该邮件不需要匹配所有例外。 多个操作 AND 匹配规则条件的邮件获取规则中指定的所有操作。 这与规则代理对条件的处理方式是完全相反的。 要记住,某些操作(例如在不通知任何人的情况下删除邮件操作)会阻止后续规则应用于邮件。 Other actions such as Forward the message do not allow additional actions. 还可以为规则设置操作,以便在应用该规则时,后续规则不会应用至邮件。 下表描述了传输规则中可用的规则属性。 EAC 中的属性名称 PowerShell 中的参数名称 说明 优先级 Priority 指示规则应用于邮件的顺序。 默认优先级基于规则创建的先后顺序(较早规则的优先级高于较新规则的优先级,先处理具有较高优先级的规则,然后再处理具有较低优先级的规则)。 通过在规则列表中上移或下移规则可更改 EAC 中规则的优先级。 在 PowerShell中,可设置优先级编号(0 表示最高优先级)。 例如,如果有一个拒绝包含信用卡号码的邮件的规则,还有一个需要批准的规则,你希望拒绝规则先发生,并停止应用其他规则。 有关详细信息,请参阅 设置传输规则的优先级。 模式 Mode 可以指定是否让规则立即处理邮件,或是否在不影响邮件传递(启用或不启用数据丢失防护或 DLP 策略提示)的情况下测试规则。 策略提示在 Outlook 或 Web 上的 Outlook 中显示简短说明,该说明可提供有关邮件创建者可能违反策略的信息。 有关详细信息,请参阅策略提示。 有关模式的详细信息,请参阅测试传输规则。 在以下日期激活此规则 在以下日期停用此规则 ActivationDate ExpiryDate 指定启用该规则的日期范围。 选中或未选中 On 复选框 新规则:New-TransportRule cmdlet 上的 Enabled 参数。 现有规则:使用 Enable-TransportRule 或 Disable-TransportRule cmdlet。 该值显示在规则的 State 属性中。 可以创建一个禁用规则,并在准备测试它时将其启用。 或者,在不删除该规则的情况下将其禁用,以保留设置。 如果规则处理未完成,则延迟邮件 RuleErrorAction 如果无法完成规则处理,可以指定邮件的处理方式。 默认情况下,系统将忽略该规则,但可以选择重新提交邮件进行处理。 匹配邮件中的发件人地址 SenderAddressLocation 如果规则使用检查发件人的电子邮件地址的条件或例外,则可以在邮件标头、 邮件信封或同时在两者中查找该值。 停止处理更多规则 SenderAddressLocation 这是一种规则操作,但它看起来像 EAC 中的属性。 你可以选择在规则处理完某个邮件后,停止向邮件应用其他规则。 注释 Comments 可以输入有关规则的描述性注释。 All messages that flow through your organization are evaluated against the enabled mail flow rules in your organization. 规则按 EAC 中的 “邮件流>规则” 页上列出的顺序处理,或基于 Exchange 命令行管理程序中相应的 Priority 参数值进行处理。 根据组织的已启用传输规则来评估组织中的所有邮件。规则会按照 EAC 中“规则”页中列出的顺序,或者根据 exsdkExMSH中“优先级”exsdkExMSH参数的值执行。 此设置对于与多个邮件流规则中的条件匹配的邮件非常重要, (要将哪个规则应用于邮件?所有?只有一) 通过组织的邮件有几种类型。 下表显示了哪些消息类型可以通过传输规则进行处理。 通过组织的邮件有几种类型。下表显示了哪些消息类型可以通过传输规则进行处理。 能否应用规则? 常规邮件: 包含单个 RTF 格式(RTF)、HTML、纯文本邮件正文、多部分或备用邮件正文集的邮件。 是 Microsoft 365 或 Microsoft Purview 邮件加密:由 Microsoft 365 或 Office 365 加密的消息。 有关详细信息,请参阅 加密。 规则可始终根据检查这些标头的条件来访问信封头并处理邮件。 对于检查或修改加密邮件内容的规则,需要验证是否启用了传输解密(强制或可选;默认为可选)。 有关详细信息,请参阅 Enable or disable transport decryption(启用或禁用传输解密)。 有加密密钥。 有关详细信息,请参阅定义邮件流规则以加密电子邮件。 S/MIME 加密邮件 规则仅可根据检查这些标头的条件来访问信封头并处理邮件。 无法处理具有需要检查邮件内容的条件的规则或可以修改邮件内容的操作。 受 RMS 保护的邮件: 应用 Active Directory 权限管理服务(AD RMS)或 Azure 权限管理(RMS)策略的邮件。 规则可始终根据检查这些标头的条件来访问信封头并处理邮件。 对于检查或修改 RMS 保护的邮件内容的规则,需要验证是否启用了传输解密(强制或可选;默认为可选)。 有关详细信息,请参阅 Enable or disable transport decryption(启用或禁用传输解密)。 已明文签名的邮件: 已签名但未加密的邮件。 是 UM 邮件:统一消息服务创建或处理的邮件,例如语音邮件、传真、未接来电通知,以及使用 Microsoft Outlook Voice Access 创建或转发的邮件。 是 匿名邮件: 匿名发件人发送的邮件。 是 读取报告:为响应发件人的读取回执请求而生成的报表。 读取报表的消息类为 或 。 是 在使用可展开通讯组成员身份的条件定义传输规则时,将由应用该规则的邮箱服务器上的传输服务缓存收件人的结果列表。 这称为 扩展组缓存 ,日记代理也使用它来评估日记规则的组成员身份。 默认情况下,展开组缓存存储组成员身份四个小时。 此外,还将存储由动态通讯组的收件人筛选器返回的收件人。 展开组缓存进行到 Active Directory 的重复往返并避免由于解析组成员身份生成的网络通信。 在 Exchange 2013 中,与展开组缓存相关的此间隔和其他参数是可配置的。 您可以减小缓存过期间隔,或一同禁用缓存,以确保可以更频繁地刷新组成员身份。 必须为通讯组展开查询计划 Active Directory 域控制器上相应的负载增加。 此外,还可以通过重新启动邮箱服务器上的 Microsoft Exchange 传输服务,来清除该服务器上的缓存。 必须在要清除缓存的每个邮箱服务器上执行此操作。 对于使用基于通讯组成员身份的条件的传输规则,在创建、测试这些规则,以及对这些规则进行故障排除时,还必须考虑展开组缓存的影响。 在邮箱服务器上创建和配置的传输规则存储在 Active Directory 中,传输服务将在组织中的所有邮箱服务器上读取和应用这些规则。 创建、修改或删除传输规则时,将在组织中的域控制器之间复制更改。 这允许 Exchange 在整个组织中提供一组一致的传输规则。 注意: 域控制器之间的复制取决于不受 Exchange 控制的因素(例如,Active Directory 网站数量和网络链接的速度)。 因此,在组织中实施传输规则时,需要考虑复制延迟。 有关 Active Directory 复制的详细信息,请参阅使用 Windows PowerShell 进行 Active Directory 复制和拓扑管理简介。 每个邮箱服务器缓存已展开通讯组来避免重复的 Active Directory 查询,以确定组成员资格。 默认情况下,展开的组缓存中的条目将每四个小时过期一次。 因此,在更新展开的组缓存之前,传输规则不会检测到对组成员身份的更改。 要强制在邮箱服务器上立即更新缓存,请重启 Microsoft Exchange 传输服务。 若要强制更新缓存,需要重启邮箱服务器上的服务。 在边缘传输服务器上创建和配置的传输规则存储在服务器上的 AD LDS 本地实例中。 边缘传输服务器上不会自动复制传输规则。 边缘传输服务器上的规则仅应用于通过本地服务器传递的邮件。 如果需要在多个边缘传输服务器上应用同一组传输规则,可以克隆边缘传输服务器配置,或导出和导入传输规则。 有关详细信息,请参阅 边缘传输服务器克隆配置 和 导入或导出传输规则集合。 每当邮箱服务器或边缘传输服务器上的传输服务检测到已修改的传输规则时,在应用程序日志中记录事件事件查看器 (事件 ID 4002 邮箱服务器上的事件 ID 4002,边缘传输服务器上的事件 ID 16028) 。 Exchange 2013 中有两种常见的混合环境方案: 组织的一部分驻留在 Microsoft 365 或 Office 365 的混合部署 在混合环境中,本地 Exchange 组织与 Microsoft 365 或 Office 365 之间没有规则复制。 因此,在 Exchange 中创建规则时,需要在 Microsoft 365 或 Office 365 中创建匹配的规则。 在 Microsoft 365 或 Office 365 中创建的规则存储在云中,而在本地组织中创建的规则存储在本地 Active Directory 中。 在混合环境中管理规则时,通过设置为可同时在两个环境进行更改,或者在一个环境中进行更改,然后导出规则并将其导入到另一个环境中,可使这两个规则集保持同步。 与 Exchange 2010 或 Exchange 2007 共存 与 Exchange 2010 或 Exchange 2007 共存时,所有传输规则都存储在 Active Directory 中并在组织中复制,而不管你用于创建规则的Exchange Server版本如何。 但是,所有传输规则都与用于创建规则的 Exchange Server 服务器版本相关联,并存储在 Active Directory 中特定于版本的容器中。 在组织中首次部署 Exchange 2013 时,所有现有规则都会在设置过程中导入 Exchange 2013。 不过,之后如有任何更改,两个版本必须进行相同的更改。 例如,如果在 Exchange 2013 (Exchange 命令行管理程序中更改现有规则或 EAC) ,则需要在 Exchange 2010 (Exchange 命令行管理程序或 Exchange 管理控制台 (EMC) ) 中进行相同的更改。 也可以从 Exchange 2013 导出规则,并将它们导入 Exchange 2010。 Exchange 2010 无法处理 Version 或 RuleVersion 值为 15 的规则。n.n.n. 若要确保所有规则都可以处理,请仅使用值为 14 的规则。n.n.n. 在 Exchange 2013 中管理传输规则 Exchange 2013 中) 谓词 (传输规则条件和异常 Exchange 2013 中的传输规则操作 传输代理规则引擎drools的rete算法实现原理和事实匹配过程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于规则引擎drools的rete算法实现原理和事实匹配过程、规则引擎drools的rete算法实现原理和事实匹配过程的信息别忘了在本站进行查找喔。
未经允许不得转载! 作者:谁是谁的谁,转载或复制请以超链接形式并注明出处。
原文地址:http://wjteh.opensoft-fs.com.cn/post/23301.html发布于:2026-04-08



