Asp.Net Zero轻量级审核流设计
复杂的业务系统中往往会集成工作流或审核流,但有些轻量及的业务系统对这些功能的需求并不大,有的系统甚至只需要审核功能就够了。这里给大家介绍在Asp.Net Zero中通用轻量及审核流设计,功能具备审核权限、修改权限、查看权限等。 通用的审核流是在业务表中添加审核字段来实现,审核字段如下: /// <summary> /// 单据状态 /// </summary> public short State { get; set; } 系统中该字段统一为short类型,State定义在系统的枚举中: public enum State { /// <summary> /// 新单 /// </summary> New=1,/// <summary> /// 已审核 /// </summary> Checked=2,/// <summary> /// 作废 /// </summary> Cancel=3 } 审核权限、数据权限都应该根据该枚举判断。字段和枚举添加完成后开始为业务模块增加审核功能,普通的业务模块通常只需要CRUD接口,而需要审核和数据权限的业务模块应该添加审核和作废接口。 普通业务模块,档案、字典等模块应该具备的接口如下: public interface IAreaManagerAppService: IApplicationService { Task DeleteArea(EntityDto<int> input); Task<PagedResultDto<CreateOrEditAreaInput>> GetAreas(GetAreaInput input); Task<CreateOrEditAreaInput> GetAreaForEdit(NullableIdDto<int> input); Task CreateOrUpdateArea(CreateOrEditAreaInput input); Task<ListResultDto<AreaDto>> GetAllAreaWithLevel(); } 包含审核、作废的模块接口: public interface ISomeoneClassAppService: IApplicationService { Task CreateOrUpdate(CreateOrEditInput input); Task Delete(EntityDto<int> input); Task<PagedResultDto<Output>> Get(GetInput input); Task<CreateOrEditInput> GetForEdit(NullableIdDto<int> input); Task Check(int id); Task Cancel(int id); } 审核需要分配角色权限,所以在审核接口的实现中应该加上权限标签: [AbpAuthorize(AppPermissions.Pages_SomeoneModule_SomeoneClass_Check)] public async Task Check(int id) { var master = await _MasterRepository.FirstOrDefaultAsync(id); if (master.State == Convert.ToInt16(State.Checked)) { throw new UserFriendlyException("单据已审核!"); } if (master.State == Convert.ToInt16(State.Cancel)) { throw new UserFriendlyException("单据已作废!"); } master.State = Convert.ToInt16(State.Checked); master.CheckerId = AbpSession.UserId.Value; await _MasterRepository.UpdateAsync(master); var details = await _DetailRepository.GetAllListAsync(_ => _.PID == master.Id); ?审核流显示效果,新增单据和没有权限时审核、作废功能应该禁用,也可以改为隐藏 已审核的单据在分配权限的情况下应该具备查看、删除、作废操作 未审核的单据在分配权限的情况下应该具备编辑、删除、审核 ?实现如下: 在新增修改组件按钮组中加入审核按钮 <button type="button" class="btn btn-warning" (click)="check(data.id)" [disabled]="data.State!=1"><i class="fa fa-check"></i>审核</button> <button type="button" class="btn btn-danger" (click)="cancel(data.id)" 在父组件table中加入操作: <a href="javascript:;" *ngIf="!record.isStatic && permission.isGranted(‘Pages.SomeoneModule.Class.Check‘) && record.State==1" (click)="check(record)"> 审核 </a> <a href="javascript:;" *ngIf="!record.isStatic && permission.isGranted(‘Pages.SomeoneModele.Class.Cancel‘) && record.State==2" (click)="cancel(record)"> 作废 </a> 总结:到这里Asp.Net Zero通用审核流设计方式已经结束完毕,审核流在业务系统中也是比较复杂的设计,所以这里给大家提供的是设计思路,详细的业务代码还是要看实际需求。希望大家看完有所启发,如果有不太明白的可以在下方留言,我会详细解答。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 我为什么要测试我的HTMLHelpers?
- asp.net-mvc-4 – 使用KNOCKOUT.JS和ASP.NET MVC 4进行级联
- ASP.NET Core托管和部署Linux实操演练手册
- asp.net-mvc – 注册到global.asax的路由的替代位置
- 从ASP.Net中的sessionID获取会话对象
- asp.net-mvc – 什么原因导致asp.net无法创建/影子复制错误
- asp.net-core – ASP.NET Core中的状态码406(不可接受)
- Fluent验证比较字段字符串格式args
- asp.net – Apache webserver上的vNext
- asp.net – HttpError不会显示自定义错误页面
- asp.net-web-api – 使用WIF和OWIN中间件的角色与
- asp.net-mvc – 在ClaimsIdentity上,BootstrapCo
- asp.net-mvc – 使用MVC3剃刀的ASP.Net图表控件
- asp.net-mvc – 无法在实体框架模型中的MVC 4模板
- ASP Classic – XML Dom
- asp.net-mvc – ApplicationDbContext – 它在项
- 在ASP.NET MVC 3中上载大于2GB的文件
- asp.net-mvc-4 – 如何为Outlook创建“互联网日历
- 可以将图像添加到ASP.NET按钮吗?
- asp.net-mvc-3 – 在ASP.NET-MVC3中缓存数据有什