none
又是一个关于动态定义工作流的问题? RRS feed

  • 问题

  • Hi,All

    PM要我实现以下功能:

    首先把用户可能要用到的任务做成自定义activity(这个对我来说,应该不难),然后可以让用户在程序界面上随意的去组装这些activity的执行顺序(比如说可以先在每个可能的任务前放一个checkbox,然后用户可以将选中的任务移动右边一个selected框中,并且用户能在这个selected框中调整任务的顺序。最好能允许几个任务同时执行),请问大家这个自定义执行顺序的功能该如何实现啊?

    需要用XOML是吧?下面是我的一些考虑。

    1. 但这种工作流肯定是动态的,不可能说先为每一种组合去各自定义他们的xaml文件,所以这种穷举法的思路可以排除。

    2. 假如用户现在已选择了执行顺序,让我用程序去生成xaml文件不是一件容易的事,而且我看还需要生成另外二个文件,一个.layout,一个.xoml.cs。在WF4.0中还没发布状态机,所以我也不打算考虑用WF4.0。所以用我自己的程序去生成XOML这种思路也很难实现。

    3. 不用我自己的程序去生成XOML,而在程序中去实现一个WF设计器吗?项目是一个web程序,虽然我已找到一个用WPF实现的WF设计器,但这个设计器用的是WF4.0,而且这个设计器的操作对客户来说过于复杂。每次客户在网页上定义工作流时还要让客户运行这个WPF程序,这肯定很麻烦。所以,这把我难住了,请问大家该咋整啊?

    Confusing,谁有高招解决这个问题啊?

    2010年4月5日 1:13

答案

  • hi,

    你的思路很正确,是要动态生成XOML文件,不过,layout和cs文件可以不必生成。

    我推测(之所以推测,是因为我从来没有想要去关注这个文件的作用),layout文件时Visual Studio为了记住你在它的设计器中摆放Activity的位置而生成的文件,对工作流的流程没有影响,而且,你相当于实现了自己的设计器,也不需要这个文件。

    cs文件呢,存放了工作流的代码,其实最佳的工作流设计时工作流没有代码,代码可以存放在自定义活动中,而工作流本身只用来组装这些活动。因为你已经决定要开发自定义活动了,所以,这个文件也不需要。

    关于设计器的问题,设计器可以是任何形式,而不必拘泥于Visual Studio内置的设计器样式,正如你所描述的,左边一列Activity,右边是已选择的Activity,可以将左边的移动到右边,右边的可以排序,这个小程序很容易实现,其实它就是设计器啊。最后只需要在用户点击了保存之后,把右边已选择的所有Activity按照顺序生成一个XOML就可以了。正是因为这个设计器不难实现,你甚至可以用Silverlight或者Javascript来实现它,那么放在网页上自然不是问题。

     


    My blog: http://xiaoshatian.cnblogs.com
    2010年4月6日 3:16
    版主