C/S架构软件开发平台旗舰版V6.1迭代开发记录-工作流程引擎集成
C/S架构软件开发平台旗舰版V6.1迭代开发记录-工作流程引擎集成
目录
20231208 - 集成CSFramework.WorkflowV2.0解决方案
工作流引擎使用EF6.4框架,在集成到C/S开发框架要安装EntityFramework 6.4.4 NuGet包。
添加EntityFramework nuget包
在CSFrameworkV6.Main项目右键,管理NuGet程序包,
业务系统集成流程引擎架构图
1、系统管理模块增加《工作流管理》
逻辑:
- 管理与维护流程图,包括流程图设计、查询、修改、删除等操作
- 配置业务单据与流程图关系
- 连接流程数据库 【CSFramework.Workflow】
工作流管理界面
注意事项:
流程图管理操作按钮:
业务单据配置操作按钮:
2、《销售订单》集成工作流审批
处理逻辑:
- 销售订单主表增加四个字段:AppUserName、AppComment、AppStatus、AppWorkflowKey
- 主表表格增加以上四列(GridColumn)
- 增加按钮:流程审批、审批结果
- 实现《销售订单》的流程引擎数据提供者
- 读取销售订单的审批流程,打开流程审批界面。
销售订单主表(tb_SO )增加字段
销售订单主表模型(tb_SO/res_SO)增加属性
C# 全选
#region 单据审批信息
/// <summary>
/// 审批标识,Y=已审批完成,N/null=审批中
/// </summary>
public System.String FlagApp { get; set; }
/// <summary>
/// 审批用户id
/// </summary>
public System.String AppUser { get; set; }
/// <summary>
/// 审批时间
/// </summary>
public System.DateTime? AppDate { get; set; }
/// <summary>
/// 审批人姓名
/// </summary>
public string AppUserName { get; set; }
/// <summary>
/// 最后一次审批意见
/// </summary>
public string AppComment { get; set; }
/// <summary>
/// 最后一次审批状态
/// </summary>
public string AppStatus { get; set; }
/// <summary>
/// 工作流key
/// </summary>
public string AppWorkflowKey { get; set; }
#endregion
主表表格增加列(GridColumn)
在 GridControl 设计器内添加3个列:
colAppComment:审批意见,绑定字段:AppComment
colAppStatus:审批状态,绑定字段:AppStatus
colAppWorkflowKey:流程图,绑定字段:AppWorkflowKey
数据访问层dalSO.Query方法添加代码
表格预览效果:
增加【流程审批】按钮
C# 全选
public override IButtonInfo[] GetBusinessButtons()
{
//增加【流程审批】按钮
if (this.ButtonAuthorized(ButtonAuthority.APPROVAL))
{
var button = this.ToolbarRegister.CreateButton(ButtonNameList.btnApproval,
"流程审批", ToolBarGroup.审核功能, Globals.LoadBitmap("24_Approval.ico"), new Size(57, 28), true, true, this.DoApproval);
return new IButtonInfo[] { button };
}
else
{
return new IButtonInfo[] { };
}
}
流程审批事件 - 重写 DoApproval 按钮事件
C# 全选
public override void DoApproval(IButtonInfo button)
{
AssertFocusedRow();
try
{
CCursor.ShowWaitCursor();
var row = (res_SO)_SummaryView.GetFocusedRow();
var flowDataKey = row.AppWorkflowKey;
//单据没有审批记录,取配置表的流程图key
if (row.AppWorkflowKey.IsEmpty())
flowDataKey = new bll_Workflow().GetDocFlowKey("SO");
else
flowDataKey = row.AppWorkflowKey;
if (flowDataKey.IsEmpty()) throw new CustomException("没有配置流程图!");
//初始化流程引擎数据提供者
BusinessDataProvider.Provider = new BusinessDataProvider_SO();
BusinessDataProvider.Provider.ApprovalForm.OnApprovalFinish += ApprovalForm_OnApprovalFinish;
BusinessDataProvider.Provider.ApprovalForm.OnApprovalOperation += ApprovalForm_OnApprovalOperation;
BusinessDataProvider.Provider.ApprovalForm.ShowForm(row.SONO, flowDataKey, this);
}
finally
{
CCursor.ShowDefaultCursor();
}
}
BLL/DAL层实现 UpdateBusinessDocApproval 方法
C# 全选
public bool UpdateBusinessDocApproval(CSFrameworkV6.Models.WorkflowModels.WorkflowApprovalData data, bool isFinish)
{
var obj = _Database.GetQueryable<tb_SO>().Where(w => w.SONO == data.BusinessKey).FirstOrDefault();
if (obj != null)
{
obj.FlagApp = isFinish ? "Y" : "N";
obj.AppUser = _Loginer.Account;
obj.AppUserName = _Loginer.AccountName;
obj.AppDate = DateTime.Now;
obj.AppComment = data.ApprovalComments;
obj.AppStatus = data.ApprovalStatus;
obj.AppWorkflowKey = data.FlowDataKey;//工作流key
return _Database.Update(obj) == 1;
}
else
{
return false;
}
}
实现《销售订单》数据提供者 - BusinessDataProvider_SO
销售单分配审批流程
流程审批界面
完整版源码参考 frmSO.cs
3、《应付款》集成工作流审批
处理逻辑:
- 应付款主表增加审批信息字段:AppUserName、AppComment、AppStatus、AppWorkflowKey
- 主表表格增加列(GridColumn)
- 增加按钮:流程审批、审批结果
- 实现《销售订单》的流程引擎数据提供者
- 读取销售订单的审批流程,打开流程审批界面。
操作步骤参考销售订单。
流程审批界面
工作流数据库文件
Workflow.bak 数据库备份文件还原为数据库:
操作步骤参考:
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
CSFrameworkV6 C/S框架网