// // Copyright (c) 2019 openauth.net.cn. All rights reserved. // // www.cnblogs.com/yubaolee // 2018-09-06 // 流程实例控制器 using System; using System.Collections.Generic; using System.Threading.Tasks; using Infrastructure; using Microsoft.AspNetCore.Mvc; using OpenAuth.App; using OpenAuth.App.Request; using OpenAuth.App.Response; using OpenAuth.Repository.Domain; namespace OpenAuth.WebApi.Controllers { /// /// 流程实例 /// [Route("api/[controller]/[action]")] [ApiController] [ApiExplorerSettings(GroupName = "流程实例_FlowInstances")] public class FlowInstancesController : ControllerBase { private readonly FlowInstanceApp _app; [HttpGet] public Response Get(string id) { var result = new Response(); try { result.Result = _app.GetForVerification(id); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 获取一个流程实例的操作历史记录 /// [HttpGet] public Response> QueryHistories([FromQuery]QueryFlowInstanceHistoryReq request) { var result = new Response>(); try { result.Result= _app.QueryHistories(request); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// 创建一个新的流程实例 /// www.cnblogs.com/yubaolee, 2019-03-06. [HttpPost] public Response Add([FromBody]AddFlowInstanceReq obj) { var result = new Response(); try { _app.CreateInstance(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// 召回流程 /// 召回后流程状态为【草稿】状态,可以再次发起流程。所有的流程节点状态还原,但保留审批记录 [HttpPost] public Response ReCall(RecallFlowInstanceReq obj) { var result = new Response(); try { _app.ReCall(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// 启动流程 /// 通常是对状态为【草稿】的流程进行操作,进入运行状态 [HttpPost] public Response Start(StartFlowInstanceReq obj) { var result = new Response(); try { _app.Start(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 更新流程 /// /// 更新时可以修改表单内容,可以修改流程基本信息,但不能更换表单模版 /// [HttpPost] public Response Update(UpdateFlowInstanceReq obj) { var result = new Response(); try { _app.Update(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 流程节点审批 /// /// [HttpPost] public Response Verification(VerificationReq request) { var response = new Response(); try { _app.Verification(request); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return response; } /// /// 加载列表 /// [HttpGet] public async Task Load([FromQuery]QueryFlowInstanceListReq request) { return await _app.Load(request); } [HttpPost] public Response Delete([FromBody]string[] ids) { var result = new Response(); try { _app.Delete(ids); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } public FlowInstancesController(FlowInstanceApp app) { _app = app; } } }