EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

工作流设计基础

工作流模块将Windows Workflow Foundation(WF)4.0支持集成到XAF中。WF是一个工作流管理框架,可用于创建更多可管理的,启用了工作流的应用程序。该模块简化了设计和工作流程的执行,要求用户仅熟悉与工作流程设计相关的一般概念。本主题介绍使用模块的基础知识。有关显示如何设计示例工作流程的分步说明,请参阅“如何:设计工作流程”帮助主题。

工作流程模块

如果使用实体框架,请在DbContext中注册以下实体类型。否则,如果您使用XPO,请跳过此步骤。

using DevExpress.Workflow.EF;
using DevExpress.ExpressApp.Workflow.EF;
using DevExpress.ExpressApp.Workflow.Versioning;
// ...
public DbSet<EFWorkflowDefinition> EFWorkflowDefinition { get; set; }
public DbSet<EFStartWorkflowRequest> EFStartWorkflowRequest { get; set; }
public DbSet<EFRunningWorkflowInstanceInfo> EFRunningWorkflowInstanceInfo { get; set; }
public DbSet<EFWorkflowInstanceControlCommandRequest> EFWorkflowInstanceControlCommandRequest { get; set; }
public DbSet<EFInstanceKey> EFInstanceKey { get; set; }
public DbSet<EFTrackingRecord> EFTrackingRecord { get; set; }
public DbSet<EFWorkflowInstance> EFWorkflowInstance { get; set; }
public DbSet<EFUserActivityVersion> EFUserActivityVersion { get; set; }

要在Windows窗体应用程序中操作工作流模块,请使用“应用程序设计器”将其添加。调用“应用程序设计器”,并将WorkflowWindowsFormsModule从“工具箱”拖动到“模块”面板。在Designer中进行更改后,请不要忘记重建解决方案。

Workflow_AddModuleFromToolbox

注意

自动添加工作流模块所需的“条件外观”模块。此外,根据当前使用的ORM(EF实体或EF实体或EF实体),初始化指定用于模块持久化工作流的内置业务对象类型的WorkflowModule的属性(WorkflowDefinitionTypeWorkflowInstanceTypeWorkflowInstanceKeyTypeWorkflowControlCommandRequestRequestTypeUserActivityVersionTypeStartWorkflowRequestTypeRunningWorkflowInstanceInfoType)。使用XPO持久对象)。

将模块添加到应用程序后,运行该应用程序一次。这将在数​​据库中创建服务工作流表,以供稍后启动工作流的工作流服务器服务使用。这是必不可少的步骤,因为除非存在这些表,否则该服务将无法正常运行。

运行应用程序时,请注意“工作流定义”导航项变为可用。

Workflow_DefinitionNewAction

该导航项将调用一个列表视图,其中包含在运行时设计的所有工作流程定义。要创建您的第一个工作流程定义,请使用New Action

创建工作流程定义时,首先指定其名称和目标对象的类型。工作流定义必须以“目标对象类型”属性指定的特定类型的业务对象为目标。因此,每个定义都包含一个预先声明的targetObjectId输入参数,您可以在设计定义活动时使用它。此参数指定已为其执行工作流实例的对象的标识符。

Workflow_DefinitionDetailView

您可以使用“布局时自动启动”组选择何时执行工作流实例。选中“创建对象”选项以指定在数据库中创建对象后应执行实例。选中“对象拟合标准”选项以指定工作流程执行的条件。如果未选中AllowMultipleRuns属性,则工作流将为每个符合条件的目标对象运行一次。如果您想在对象符合条件时多次重复工作流,请选中此选项。

重点

工作流服务器服务应在执行工作流程,后台运行。在触发工作流的事件与工作流执行之间存在设计延迟。默认情况下,工作流服务器服务每15秒重新检查一次数据库。因此,在创建对象或更改其状态以满足条件后,执行相应的工作流实例最多可能需要15秒钟。

填写“属性”选项卡后,单击“设计器”选项卡以调用重新托管的工作流设计器并创建实际的活动。

Workflow_RunTimeDesigner

新创建的工作流程定义处于非活动状态,并且不会由工作流程服务器服务执行。要在设计后激活和停用定义,请使用“激活停用 动作”

Workflow_ActivateAction2

注意

您可以在XAF随附的WorkflowDemo中看到实际的工作流程定义示例。默认情况下,该演示应用程序位于%PUBLIC%\ Documents \ DevExpress Demos 19.2 \ Components \ eXpressApp Framework文件夹中。

工作流程设计师

工作流设计器是创建和修改工作流的图形方式。它基于在自定义WinForms控件中重新托管的标准Microsoft WPF WorkflowDesigner组件(请参阅“重新托管Workflow Designer”)。在MSDN和其他公共社区资源中查找有关其功能和自定义的更多详细信息。要使用代码访问WorkflowDesigner对象,请处理静态WorkflowDesignerControlBase.WorkflowDesignerCreated事件。

工作流设计器由三个窗格组成。

  • 工具箱”窗格包含可以组合以创建工作流的活动。

    WorkflowDesigner_Toolbox

    将活动从工具箱拖放到设计图面上以创建工作流。使用搜索文本框可以快速找到特定的活动。单击搜索文本框,然后开始输入。工具箱中的活动将被相应地过滤。

  • 设计图面是工作流设计的核心部分。在这里,您可以配置活动并使用拖放操作对其进行重新排序。

    WorkflowDesigner_Surface

    设计图面包含三个重要页面,可通过单击状态栏上的相应页面名称来调用它们。

    变量-使用此窗口可以声明当前工作流程所需的变量。这些是用于在工作流生存期内持久保存数据的存储位置。

    参数 -使用此窗口可以指定工作流实例将采用并返回的参数。每个XAF工作流程定义都包含一个预先声明的targetObjectId输入参数,该参数指定已为其执行工作流程实例的对象的标识符。

    导入-使用此窗口可查看包含当前工作流程定义所引用类型的名称空间。

    要了解有关变量和参数的更多信息,请参阅“变量和参数” MSDN文章。

  • 通过“属性窗格”,可以指定设计图面上当前选定的活动的属性。

    WorkflowDesigner_Properties

    不同的活动具有不同的属性集,并且不一定总是需要为所有属性提供值。

调试工作流程

为了简化工作流程的创建,工作流程模块附带了内置的调试功能。您可以在设计工作流时或在部署后调试工作流。为了在设计工作流时对其进行调试,工作流模块提供了一组特定的操作。加载当前工作流程定义后,将启用这些操作。要加载工作流程定义,请从工作流程定义的“属性”页面切换到工作流程设计器。这将启用调试操作。

行动 描述
Workflow_Debug_Start 除错 启动调试会话。
工作流_调试_断点 切换断点 在设计图面上当前选定的活动处创建一个断点。
工作流_调试_停止 停止调试 停止当前的调试会话。

要启动调试会话,请执行“调试操作”。

Workflow_Debug_Actions

将显示一个特殊窗口,记录所有正在执行的活动以及发生的异常(如果有)。

工作流_调试_输出

调试时不会创建测试对象。这就是为什么在调试时未初始化预先声明的targetObjectId输入参数,并且GetObjectByKey <T>活动为此参数返回null的原因。结果,如果后续活动访问GetObjectByKey <T>结果,则将发生NullReferenceException。解决方法是,您可以临时修改工作流程定义,以便能够针对特定目标对象对其进行调试。最简单的方法是使用以下语法将一些现有业务对象的Oid分配为targetObjectId参数的默认值。

Workflow_TempTargetObjectId

要在部署工作流后对其进行调试,请使用“显示工作流实例操作”。

Workflow_Debug_Tracking1

该操作将调用一个列表视图,该列表视图包含由工作流服务器服务执行的工作流实例的跟踪记录。

Workflow_Debug_Tracking2

双击工作流实例记录以查看有关哪些活动已执行以及何时执行的详细信息。

Workflow_Debug_Tracking3

单击特定的跟踪记录以查看有关如何执行相关活动的详细信息。

Workflow_Debug_Tracking4

如果存在正在运行的实例,则使用WorkflowDefinition管理更改

不要修改正在使用的WorkflowDefinition对象。设计的工作流作为单独的副本存储在每个正在运行的实例中,因此任何更改都会破坏它(这是WWF的限制)。为了避免这种情况,请创建一个新的WorkflowDefinition对象,然后根据需要重新设计工作流。您可以将Xaml属性值从一个WorkflowDefinition对象手动复制到另一个对象,或者更好地使用Clone Object Module提供的CloneObject Action 。

相关文章

转载保留此链接,注明出处