让品高工作流牛起来

做一个徘徊在牛A和牛C之间的产品也不错啊

导航

如何对环节、参与者、迁移、条件等进行扩展

Posted on 2010-08-31 15:37  Brian.KFC  阅读(416)  评论(0编辑  收藏  举报

1. 新建一个“品高工作流业务扩展”工程

image

image

2. 按照生成的代码模板进行编码

[Design("MyActivity1", ""), Serializable]
public class MyActivity1 : Activity
{
public override void Enter(WorkflowEventArgs args)
{
base.Enter(args);
}

public override void Execute(WorkflowEventArgs args)
{
base.Execute(args);
}

public override void Exit(WorkflowEventArgs args)
{
base.Exit(args);
}
}

自定义环节要实现Enter,Execute,Exit这三个方法,其中:

Enter:当上个环节Exit后,进入本环节生成代办时调用。一般在此方法中产生并分发代办。

Execute:当前环节为本环节,并且用户审批结束提交时调用。一般在此方法中更新当前代办状态为完成等。

Exit:当CanExit返回True,可退出本环节时调用。可进行些善后处理工作,如发送提醒等。

[Design("MyActor1", "", IsWorkflowProperty = true), Serializable]
public class MyActor1 : Actor
{
public override IList<IParticipant> Resolve(WorkflowEventArgs args)
{
throw new NotImplementedException();
}
}

 自定义参与者要实现Resolve方法,返回参与者列表即可。其中的求解逻辑可随意发挥。

[Design("MyCondition1", ""), Serializable]
public class MyCondition1 : BusinessCondition
{
public override ConditionResult Eval(WorkflowEventArgs args)
{
return base.Eval(args);
}
}

自定义条件要实现Eval方法,返回计算结果即可。用于计算条件是否成立,如果成立,则会流转到后续环节,否则不处理。

[Design("MyTransition1", ""), Serializable]
public class MyTransition1 : Transition
{
public MyTransition1()
:
base()
{
}

public MyTransition1(string source, string sink)
:
base(source, sink)
{
}
}

自定义迁移可以添加些自定义的属性,用于操作界面元素的显示与否等。如可回退迁移就是加了个“允许回退”属性,用于控制工具栏上“回退”按钮是否显示的。

 

编辑完后如何使用呢?请参看下一篇的介绍吧。