EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

运行时指定的用户定义状态转换

本主题描述用户如何在运行时创建和自定义状态机

状态机模块添加到应用程序后,将自动创建“状态机”导航项。此导航项将调用列表视图,您可以在其中创建和自定义定义状态机的持久对象。

状态机使用实现DevExpress.ExpressApp.StateMachine.IStateMachine接口的业务对象(实体)进行持久化。如果使用XPO,则会自动使用DevExpress.ExpressApp.StateMachine.Xpo.XpoStateMachine持久类及其关联的类型。如果使用实体框架,则应该将以下实体从业务类库中手动添加到DBContext中

using DevExpress.Persistent.BaseImpl.EF.StateMachine;
// ...
public DbSet<StateMachine> StateMachines { get; set; }
public DbSet<StateMachineState> StateMachineStates { get; set; }
public DbSet<StateMachineTransition> StateMachineTransitions { get; set; }
public DbSet<StateMachineAppearance> StateMachineAppearances { get; set; }

要创建新的状态机,请使用“新建操作”。

StateMachine-RuntimeCreation1

创建状态机时,请指定其名称,目标业务类以及其值表示业务类实例状态的属性。这可以是枚举属性引用属性。属性值用作状态标记。不同的州必须使用不同的标记值。现在,您可以创建状态和转换。

StateMachine-RuntimeCreation2

注意

要在“目标对象类型”组合框中提供所需的业务类别,请向该类别添加枚举引用属性(将用作状态标记)。

创建状态时,请指定其标题和marker属性的相应值。您可以选择指定对象必须满足的条件才能获得当前状态。如果对象不满足目标对象标准,并且用户尝试执行到状态的转换,则会警告用户并取消转换。

StateMachine-RuntimeCreation3

最后,指定当前状态所允许的转换以及(可选)指定与当前状态关联的外观规则。指定的外观规则将在对象位于其内部时生效

  • 当前状态。

StateMachine-RuntimeCreation4

要控制状态转换的可视顺序,请指定其Index属性。与状态转换相对应的动作根据其索引进行排序。若要指定状态转换应保存当前对象并在执行后关闭细节视图,请选中“保存并关闭视图”复选框。

结果,StateMachineController会将ChangeStateAction操作添加到显示使用“目标对象类型”属性指定的类型的对象的视图中。

StateMachine-ShowActionsInToolBar

您可以选择选中“展开详细信息视图中的动作”复选框。在这种情况下,目标对象类型的详细视图将包含与可用状态转换相对应的单独的简单操作

StateMachine-ShowActionsInPanel

注意

当状态机模块使用受安全系统保护的数据进行操作时,可能需要正确的安全许可配置。应将读取权限授予State Machine所需的数据,并将写入权限授予将要修改的数据,因为State Machine无法绕过安全限制。

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