转:http://www.cnblogs.com/dannyli/archive/2011/08/02/2125302.html
以下是使用代码审批、转签k2 blackpearl流程,初探K2 Blackpearl,望高人多多包涵、指点.
//执行动作 private void MyAction(string argAction) { //创建连接对象 SourceCode.Workflow.Client.Connection wfcon = new SourceCode.Workflow.Client.Connection(); //打开K2连接 string k2Server = System.Configuration.ConfigurationManager.AppSettings["K2Server"]; string workflowServicePort = System.Configuration.ConfigurationManager.AppSettings["WorkflowServicePort"]; wfcon.Open(k2Server + ":" + workflowServicePort); //当前用户打开 wfcon.ImpersonateUser(HttpContext.Current.User.Identity.Name); //获取流程列表 SourceCode.Workflow.Client.WorklistItem worklistitem = wfcon.OpenWorklistItem(SN); /* //获取流程实例编号 string[] _SN = SN.Split('_'); int _ID = int.Parse(_SN[0]); //获取流程实例 SourceCode.Workflow.Client.ProcessInstance proInst = wfcon.OpenProcessInstance(_ID); //DataFields赋值 proInst.DataFields["TaskUsers"].Value = ddlTaskUsers.SelectedValue; //更新DataFields procinst.Update(); */ //查找action(执行动作) foreach (SourceCode.Workflow.Client.Action action in worklistitem.Actions) { if (action.Name.Equals(argAction)) { //执行动作 action.Execute(); } } wfcon.Dispose(); } //转签 protected void ProcRedirect(string argEmpName) { //创建连接对象 SourceCode.Workflow.Client.Connection wfcon = new SourceCode.Workflow.Client.Connection(); //打开K2连接 string k2Server = System.Configuration.ConfigurationManager.AppSettings["K2Server"]; string workflowServicePort = System.Configuration.ConfigurationManager.AppSettings["WorkflowServicePort"]; wfcon.Open(k2Server + ":" + workflowServicePort); wfcon.ImpersonateUser(HttpContext.Current.User.Identity.Name); //获取流程列表 SourceCode.Workflow.Client.WorklistItem worklistitem = wfcon.OpenWorklistItem(SN); //转签 worklistitem.Redirect(argEmpName); //释放资源 wfcon.Dispose(); }
流程图如下: