请问那位高手做过‘工作流’组件或项目,给个提示就行。。。(100分)

  • 主题发起人 主题发起人 Criss
  • 开始时间 开始时间
C

Criss

Unregistered / Unconfirmed
GUEST, unregistred user!
工作流(For C/S and B/S)的角色或规则,保存在文件中还是在数据库中,等等。。。
谢谢
 
工作流就是:
“在一个工作群组中,为了达成某一个共同目的而需要多人协力以循序或平行工作的形式来共同完成的任务”
关于工作流的几个名词解释:
任务 : 泛指各种事务上所必需执行的流程性工作
循序或平行工作: 工作的流动性是一个人接着一个人执行,或同时由多人分开执行,或是上述两类工作合并之後的混合性工作
多人 : 若是单人就可以完成的工作,则不能归类为流程工作.凡是一件工作必须经由两个或更多人来协力完成的工作才能称为流程工作
共同目的 : 多人参的流程性工作,必须是以完成共同目的为前提.如果一群人是分别针对不同的专案来执行各别的工作,并不算构成一个工作流程
工作流程的应用范围
在一般的组织活动中,有相当多数量的事务性工作可以被归类到流程性工作的 范围里面,举例如下 :

采购单流程 贷款审核流程 员工绩效考核流程 工作报表呈报流程 各类报表会签流程
如何架构一个工作流程
1:首先要定义出在一个群组工作的环境下,所需要执行或控管的事务性工作性质及其内容
2:根据所定义的工作内容,再将它分成许多子工作,或称为步骤.每个步骤都都包含了在这个阶段所需要完成的项目清单,而且这些步骤内的项目应当是在逻辑上适合在同一步骤内完成的.任何一件流程工作都会有许多不同的方法来分解成许多子工作,而如何切割一个流程工作,则要根据实际的情况来做判断
3:决定各个步骤需要那些专业背景的人员来执行
4:决定各个步骤在流程执行时的顺序
5:在执行的过程中,有些步骤的执行会因为某些条件不同而产生不同的结果,进而影响到下一个步骤的执行.所以我们必须要找出这些特定的步骤,并且将相关的执行状态条件定义清楚
6:将工作流程中的所有执行步骤及每个步骤之间的关系图画出来,并且根据这份关系图来验证流程的可行性.
7:根据各个步骤的不同需求,分别建立各阶段所需要的表单,工作指令,文件…等项目.
 
谢谢,vine.
还要讨教仁兄。有没有可能开发成组件的形式? 最好的‘工作流’设计语言是什么?
用DELPHI是否可以开发出优秀的‘工作流’组件或程序?如果,限定为B/S结构的解决
方案,用什么语言开发较好?
 
先对流程的事务、流向、处理人做定义,每跑一个事务往流程日志中写记录,根据流程日志来控制流程的流向
 
各位请继续
 
同意yaan,当一个工作流流向下一个用户时,给该用户添加一个日志,状态为待处理
状态(具体有很多状态),并修改上一个用户的日志记录为已处理。
 
可以参考一下 www.justep.com 的产品!(不是做广告,我用过的!)
 
可以考虑建立以下几个数据表:人员、流程、事务、流向、日志。
其中,事务表对应着每个业务处理模块,同时定义处理该业务的人员;流向表记录每个事务所对应的下级事务和它的传递条件;日志表包括事务编号、人员编号和状态(如iamcaca所说)等。流程启动时往日志表插入新记录(事务编号为该流程的第一个事务,状态为未处理),此后根据日志表来查找人员所应处理的事务,处理完毕后改写日志表中的状态(已处理),然后再根据流向往日志表插入新的记录(未处理),如此循环往复直至流程结束。
 
>>yaan
是否需要有一个监控的功能?靠什么监督流程的执行情况呢?
如果一个或多个流程需要监督(像时间限制等)?
 
可以考虑在事务表中加入考核时间的字段、在流程日志表中加入开始时间与结束时间,
这样就可以在流程查询的时候就根据事务的开始时间、系统的当前时间和事务的考核
时间判断流程的每个事务是否超时。
同时还可以增加一个工作日志表,每跑一个流程就往上面增加一条记录,与流程日志
表一样根据工作日志表的开始时间、结束时间和流程的考核时间来判断整个流程是否
超期。
 
>>Yaan
思路清楚了。
除了 macrowdw 提供的例子,还有没有更有代表性的例子,可供参考。
不过, macrowdw 提供的justep例子比较复杂,似乎是包含了许多其它的内容。
另外,能否将其做成组件的形式?我的意思是独立的包的形式?
 
to vine,
转贴请著名出处~!:)
我帮你:来自:http://www.inprises.com/workflow/index.htm
男儿有志当凌云
 
workflow有多种实现方式;
开放源码的http://www.vivtek.com/wftk/,其原理是利用C+XML+简单的DB进行工作流实现;
Oracle的workflow是JAVA组件+Oracle数据库;
其实,实现方法主要根据你的需求来设计,简单的可以利用XML或DHTML文件就可以实现,复杂的应用
就需要数据库和组件支持;
工作流主要实现功能大体有:审批、消息、预警和部分定制工作流程等;
在结构分析包括:角色、人员、流程、任务、消息、日志等;
附有共享文档一份,希望有参考,也可以下载开发源码WFTK;
工作流工具箱:开放源码项目的案例研究
赞助开放源码开发可以使每个相关人员受益
内容:
开放源码可能是强大的
什么时侯 OS 项目失败
商业企业的担忧
什么是工作流?
商业工作流系统
无 OS 工作流的系统
有赞助的开放源码
WFTK 概况
OS 经验
参考资料
关于作者

开放源码工作流工具箱 (WFTK) 是一种任务管理和工作流系统。这是一种新开放源码开发模式(即赞助基金)的一个极佳范例。本文给出了 WFTK 技术概述;描述该项目的历史;并讨论有赞助的开放源码模式给每个相关人员(包括赞助人、开发者和社区)带来的好处。
开放源码可能是强大的
尽管有关开放源码软件开发的新闻报导大部分集中在 Linux 的突然和出人意料的成功方面,但其它开放源码项目实际上占有更大的市场份额:Apache Web 服务器占有 70% 的 HTTP 服务器市场, sendmail 处理着因特网上大约 90% 的电子邮件业务,而 BIND 对 DNS 服务提供的解决方案是如此成功,以至于基本上没有它这种级别的商业产品。(域名系统是通用的分布式复制的数据查询服务,用于将主机名转换成网际地址。)
但 Linux 正在面对 Microsoft Windows 这样个业界巨擘而成长起来,并开始占据它自己的份额,这吸引了分析家的注意。
开放源码软件的构思很简单:所有用户都享有对产品源代码的自由访问。拥有对源代码的自由访问对软件用户意味着三个基本意义:可以随意查找和修改它们自己安装中的错误;有最大的自由集成和定制软件;并且给予他们对软件的完全控制以适应个别需要。 Linux 开发的效率已成为开放源码模型中最著名的成功案例之一。在许多情况下,操作系统中的“臭虫”是在发现后几个小时内修复的。
什么时侯开放源码项目失败
开放源码项目失败的一个解释是开放源码开发文化的本质具有随意性。典型的开放源码项目是在程序员有需要时(“期待解决的问题”)启动的。程序员为满足需要而使用工具的第一次运行构成了新项目的核心。如果它是不错的工具,并解决了一般问题,从理论上说,该项目就可以吸引许多用户。这些用户中就有新一代的核心开发者。因此,一个健康的社区就可以进行开发并日趋稳定。如果项目的用户社区足够大,它甚至还能负担商业支持供应商、付费开发者等等的费用。(这些当然是 Linux 见证的现象,但其它还包括 sendmail 和 Apache。)
但这种方法会因许多原因而失败。项目的受重视级别可能不够高。实现太专门化,或者开发者没有足够的时间或对将工具推向市场没有兴趣。例如,开发领导人在可能这个社区稳定之前得到另一份工作,或者整个项目在有进展之前失去动力。因为开放源码开发通常是没有报酬的工作,所以在现实世界中要持续成功运行开放源码项目很难。
商业企业害怕将开放源码作为解决方案
在企业市场中,开放源码通常被看作是一个危险的提议。如果公司将其解决方案基于开放源码项目,而后来失败了,究竟会发生什么呢?但如果您仔细考虑,就会认识到这种观点是基于对开放源码项目的错误理解上的,而比起那些专有的项目,开放源码项目不再失败或很少失败。开放源码主要是代码开发和维护的一种方法,因此选择使用开放源码解决方案的企业总能在最初的开发阶段中节省金钱。
企业管理者更倾向于封闭源码商业解决方案的理由是基于这样一种观念,即在有故障情况下必须有某人负责。但如果您阅读了任何一个软件包的许可证条款,就会注意到软件公司从来都不同意在出现故障情况下负责。最近,评估 Microsoft Outlook 中由于电子邮件蠕虫病毒利用已知安全性问题所造成的损失就能够很好地证明这点。合同中没有规定 Microsoft 要补偿这些损失。
所以,开放源码能够象适合开发者和应用程序的用户那样很好地适合应用企业。当然,参与任何开放源码项目的企业也有益于项目。现在,让我们看一下工作流系统是如何使赞助资金模型适用于开放源码项目的。
究竟什么是工作流?
如果回忆一下,就会发现这篇文章是有关工作流工具箱的。那么,什么是工作流?工作流系统使协调自动化。可以通过两种途径来了解这一点。一种工作流的观点是将一组任务指派给组织中某个人(或程序)。从以上观点来看,工作流系统所做的就是协调谁来执行和何时执行。因此,如果我请购一把椅子,我不用从管理员处获得书面的表单,填好,然后通过内部邮件发送给采购部门,而只需要启动一个工作流进程。工作流系统知道谁需要不经签字而批准请购,需要通知谁去采购,并且系统能够相应地创建任务。可以明确地将这些任务指派给各人,也可以从“部门人员”列表中选择他们。任务完成后,工作流引擎跟踪下一步将发生的事件。
这是一种观点。另一种工作流的观点是从过程方面:可以将进程看作通过许多人(或程序)的努力而随时间构建起来的数据结构。工作流引擎协调进程。所以可以发现,工作流引擎也可以作为无数实用 Web 应用的基础、客户服务状态报告页面等等。如果在对复杂 Web 应用程序进行任何类型的编码,您有可能已在使用工作流。但如果正式将工作流引入引擎中,可能做得不够好。
商业工作流系统
如您想象的那样,现在工作流市场已经饱和。有超过 40 种已知的商业工作流应用程序。而 Microsoft 还在竭力尝试进入工作流市场。为什么呢?
经济原因是显而易见的。在相当大的组织中安装的一个典型工作流需要的现金花费难以想象:通常在服务器和每用户上的费用相当高。几乎要一直雇佣供应商以定制产品。为了将商业实践整理为正规的工作流处理等,还有为牵涉到的人员和/或工作流分析员提供的培训课程。类似的问题还有很多。光是一个比较小的 FileNet Workflow 安装的软件许可证费用就要花费大约五万美元。而一个实际工作中的典型工作流系统需要有百万资金。简而言之,工作流市场蕴含着无尽的宝藏。
没有开放源码工作流系统
和所有钟意于工作流的人一样,您可能认为市场上已经有某些种类的开放源码系统了。但事实上,大多数开放源码程序员都不为企业工作。他们通常是大学里的工作人员或独立的咨询师(象我一样)。极少数情况下,企业会从头开发自己的工具,基本上没有机会让这些工具的源码公开。但管理层就不是那么考虑的了。
因此当 Galactic Marketing 确定他们需要工作流系统后,就全面考虑了商业解决方案的定价,并在意识到商业解决方案提供的是唯一唾手可得的解决方案后,他们就发现有期待解决的问题。唯一的障碍是他们不是程序员。
有赞助的开放源码:两种世界的最佳选择
进入 SourceXchange。SourceXchange 是由 Collab.net 提供的一个站点,该公司是尝试开放源码业务的公司。 SourceXchange 的设想是提供一个赞助商可以发布项目、相当详细的说明书和一笔愿意支付的资金的所在地。然后,有兴趣的开发者可以为这些项目做计划。所产生的代码必须是开放源码。赞助商和开发者共享版权,所以替代许可证和进一步开发不需要受开放源码许可证支配。
因此 Galactic Marketing 在 SourceXchange 上发布一个工作流系统的 RFP (建议请求)。我赢得了这个合同。然后有了 WFTK。Galactic 为最初的开发和部分代码所有权付费。
这种合作伙伴关系的关键在于开放源码编程不需要是人们经常假设的自愿项目。有关企业环境中开放源码的一个批评是,更改由于是随意答应的,所以可能花费很长的时间也不能完成。(让我们暂时忽略商业应用供应商经常也有类似行为。)为什么企业希望有人能在自愿基础上工作来适应他们的日程安排呢?答案到现在应该很明显了:如果您现在有问题,那么需要为解决方案付钱。SourceXchange 不是可以安排这类事务的唯一地方。最近提供这些服务的站点正在不断涌现。但 SourceXchange 是有组织的,他们已有很多经验,并且已在企业和开放源码界建立了良好的声誉。
开放源码工作流工具箱概况
WFTK 项目的构思过去是(现在也是)有以下特性的引擎
· 实用,能够嵌入任意 Web 应用程序。
· 易于使用和安装
· 易于与现有基础设施集成
· 易于定制
· 包括用于管理开放任务/进程的用户界面 (UI) 和编辑进程定义的 UI。
换句话说,开放源码工作流工具箱不只是包括源代码的简单工作流引擎。开放源码开发和开放源码工作流工具箱的实际强度在于您不必隐藏任何东西。没有商业秘密。您可以对任何希望使用的事物进行操作,并可以争取您所需的任何应用程序。只要能满足赞助商的需要,就允许您对它花费更多精力。在一段长时间后,额外的努力将得到回报。
WFTK 的基本设置由以下模块组成:
· 核心引擎
核心引擎负责实际执行的工作流。因此,如果有一个活动的进程,并且一个任务刚刚完成,我就告诉核心引擎,它就更新进程的状态,确定下一步发生什么,并给我结果信息。每个进程的状态都存储在名为 "datasheet" 的 XML 文件中,后者存储在中央目录里。
· 任务管理器
尽管可以将核心引擎认为是完整的工作流系统(将满足许多工作流应用程序的要求),还是可以使用任务管理器来维护板上有关活动进程的信息。原型系统中的任务管理器组件是以 PostgreSQL 实现的数据库,并包括一个作为 AOLServer/Tcl 代码实现的全功能 UI。任务管理器通过将它作为命令行程序调用来与核心引擎进行通话。它从核心引擎中获取任务激活通知,并使用它们来在数据库中创建任务记录。因此,有关“我拥有哪些任务”的全面查询非常容易得到答案。任务管理器也可以安排核心引擎根本不管理的特殊任务(执行任务列表项)。
· 进程定义管理器
procdef 管理器维护着 procdef 资源库。 procdef 资源库是一个有效的用于进程定义的简单文档管理和版本控制系统。这样做的原因是个别的进程可以在很长的一段时间内保持活动状态。如果个别进程下的进程定义有更改,肯定会发生大混乱。因此资源库确保工作的进程总是来自用于启动它的那个进程定义的同一版本。另外,procdef 管理器提供了一个简单的编辑 UI 用于创建测试版本的进程、修改它们,以及(不管怎样,很快)在“沙箱”中测试它们。
· 用户管理器
某些时侯,在所有组件中包括 LDAP(轻量级目录访问协议)是个不错的想法,但对目前来说,以及对我们当中不使用 LDAP 的人来说,WFTK 包括了一个简单的用户管理器。每个用户都用一个 XML 文件表示,许可权是集中管理的。
WFTK 中的每样事物都用 XML 文档表示。"expat" 语法分析器 -- 也是一个开放源码产品(由 James Clark 开发)-- 对文档进行语法分析;一旦装入全功能操作 API,它也对文档使用。
一个典型的工作流进程定义可能看上去如下(实际上,这是设计的第一种用法方案):
<workflow name="Purchase request" author="Michael michael@vivtek.com">
<role name="Supervisor"/><role name="Purchasing"/><role name="Accounting"/><role name="Receiving"/>
<data name="Product requested" type="string"/><data name="Reason for request" type="string"/><data name="Requester's email" type="string"/>
<sequence>
<task label="Approval" role="Supervisor"><data name="Approval code" type="string"/></task><if expr="${Approval code} == 'No'"><situation name="Request rejected"/></if><task label="Order item" role="Purchasing"><data name="Purchasing record" type="string"/></task><alert type="email" to="${Requester's email}">Your request for the purchase of ${Product requested} has been approved and theorder was placed. The purchasing record is ${Purchasing record} if you need tocontact Purchasing for inquiries.</alert><alert type="role" to="Accounting">An order for ${Product requested} has been placed.</alert><alert type="role" to="Receiving">An order for ${Product requested} has been placed. Expect delivery.</alert><parallel><sequence><task label="Receive ${Product requested}" role="Receiving"></task><alert type="email" to="${Requester's email}">Your requested ${Product requested} has arrived.</alert>
</sequence>
<task label="File invoice" role="Accounting"><data name="Invoice number" type="string">INV309843</data></task></parallel><task label="Pay invoice" role="Accounting"/><alert type="role" to="Purchasing">The purchase has been paid.</alert>
</sequence>
<handle situation="Request rejected"><alert type="email" to="${Requester's email}">Your request for ${Product requested} has been rejected by your supervisor.</alert>
</handle>
</workflow>
我不会在此说明任何代码分析的详细信息。请访问项目站点(下面列出)获得深入信息。但在代码示例中包括的内容可以让您体会到 XML 定义看上去是怎样的。
在此,我希望说明几个有趣的要点。首先,请注意任务和其它操作的标题可以取决于为特定情况收集的数据。实际上,过程本身的描述可以取决于在启动过程时所收集的数据。您可以为警告和通知进行编码,作为进程的一个完整部分。通过电子邮件接收到的数据稍后将添加到引擎中,可以允许非常大的灵活性。
另外,特定的数据项可以在过程中的任何时侯收集。任务管理器根据过程定义构建一个表单,用户可以使用表单来完成任务。所有收集的数据就都成为过程数据表的一个部分,使报告每个个别进程的状态非常简便。
开放源码的经历
WFTK 是我在开放源码环境中开发的第一次经历。一方面,最初时我非常担心我的代码对公众可见。但它是编写更完善代码的激励,当然它也非常好地为我的代码提供了文件证明。我还能在别的什么地方说明为获得原型所走的那些捷径呢?
但开放源码世界最突出的方面是人们可以突然发电子邮件给我,提供有关可能工具的一些非常有价值的建议、我所犯的错误、可能的扩展等等。我刚接到来自印度的一个大学班级小组对我的引擎一部分的 Rational Rose 实现。我和大学师生、空军工具使用者和其它项目的维护者有过深入的交谈,探讨有关工作流设计的问题。开放源码的公开性对这个项目提供的质量远远高于我以前所做的任何一个项目。
参考资料
· 研究另一个案例:Bishamon-日本国天皇有关使用开放源码的经验。
· 免费 Open Source Software Educational Society 提供了开放源码编程的技术信息。
· 转至 Open Source Page,获得有关开放源码的更详细概述和介绍。
· Hungry Programmers 站点提供了专用于公开代码源码的新闻、产品、人物和地点的列表。
· Opencode.org 是参与促进开放源码商业模型的产业联合会。
· Open Source Writers Group 将作者、程序员和开放源码项目放在一起。
· OsOpinion.com 是有关开放源码界的开放论坛。
· 阅读 The Cathedral and the Bazaar,这是 Eric S. Raymond 的论文,勾画了开放源码移运动的基本原理。他说明了使用他自己编写 fetchmail 的经历的一些观点。
· 阅读 Bruce Perens 撰写的 "The Open Source Definition"。
· 仔细阅读虚拟圆桌讨论,Should Public Policy Support Open Source。
· SourceXchange 站点可以为您提供许多有趣的新项目。他们也把旧的项目进行了归档。
· WFTK 项目主页包含了所有关于项目状态、它的目的、最初的用法方案、详细记载的代码、下载、讨论组和其它有用内容中您可能需要的信息。
关于作者
Michael Roberts 已有十三年的代码开发经验,但开发公开代码只有五个月。可以与 Michael Roberts 联系,他的电子邮件地址是 michael@vivtek.com,或访问他的网站。

 
从事工作流的工作,推荐一个站点(清华大学自动化系教授的)
http://www.simfolw.net 希望对你有帮助。
 
www.wrox.com PROFESSIONAL ASP XML 19章有一个案例,可以下载
 
>>luweizhong:
您给的网址打不开。
不过还是非常感谢。
 
对不起,写错了。
www.simflow.net
 
http://www.developres.com/dispdoc.asp?id=867
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部