none
WF审批工作流持久化StateMachineWorkflowInstance类获取流程状态报该“ WorkflowRuntime 的所有权已失效,或者此工作流属于另一个 WorkflowRuntime” RRS feed

  • 问题

  • 各位大侠,我之前没接触过WF,现要用WF做一状态审批工作流,遇到些问题折腾了几天不能解决,望大家给些意见:

    WF流程已建好,单独测试运行没问题,考虑到N个人申请N个单并审批到不同环节,必定使用持久化技术,使用了SqlWorkflowPersistenceService(connStringPersistence, true, new TimeSpan(0, 2, 0), new TimeSpan(0, 0, 5));服务自动持久化,但遇到以下问题久久不能解决

    取系统登录人的审批任务:现是通过GetAllWorkflows遍历,用StateMachineWorkflowInstance取得每个流程实例的运行状态(CurrentState)来判定是否是当前用户的审批任务,遍历过程中遇到 “此工作流不属于该 WorkflowRuntime。该 WorkflowRuntime 的所有权已失效,或者此工作流属于另一个 WorkflowRuntime"异常,经查证是参数TimeSpan(0, 2, 0)的问题,于是试着改成TimeSpan(0, 0, 0)终于不出异常了,但审批事件不起作用(工作流调试时明明已流向了下个节点),原因可能是内存中的流程已正确流动,但系统并没持久化,导致从DB中重新加载的是上一次流程状态。由于审批是异步的,导致在审批后刷新审批任务列不能准确的删除刚审批的任务

    请有这方面经验的高手指点下,你们是如何从服务器上的所有流程实例中取用户审批任务的,如何取得持久化工作流状态,又如何持久化回DB,参数要注意什么能避免“WorkflowRuntime所有权已失效”的异常,由于审批操作是异步,如何准确刷新刚审批完的流程??

    请结合上面的问题,提出开发WF的意见及你们宝贵的思路,感激不尽!!

    2013年5月23日 15:10

全部回复