写一个简单的工作流,基于petri网

写一个简单的工作流一直停留在我的“计划”中,最近趁改造绩效系统的机会,决定自己写一个基于petri网原理的工作流来改写绩效考核流程部分。基于petri网的工作流的基本算法,就是当每一个firing发生后,应当遍历整个流程重新改变transition的enable,那么当资源驱动某个transition其实就是将它的输入place中的token转移到输出place。大概的接口类似:

WorkFlowManager wm = new BasicWorkflowManager(this.workFlowDAO);
Token token1 = wm.startWorkFlow(0); //为流程0新启动一个案例
wm.doAction(token1,resource,args);  //传入资源和参数以驱动firing

今天完成了顺序路由和并行路由的实现,选择和循环也准备加入。暂时只实现了内存存储案例数据和流程数据,显然,应当实现一个数据库版本,慢慢来吧。

文章转自庄周梦蝶  ,原文发布时间2007-10-10

时间: 2024-09-15 09:06:35

写一个简单的工作流,基于petri网的相关文章

写一个简单的工作流(二)

    hoho,今天完成了选择路由的实现,完成了配置文件的读写和解析,流程定义文件还是决定采用xml文件,不过与其他工作流引擎采用的xml完全不同,因为是基于petri网的,因此引入了place的概念,比如下面这个4个节点的顺序路由的流程: <workflow maxCases="100">     <node type="start" name="start" id="0">         <

写一个简单的工作流(四)资源的处理

昨天晚上搞到深夜,终于将资源模块搞定.到今天已经完成的功能包括: 1.四种基本路由:顺序.选择.并行.循环 2.流程定义文件和系统配置文件的读取和解析 3.使用内存作为流程数据和案例数据存储的MemoryWorkFlowDAO的开发 4.资源模块的开发 5.并发情况下的正确性测试等     计划中的功能: 1.一个GUI的流程定义工具,这个不急,也还没想好用什么做,web还是桌面? 2.各个数据库版本的WorkFlowDAO的开发,将流程数据和案例数据保存在数据库中. 3.更多的测试和examp

写一个简单的工作流(三)

上午测试了下并发情况下的表现,测试场景:一个有20个节点,包括选择.顺序.并行路由的流程,所有节点都设置为自动执行,1000个线程并发启动案例,也就是这个流程同时有1000个案例在跑,全部跑完结果差强人意,比单线程慢了接近30倍.仔细调整了算法和加锁粒度,尽管整体性能有所提高,但是多线程和单线程间执行的差距仍然没有多大变化,性能瓶颈还是在核心的调度算法上,还需要分析下.测试程序如下: package net.rubyeye.insect.workflow.test; import java.ut

使用Spring来创建一个简单的工作流引擎_Java编程

文章来源:matrix 作者:Steve Dodge 摘要 spring是支持控制反转编程机制的一个相对新的框架.本文把spring作为简单工作流引擎,将它用在了更加通用的地方.在对工作流简单介绍之后,将要介绍在基本工作流场景中基于Spring的工作流API的使用. 许多J2EE应用程序要求在一个和主机分离的上下文中执行处理过程.在许多情况下,这些后台的进程执行多个任务,一些任务依赖于以前任务的状态.由于这些处理任务之间存在相互依赖的关系,使用一套基于过程的方法调用常常不能满足要求.开发人员能够

sdl初学问题-写一个简单文字游戏,需要学什么。

问题描述 写一个简单文字游戏,需要学什么. 简单文字游戏,有界面,有跟新什么的. 水平 初学c语言 初学sdl部分 另外誰有sdl2.0中文教程,给个链接谢谢. 解决方案 中文教程应该是没有的,初学要做游戏的话而且要C语言的话,建议用EasyX.详情可以参考:www.easyx.cn 解决方案二: http://download.csdn.net/detail/frankzdy/3481870 解决方案三: 要看你想用什么做,做成什么样的,个人觉得慕课网和w3cSchool这两个网站不错,知识很

请大神帮忙写一个简单的聚类算法程序,在线等……用matlab或者java实现

问题描述 请大神帮忙写一个简单的聚类算法程序,在线等--用matlab或者java实现 Step1:将N个数据,按照从小到大的顺序排序 d1.d2,.....dn:其中d1时最小值,dn是最大值 聚类判别阈值计算方法为: Step2:让每个数据都作为一个类,那么有 {d1},{d2},{d3},.....{dn} Step3:计算聚类中心 假设共有P个类,那么1<=k<=P,其中r代表每个类中数据的个数,同时计算相邻两个聚类中心之间的距离,如下 Step4:找出相邻两个聚类中心的最小值 Ste

java中用集合写一个简单的登录功能。麻烦大家看一看

问题描述 java中用集合写一个简单的登录功能.麻烦大家看一看 //这是注册的方法 public static void reg(){ Collection id=new ArrayList();//账户 Collection passWord=new ArrayList();//密码 Scanner sc=new Scanner(System.in); System.out.println("请输入账号:"); id.add(sc.next()); System.out.printl

利用MFC写一个Tcp程序,基于事件选择机制建立一个回射服务器(直接把收到的客户端消息发回给客户端)

问题描述 利用MFC写一个Tcp程序,基于事件选择机制建立一个回射服务器(直接把收到的客户端消息发回给客户端) 刚开始学习window套接字编程,很多东西还不大熟,想请高手帮忙写出这个程序作为我学习相关理论的模板 解决方案 http://pan.baidu.com/s/1hs2hKEg分享给你这个视频教程 跟着视频一步一步做可以做一个局域网聊天室 同时学习mfc编程与socket编程

学习servlet,写一个简单的Helloword出现404错误

问题描述 学习servlet,写一个简单的Helloword出现404错误 解决方案 不需要 /servlet 解决方案二: 解决方案三: web.xml内容贴下来看看. 可以参考 我写的http://blog.csdn.net/evankaka/article/details/45151569 解决方案四: url里把[/Hello]改成[/HelloServlet] 和你Web.xml里配置的url-pattern一样. 解决方案五: 一个简单的Servlet 解决方案六: 采用servle