放假了,导师让我们几个学点东西,留了寒假作业(好久没有听说过这个词了)。
希望完成下面的问题的程序设计之一:
1.设计一个简单的“有限状态机”;
2.设计一个简单的“规则引擎”;
3.设计一个简单的“工作流引擎”;
4.设计一个简单的人工智能算法(要求是产生式专家系统,自学习系统等);
要求:
1.例子自己选,如电梯运动,下象棋,走迷宫及最短路等;
2.先做功能说明;
3.源码注释清楚;
4.用什么语言均可,建议用c#,c;
5.数据(规则)和程序分开。
希望完成下面的问题的程序设计之一:
1.设计一个简单的“有限状态机”;
2.设计一个简单的“规则引擎”;
3.设计一个简单的“工作流引擎”;
4.设计一个简单的人工智能算法(要求是产生式专家系统,自学习系统等);
要求:
1.例子自己选,如电梯运动,下象棋,走迷宫及最短路等;
2.先做功能说明;
3.源码注释清楚;
4.用什么语言均可,建议用c#,c;
5.数据(规则)和程序分开。
2、查找表[状态、事件、动作],稍微做了一点改进。有点类似MFC的雏形。
3、在以上基础上做的一些改进或者变体。
[比如用一个栈结构,激活的状态位于栈顶,自动的映射事件和动作的对应,再或者通过一些巧妙的宏等手段进行包装。但是线性结构在实际中使用比较受限、过于技巧性的宏比较难于理解...]
4、面向对象的设计下、灵活运用模式。如上面给出的链接。重用性和灵活性方面都有不错的表现。沿袭类似的设计思路、根据实际开发内容进行改造后利用。
工作流引擎(Workflow Engine )
所谓工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。例如开发一个系统最关键的部分不是系统的界面,也不是和数据库之间的信息交换,而是如何根据业务逻辑开发出符合实际需要的程序逻辑并确保其稳定性、易维护性(模块化和结构化)和弹性(容易根据实际业务逻辑的变化作出程序上的变动,例如决策权的改变、组织结构的变动和由于业务方向的变化产生的全新业务逻辑等等)。 Workflow 引擎解决的就是这个问题:如果应用程序缺乏强大的逻辑层,势必变得容易出错(信息的路由错误、死循环等等)。
比较 工作引擎:JBPM和WF:JBPM设计精辟(我曾单步跟进过JBPM的源码),但是有一致命的缺陷:由于采用对象间的关系设定,对象设计过于追求完美,造成提取一些信息组合时显得很繁琐。同时也会造成多并发状态中产生数据表的死锁。(Sql server 下尤为明显) 对于JBPM的评价,可能是我只懂了些皮毛,扭曲了一些东西吧。
Wf:MS在fx3.0推出的后时代的3剑客之一。经过一些使用,我更觉得它适合于代码间的逻辑流程。希望他愈来愈好;
Drool:这个东西好!
以上的这些是我从网上搜集到的,只是一些概念!
1. 将初始数据(fact)输入Working Memory。
2. 使用Pattern Matcher比较规则(rule)和数据(fact)。
3. 如果执行规则存在冲突(conflict),即同时激活了多个规则,将冲突的规则放入冲突集合。
4. 解决冲突,将激活的规则按顺序放入Agenda。
5. 使用规则引擎执行Agenda中的规则。重复步骤2至5,直到执行完毕所有Agenda中的规则。
3.设计一个简单的“工作流引擎”; 我都怀疑你们老师自己能不能写出来.
这些东西,有现成的开源代码.不过作者都是大师级别的人物.我用过一个parse的开源的东西,里面的东西好抽象.
至于工作流,不但要搞清楚工作流的相关背景理论,做其表现也很花功夫.
手上也有个轻量级工作流的demo代码,虽然不是很晚上,但是核心意思已经足够说明了。
我也只是简单的研究了一下,为以后的应用留一个参考和备份。你们老师真会扯蛋.
CSDN上朋友以后买票都找你了