流程设计器 - Silverlight 3实现(附源码)

本文介绍了一位开发者基于WF框架,使用Silverlight自研的一款工作流设计器,旨在简化复杂业务流程的开发。该设计器提供了开始、功能环节、条件分支、连线及结束等基本节点类型,能够构建出包括员工请假申请在内的多种复杂流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    这两年用MOSS+Infopath方式做了很多的工作流程, 在惊叹于微软强大的同时,也在为这种复杂的开发而痛苦。Infopath表单易于设计,通过InfoPath Form Service在浏览器上给用户的体验效果也很好,苦恼的是在VS2005里做流程的逻辑设计和数据持久化既然麻烦又容易出错。要是工作流逻辑功能的设计跟Infopath的设计一样的简单就好了,要使工作流的逻辑开发变得简单估计自己开发一个简单易用流程设计器也许能行。如果以WF为基础,自己封装一层流程逻辑处理,在此基础上开发一个图形化的流程设计器,流程设计器最终出来一个XML文件,传给自己的流程逻辑处理层,流程逻辑处理层解析这个XML文件,最终生成对应的WF流程定义。 曾经在思维加速的Justep平台上做过流程开发,Justep平台上的流程节点类型就只有5种(开始、功能环节、条件分支、连线以及结束),却能用它们开发出各种复杂逻辑的业务流程。经过一段时间的思考,最后决定参照思维加速,用Silverlight开发一个流程设计器出来。经过几个月业余时间的努力,边学Silverlight边做终于把流程设计器大致给开发出来了。开心!

 

下面是Workflow11.Designer的一些截图:

 

1、 流程设计器的节点类型。

1.1 开始

 

1.2 功能环节

 

1.3 条件分支

 

1.4 连线

 

1.5 结束

 

 

2、  流程设计器的主界面

 

3、 流程功能活动环节类型。

3.1、属性界面

  

3.2、审批人界面

 

3.3、环节动作界面

 

 

4、  流程条件分支环节类型。

 

 

5、  流程实例—员工请假申请流程

5.1 员工请假申请流程图

5.2 员工请假申请流程XML

 

请假申请流程xml
<? xml version = " 1.0 " encoding = " utf-8 " standalone = " yes " ?>
< WorkFlow11 UniqueID = " a5abd521-5743-4fc6-aae3-778a9f6a1eb1 " Name = " 新建流程 " >
< WF11Elements >
< WF11Element UniqueID = " 8fadc099-32fb-45e1-bc5a-bc9ccb8238e5 " Title = " 开始 " WF11ElementType = " WF11Start " Left = " 196 " Top = " 18 " ZIndex = " 0 " >
</ WF11Element >
< WF11Element UniqueID = " 36ceaff2-f5f2-41c9-b8cb-a998160e9ed4 " Title = " 新建活动1 " WF11ElementType = " WF11Activity " Left = " 172 " Top = " 95 " ZIndex = " 1 " >
< WF11ActivityProperty >
< rec_no > 0 </ rec_no >
< can_change > False </ can_change >
< can_collect > False </ can_collect >
< allow_repeat > True </ allow_repeat >
< allow_mail > True </ allow_mail >
< allow_note > False </ allow_note >
< allow_track > False </ allow_track >
< track_no > 0 </ track_no >
< approve_type > 1 </ approve_type >
< parallel_rule > 0 </ parallel_rule >
< tmp_no > 0 </ tmp_no >
< order > 0 </ order >
< name > [Null] </ name >
< approver ></ approver >
< desc > [Null] </ desc >
< can_processing > False </ can_processing >
< can_return > False </ can_return >
< can_return_any > False </ can_return_any >
< can_stop > False </ can_stop >
</ WF11ActivityProperty >
</ WF11Element >
< WF11Element UniqueID = " c7277a6d-708d-46f9-8fe2-44d96efac902 " Title = " 连线 " WF11ElementType = " WF11Line " Left = " 225,225,225,225 " Top = " 72,85.5,85.5,99 " ZIndex = " 2 " >
</ WF11Element >
< WF11Element UniqueID = " 025bd6ab-b845-4819-9347-572810c179b8 " Title = " 新建活动2 " WF11ElementType = " WF11Activity " Left = " 172 " Top = " 345 " ZIndex = " 3 " >
< WF11ActivityProperty >
< rec_no > 0 </ rec_no >
< can_change > False </ can_change >
< can_collect > False </ can_collect >
< allow_repeat > True </ allow_repeat >
< allow_mail > True </ allow_mail >
< allow_note > False </ allow_note >
< allow_track > False </ allow_track >
< track_no > 0 </ track_no >
< approve_type > 1 </ approve_type >
< parallel_rule > 0 </ parallel_rule >
< tmp_no > 0 </ tmp_no >
< order > 0 </ order >
< name > [Null] </ name >
< approver ></ approver >
< desc > [Null] </ desc >
< can_processing > False </ can_processing >
< can_return > False </ can_return >
< can_return_any > False </ can_return_any >
< can_stop > False </ can_stop >
</ WF11ActivityProperty >
</ WF11Element >
< WF11Element UniqueID = " e4cac7ec-b6ce-4586-ba5e-b6a396c27937 " Title = " 新建条件1 " WF11ElementType = " WF11Condition " Left = " 153 " Top = " 261 " ZIndex = " 4 " >
</ WF11Element >
< WF11Element UniqueID = " f58ee7dc-d5d2-4a80-9c3f-7fe9363eb37c " Title = " 新建活动3 " WF11ElementType = " WF11Activity " Left = " 332 " Top = " 256 " ZIndex = " 5 " >
< WF11ActivityProperty >
< rec_no > 0 </ rec_no >
< can_change > False </ can_change >
< can_collect > False </ can_collect >
< allow_repeat > True </ allow_repeat >
< allow_mail > True </ allow_mail >
< allow_note > False </ allow_note >
< allow_track > False </ allow_track >
< track_no > 0 </ track_no >
< approve_type > 1 </ approve_type >
< parallel_rule > 0 </ parallel_rule >
< tmp_no > 0 </ tmp_no >
< order > 0 </ order >
< name > [Null] </ name >
< approver ></ approver >
< desc > [Null] </ desc >
< can_processing > False </ can_processing >
< can_return > False </ can_return >
< can_return_any > False </ can_return_any >
< can_stop > False </ can_stop >
</ WF11ActivityProperty >
</ WF11Element >
< WF11Element UniqueID = " 8718248a-9077-4875-9103-1d9951b14136 " Title = " 连线 " WF11ElementType = " WF11Line " Left = " 225.100006103516,225.100006103516,225,225 " Top = " 313,331,331,349 " ZIndex = " 6 " >
</ WF11Element >
< WF11Element UniqueID = " fa7936ba-5186-4272-8658-298a8be104c9 " Title = " 连线 " WF11ElementType = " WF11Line " Left = " 293.200012207031,314.600006103516,314.600006103516,336 " Top = " 289,289,289,289 " ZIndex = " 7 " >
</ WF11Element >
< WF11Element UniqueID = " 34576c71-6bf5-4c8f-acf0-ffb451cb6ed4 " Title = " 新建活动4 " WF11ElementType = " WF11Activity " Left = " 172 " Top = " 181 " ZIndex = " 8 " >
< WF11ActivityProperty >
< rec_no > 0 </ rec_no >
< can_change > False </ can_change >
< can_collect > False </ can_collect >
< allow_repeat > True </ allow_repeat >
< allow_mail > True </ allow_mail >
< allow_note > False </ allow_note >
< allow_track > False </ allow_track >
< track_no > 0 </ track_no >
< approve_type > 1 </ approve_type >
< parallel_rule > 0 </ parallel_rule >
< tmp_no > 0 </ tmp_no >
< order > 0 </ order >
< name > [Null] </ name >
< approver ></ approver >
< desc > [Null] </ desc >
< can_processing > False </ can_processing >
< can_return > False </ can_return >
< can_return_any > False </ can_return_any >
< can_stop > False </ can_stop >
</ WF11ActivityProperty >
</ WF11Element >
< WF11Element UniqueID = " 3bb14852-a9dc-41a4-8a87-084731a8d00e " Title = " 连线 " WF11ElementType = " WF11Line " Left = " 225,225,225,225 " Top = " 157,171,171,185 " ZIndex = " 9 " >
</ WF11Element >
< WF11Element UniqueID = " 328afe8b-753e-40fd-bca3-390096724dee " Title = " 连线 " WF11ElementType = " WF11Line " Left = " 225,225,225.100006103516,225.100006103516 " Top = " 243,254,254,265 " ZIndex = " 10 " >
</ WF11Element >
< WF11Element UniqueID = " 72bf4885-9dc9-4627-b9c3-8d0f2ddeb5d6 " Title = " 连线 " WF11ElementType = " WF11Line " Left = " 274,385,385,385 " Top = " 378,378,318,318 " ZIndex = " 11 " >
</ WF11Element >
< WF11Element UniqueID = " c4a16fa1-c7fe-4200-b608-8c310366d554 " Title = " 结束 " WF11ElementType = " WF11Finish " Left = " 485 " Top = " 260 " ZIndex = " 26 " >
</ WF11Element >
< WF11Element UniqueID = " 7baa69f0-1912-482e-9924-e01823db5f95 " Title = " 连线 " WF11ElementType = " WF11Line " Left = " 434,461.5,461.5,489 " Top = " 289,289,289,289 " ZIndex = " 13 " >
</ WF11Element >
</ WF11Elements >
</ WorkFlow11 >

 

6、源码 <下载>

演示地址:Demo

另:jQuery + svg版

     jQuery + svg版Demo

转载于:https://www.cnblogs.com/eleven11/archive/2010/08/10/Workflow11_Designer.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值