楼主: ziyi0808

[原创] 跟我一起使用vs2008开发工作流

[复制链接]
论坛徽章:
0
31#
发表于 2008-3-19 14:56 | 只看该作者
为了更好的学习工作流,我现在自己设计了需求,全部是工作流方面的。不知大家是否有兴趣一起研究呀!
我的联系方式如下:
skype:wuyeliuming
msn:xyt198201@hotmail.com

[ 本帖最后由 brantxu 于 2008-3-21 16:13 编辑 ]

使用道具 举报

回复
论坛徽章:
26
会员2007贡献徽章
日期:2007-09-26 18:42:10奥运会纪念徽章:皮划艇激流回旋
日期:2008-04-25 10:30:05奥运会纪念徽章:摔跤
日期:2008-04-24 10:00:18奥运会纪念徽章:游泳
日期:2008-04-24 10:00:07奥运会纪念徽章:现代五项
日期:2008-04-23 15:45:08奥运会纪念徽章:篮球
日期:2008-04-23 12:45:11生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36
32#
 楼主| 发表于 2008-3-20 11:27 | 只看该作者
VS2008顺序工作流你的效率损耗在哪里?


WinForm的代码:其中两个文本框 用于输入用户名、密码    一个按钮 用于执行

    Public Sub RunWorkFlow(ByVal WFDictionary As Dictionary(Of String, Object))
        runtime = New WorkflowRuntime
        '实例化工作流实例
        Dim Instance As WorkflowInstance = runtime.CreateWorkflow(GetType(Workflow1), WFDictionary)
        '开始执行工作流实例
        Instance.Start()
        '释放占用资源
        runtime.Dispose()
    End Sub

    ''' <summary>
    ''' 点击开始执行工作流程序
    ''' </summary>
    ''' <param name="sender">状态参数</param>
    ''' <param name="e">状态参数</param>
    ''' <remarks></remarks>
    Private Sub BTStartWF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTStartWF.Click
        UserName = TBUserName.Text.Trim
        PassWord = TBPassWord.Text.Trim
        dictionary = New Dictionary(Of String, Object)
        dictionary.Add("UserName", UserName)
        dictionary.Add("PassWord", PassWord)
        RunWorkFlow(dictionary)
    End Sub

使用道具 举报

回复
论坛徽章:
26
会员2007贡献徽章
日期:2007-09-26 18:42:10奥运会纪念徽章:皮划艇激流回旋
日期:2008-04-25 10:30:05奥运会纪念徽章:摔跤
日期:2008-04-24 10:00:18奥运会纪念徽章:游泳
日期:2008-04-24 10:00:07奥运会纪念徽章:现代五项
日期:2008-04-23 15:45:08奥运会纪念徽章:篮球
日期:2008-04-23 12:45:11生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36
33#
 楼主| 发表于 2008-3-20 11:27 | 只看该作者
Workflow的代码  其中对用户名密码做验证  成功or失败都会弹出相应对话框

Public Class Workflow1
    Inherits SequentialWorkflowActivity
    Private LoginCheck As Boolean
    Public Property UserName() As String
        Get
            Return GetValue(UserNameProperty)
        End Get

        Set(ByVal value As String)
            SetValue(UserNameProperty, value)
        End Set
    End Property

    Public Shared ReadOnly UserNameProperty As DependencyProperty = _
                           DependencyProperty.Register("UserName", _
                           GetType(String), GetType(Workflow1))

    Public Property PassWord() As String
        Get
            Return GetValue(PassWordProperty)
        End Get

        Set(ByVal value As String)
            SetValue(PassWordProperty, value)
        End Set
    End Property

    Public Shared ReadOnly PassWordProperty As DependencyProperty = _
                           DependencyProperty.Register("PassWord", _
                           GetType(String), GetType(Workflow1))
    ''' <summary>
    ''' 验证成功
    ''' </summary>
    ''' <param name="sender">状态参数</param>
    ''' <param name="e">状态参数</param>
    ''' <remarks></remarks>
    Private Sub LoginSuccess_ExecuteCode(ByVal sender As System.Object, ByVal e As System.EventArgs)
        MsgBox("Login Success")
    End Sub
    ''' <summary>
    ''' 验证失败
    ''' </summary>
    ''' <param name="sender">状态参数</param>
    ''' <param name="e">状态参数</param>
    ''' <remarks></remarks>
    Private Sub LoginFailure_ExecuteCode(ByVal sender As System.Object, ByVal e As System.EventArgs)
        MsgBox("Login Failure")
    End Sub
    ''' <summary>
    ''' 验证方法
    ''' </summary>
    ''' <param name="sender">状态参数</param>
    ''' <param name="e">状态参数</param>
    ''' <remarks></remarks>
    Private Sub NamePwdChecked_ExecuteCode(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If (UserName.Equals("aa") And PassWord.Equals("bb")) Then
            LoginCheck = True
        End If
    End Sub
End Class

使用道具 举报

回复
论坛徽章:
26
会员2007贡献徽章
日期:2007-09-26 18:42:10奥运会纪念徽章:皮划艇激流回旋
日期:2008-04-25 10:30:05奥运会纪念徽章:摔跤
日期:2008-04-24 10:00:18奥运会纪念徽章:游泳
日期:2008-04-24 10:00:07奥运会纪念徽章:现代五项
日期:2008-04-23 15:45:08奥运会纪念徽章:篮球
日期:2008-04-23 12:45:11生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36
34#
 楼主| 发表于 2008-3-20 11:27 | 只看该作者
现在的问题是  一个用户验证需要 2-3 秒钟左右才能完成(还没有数据库操作,还只是一个逻辑)!
我的测试方法:代码断点跟踪测试
结论:感觉所有的效率都损耗在 Workflow1的逻辑验证部分

是vs2008的工作流引擎问题还是我个人的代码问题?
如果说这种效率提高不上去,那么这种逻辑分离又有什么优势呢?
想听一下业内高人对此的解说!

[ 本帖最后由 ziyi0808 于 2008-3-20 12:07 编辑 ]

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
35#
发表于 2008-3-21 09:28 | 只看该作者
thanks!

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
36#
发表于 2008-3-22 11:40 | 只看该作者
工作流本身当然可以用在身份验证,就像规则引擎可以用在身份验证上一样,但基本上都是杀鸡用牛刀。

使用道具 举报

回复
论坛徽章:
26
会员2007贡献徽章
日期:2007-09-26 18:42:10奥运会纪念徽章:皮划艇激流回旋
日期:2008-04-25 10:30:05奥运会纪念徽章:摔跤
日期:2008-04-24 10:00:18奥运会纪念徽章:游泳
日期:2008-04-24 10:00:07奥运会纪念徽章:现代五项
日期:2008-04-23 15:45:08奥运会纪念徽章:篮球
日期:2008-04-23 12:45:11生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36生肖徽章2007版:鼠
日期:2008-01-31 11:12:36
37#
 楼主| 发表于 2008-3-24 13:13 | 只看该作者
原帖由 yining 于 2008-3-22 11:40 发表
工作流本身当然可以用在身份验证,就像规则引擎可以用在身份验证上一样,但基本上都是杀鸡用牛刀。


我的意思是一个身份验证就会耗去那么多资源
那么 流程多的时候会是一个什么样子?资源损耗在哪里?

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
38#
发表于 2008-3-25 23:08 | 只看该作者
首先,你要搞清楚工作流的应用场景。基本上的应用都是在单位、部门协作以及处理方面,比如一个部门提交的报告需要多个部门审批,然后根据审批结果或者呈报下一部门或者返回呈报单位。那么这种流程的配置就是一个基本的工作流配置。工作流引擎的基本功能在于能够支持状态的持久化和状态之间按照规则的跳转。jBPM在这方面做得比较好,它的流程基本上都可以通过XML来进行配置。但是我觉得微软的流程似乎是固定下来的,通过UI设计之后直接以对象化的方式固化,这个实际上丧失了相当大的灵活性。因为工作流引擎的一大作用在于预定义各个工作状态或阶段的模块,然后通过配置的方式对工作的流程进行组合。所以我说首先拿工作流引擎做这个东西是杀鸡用牛刀。其次,流程之间的跳转基本没有实时性可言,所以浪费多一点时间没有任何问题。至于资源的损耗那就只有跟踪代码找到了。或者直接用Profiler。不知道2008的Profiling怎么样

使用道具 举报

回复
论坛徽章:
0
39#
发表于 2008-3-29 11:59 | 只看该作者
顶一下!!!!!!!!!!!!!!!!!

使用道具 举报

回复
论坛徽章:
0
40#
发表于 2008-5-2 21:17 | 只看该作者
刚刚开始要学习WF,向前辈们致敬

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表