简单状态机Workflow基于Web应用【转】
2007-09-10 09:11
363 查看
一、实现目的
1、在Web中托管Workflow引擎实现工作流流转。
2、使用持久化的方式存放工作流实例状态。
二、基本原形
报销流程(网上有很成熟的基于工作流的报销流程,我还在这里显摆,唉!)
三、使用到的核心类
WorkflowRuntime、ExternalDataExchangeService、WorkflowInstance、WorkflowPersistenceService
分别在dotnet3.0的一下命名空间中:
System.Workflow.Runtime、System.Workflow.Activities、System.Workflow.Runtime.Hosting
四、工作流项目设计
1、报销流程还是沿用了网上广为流传的那个报销流程的模式(细节上也没有太大的差别),这里简单描述一下:报销者提交报销信息——〉部门经理审批——〉副总经理审批(如果数目小于1000元跳过此环节)——〉财务经理审批——〉出纳确认——〉结束,如果在除提交环节的任何一个环节审批不通过则将打回到提交者进行提交的初始状态。该例子中使用了状态机模式(个人认为状态机的Workflow可以很好的满足我以前开发中的大多数需求)。
2、使用VS2005进行Workflow开发的基本条件网上很多,这里简单的说一下:
dotnetfx3、Visual Studio 2005 Extensions for Windows Workflow Foundation (CHS)[都可以从官方下载]
3、安装好后会在项目模板中出现专门为Workflow工程开发所提供的几个模板
private void OnWorkflowCompleted(object sender, WorkflowCompletedEventArgs instance)
{
// 添加工作流完成后需要的操作
}
七、设计中需要注意的问题
1、如果对状态机工作流发送的事件不是工作流当前的状态中所需要的,则会抛错。
2、因为Web不能保持程序当前的很多状态信息,因此需要自己处理对工作流引擎、实例等的信息保存。
3、在工作流引擎启动之前加载需要的服务和绑定需要工作流处理的事件。
4、同一工作流加载同一服务多次会出错。
5、工作流引擎可以不需要启动动作,而是用创建实例的启动方法来同时启动工作流引擎,但在持久化恢复时需要启动工作流引擎。
因为纯属个人练习性质的项目,该项目代码比较凌乱,且处理逻辑不够清晰,较复杂,而且是第一次写Blog,请大家谅解。谢谢!
使用本例需要改变代码中连接SQL Server数据库的字符串。
本例下载
1、在Web中托管Workflow引擎实现工作流流转。
2、使用持久化的方式存放工作流实例状态。
二、基本原形
报销流程(网上有很成熟的基于工作流的报销流程,我还在这里显摆,唉!)
三、使用到的核心类
WorkflowRuntime、ExternalDataExchangeService、WorkflowInstance、WorkflowPersistenceService
分别在dotnet3.0的一下命名空间中:
System.Workflow.Runtime、System.Workflow.Activities、System.Workflow.Runtime.Hosting
四、工作流项目设计
1、报销流程还是沿用了网上广为流传的那个报销流程的模式(细节上也没有太大的差别),这里简单描述一下:报销者提交报销信息——〉部门经理审批——〉副总经理审批(如果数目小于1000元跳过此环节)——〉财务经理审批——〉出纳确认——〉结束,如果在除提交环节的任何一个环节审批不通过则将打回到提交者进行提交的初始状态。该例子中使用了状态机模式(个人认为状态机的Workflow可以很好的满足我以前开发中的大多数需求)。
2、使用VS2005进行Workflow开发的基本条件网上很多,这里简单的说一下:
dotnetfx3、Visual Studio 2005 Extensions for Windows Workflow Foundation (CHS)[都可以从官方下载]
3、安装好后会在项目模板中出现专门为Workflow工程开发所提供的几个模板
private void OnWorkflowCompleted(object sender, WorkflowCompletedEventArgs instance)
{
// 添加工作流完成后需要的操作
}
七、设计中需要注意的问题
1、如果对状态机工作流发送的事件不是工作流当前的状态中所需要的,则会抛错。
2、因为Web不能保持程序当前的很多状态信息,因此需要自己处理对工作流引擎、实例等的信息保存。
3、在工作流引擎启动之前加载需要的服务和绑定需要工作流处理的事件。
4、同一工作流加载同一服务多次会出错。
5、工作流引擎可以不需要启动动作,而是用创建实例的启动方法来同时启动工作流引擎,但在持久化恢复时需要启动工作流引擎。
因为纯属个人练习性质的项目,该项目代码比较凌乱,且处理逻辑不够清晰,较复杂,而且是第一次写Blog,请大家谅解。谢谢!
使用本例需要改变代码中连接SQL Server数据库的字符串。
本例下载
相关文章推荐
- 简单状态机Workflow基于Web应用
- 简单状态机Workflow基于Web应用
- 简单状态机Workflow基于Web应用
- 简单状态机Workflow基于Web应用
- 简单状态机workflow基于web应用
- 简单状态机Workflow基于Web应用
- 分布式Web应用----基于Socket+动态代理实现简单RPC 生产者消费者模型
- 基于 OSGi 和 Spring 开发 Web 应用
- Python基于twisted实现简单的web服务器
- 基于SSH框架的Web应用中,web.xml的配置
- VS2008 Workflow 的基本概念和简单应用
- windows workflow foundation在WebApplication中的应用,使用StateMechineWorkflow
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- Web应用中基于组的用户权限管理在Spring框架下的实现
- 最简单的JavaWeb应用结构
- 基于Web的建筑智能化系统集成组态软件的设计与应用
- Web应用程序如何应用报表服务来展现报表内容(实例基于SQL Server 2005 Report Service)
- CXF Web Service简单应用
- WEB应用之:JS className 的简单操作
- 使用Nightwatch.js做基于浏览器的web应用自动测试