GroupTask Completed Event

Aug 9, 2009 at 7:55 AM

jianyi,

为什么GroupTask的TaskCompleted事件参数不是TaskEventArgs呢?

我是想通过e.TaskProperties.ExtendedProperties["comments"]得到任务的审批信息显示在下一集任务的“上一级审批意见”中。

我已经为任务表单建立了辅助数据源xml文件,在TaskCreating事件中修改任务表单的字段没有问题,只是在获得上一级任务表单中的字段值时遇到了问题。

我在上一级组任务的Completed事件中用这样的代码:

private string  task1Comments = "";

private void GroupTask1_Completed(object sender, EventArgs e)
   {
            task1Comments = "" + this.GroupTask1.TaskProperties.ExtendedProperties["comments"];

   }

然后在本级任务的Creating事件中执行这样的代码:

private void Task1_TaskCreating(object sender, QuickFlow.TaskEventArgs e)
  {
              e.TaskProperties.ExtendedProperties["lastcomments"] = task1Comments;
   }

结果在本级任务的表单中,lastcomments字段一直都是空。经过调试得知,在GroupTask1_Completed中,根本就没得到上一级表单中的comments字段值,也就是说task1Comments的值就是空的。

所以我想,是不是Completed事件中参数改成QuickFlow.TaskEventArgs,把相关数据传过来就能解决我的问题了呢?

或者有其它我不知道的方法?

 

 

Coordinator
Aug 10, 2009 at 2:50 AM
Edited Aug 10, 2009 at 2:53 AM

 

GroupTask可能包含多个任务,所以不能通过其TaskPropeties获取任务数据。
我会在后继版本中添加一个TaskCompleted事件。---出差中,要周末了。
现在你可以试试声明一个ArrayList字段, 在TaskCreating事件中,将object sender,
(这个sender即为Task活动)添加到ArrayList,然后再Grouptask.Completed
事件中通过ArrayList中的Task获得TaskPropeties。

GroupTask可能包含多个任务,所以不能通过其TaskPropeties获取任务数据。

 

我会在后继版本中添加一个TaskCompleted事件。---出差中,要周末了。

 

现在你可以试试声明一个ArrayList字段, 在TaskCreating事件中,将object sender,

(这个sender即为Task活动)添加到ArrayList,然后在Grouptask.Completed

事件中通过ArrayList中的Task获得TaskPropeties。

 

Coordinator
Aug 12, 2009 at 2:38 PM
Edited Aug 12, 2009 at 2:42 PM

Dear sinomono,

已经更新了dll,你可以下载090812版本:http://quickflow.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27982

通过GroupTask或MulitTask的TaskCompleted事件,可以方便的获取任务数据: 

public sealed partial class Workflow1 : QuickFlow.FlowchartWorkflow

{

        public Workflow1()

        {

            InitializeComponent();

        }

        string Comments1;

        private void 第三级审批是否通过(object sender, ConditionalEventArgs e)

        {

            e.Result = this.第三级审批.TaskOutcomes.Filter("Approve") >= 1;

        }

        private void 第一级审批_TaskCompleted(object sender, QuickFlow.TaskEventArgs e)

        {

            Comments1 = "" + e.TaskProperties.ExtendedProperties["Comments"];

        }

        private void 第二级审批1_TaskCreating(object sender, QuickFlow.TaskEventArgs e)

        {

            e.TaskProperties.ExtendedProperties["Comments"] = Comments1;

        }

     }

 

 

Aug 20, 2009 at 4:53 AM

Jianyi,抱歉,最近忙没有及时回复。

我已经使用你推荐的ArrayList方法解决了。不过既然有新版更优雅的解决办法,当然是下载使用了。

我觉得QuickFlow真的很好用,我还会继续使用下去,还会把使用中遇到的问题在这里公布。感谢jianyi的无私,希望越来越多的人能使用QuickFlow,希望QuickFlow功能更强大、使用更方便。

Aug 20, 2009 at 6:16 AM

jianyi, 你确定把新版上传了吗?怎么我下载替换旧版后没什么变化呢?

Coordinator
Aug 20, 2009 at 10:07 AM

下载下来看了下,确实是最新版本,在MultiTask增加了:

public event EventHandler<TaskEventArgs> TaskCompleted;
MultiTask是GroupTask的基类。
Aug 20, 2009 at 2:46 PM

哦,的确没错,是我把事件选错了,我还选原来的Completed事件,应该是TaskCompleted事件。