日期:2014-05-20  浏览次数:20896 次

在原有正常的工作流中加入一个新的状态(审批状态),加载持久化工作流报索引超出了数组界限
公司先前有一个请假审批的工作流(workflow),能正常运行,后因业务需求,须在部门经理审批后加入一个总经理审批,我在工作流中加入了一个新的总经理审批,后来运行发现在加载持久化工作流时会报“索引超出了数组界限”的错误。请问这是什么原因造成的,能怎么解决啊,谢谢 !我想工作流应该是允许添加新的状态的啊!!
报错代码如下:
foreach (SqlPersistenceWorkflowInstanceDescription desc in workflowRuntime.GetService<SqlWorkflowPersistenceService>().GetAllWorkflows())
{
  workflowRuntime.GetWorkflow(desc.WorkflowInstanceId);  //此处报错
}

------解决方案--------------------
应该是工作流的信息改变后造成的。我现在是在状态机里面加了一个字段就报这个错。还得研究一下怎么解决。
------解决方案--------------------
已经绑定表单的工作流再进行修改就会出问题,原因是数据(表单)与设计器是分离的,仅靠名称进行识别,非常的不靠谱。我的这个系统是一体化设计的,不需要进行任何设置及编码即可实现复杂业务,可以参看一下:协同应用资料下载

 有篇博文讲的基本原理:面向业务开发应用


另外,状态机是链式流转引擎,在很多情况下都没法处理,同时工作流的流转与数据是分离的,导致依据流转过程的条件判断难以实现,使用网状流转引擎(我发明的新词)就可以解决这个问题。

这个例子是跳转配置的例子,不需要代码介入即可实现应用