public void AddCase(Case @case) { using (var connection = new SqlConnection(_connectionString)) { connection.Open(); connection.Insert(CaseTableName, ToKeyValuePairs(@case)); } }
public void UpdateCase(Case @case) { using (var connection = new SqlConnection(_connectionString)) { connection.Open(); connection.Update(CaseTableName, new KeyValuePair<string, object>("编号", @case.编号), ToKeyValuePairs(@case)); } }
public void StartCase(Case @case) { var resetEvent = new ManualResetEvent(false); WorkflowApplication wfApp = GetWorkflowApplication(new CaseWorkflow {CaseType = @case.案件类型}, @case.编号, resetEvent); lock (this) { wfApp.Run(); resetEvent.WaitOne(TimeSpan.FromMinutes(1)); } }
private static void 客户指示处理测试(Case @case, User user) { 立案(@case); 分案(@case.编号, user); 办案(@case.编号, user, TaskNames.客户指示办案).Should().BeTrue(); 流程部质检(@case.编号, false); 办案(@case.编号, user, TaskNames.客户指示办案).Should().BeTrue(); 流程部质检(@case.编号, false); 办案(@case.编号, user, TaskNames.客户指示办案).Should().BeTrue(); 流程部质检(@case.编号, true); 处理提交并确认(@case.编号); }
private static void 官方来函测试(Case @case, User user) { 立案(@case); 分案(@case.编号, user); 办案(@case.编号, user, TaskNames.官方来函办案); 代理部内审(@case.编号, false); 办案(@case.编号, user, TaskNames.官方来函办案); 代理部内审(@case.编号, true); 文员处理案件(@case.编号, TaskNames.制作官方格式函); 流程部质检(@case.编号, false); 办案(@case.编号, user, TaskNames.官方来函办案); 代理部内审(@case.编号, true); 文员处理案件(@case.编号, TaskNames.制作官方格式函); 流程部质检(@case.编号, true); 处理提交并确认(@case.编号); }
private static IEnumerable<KeyValuePair<string, object>> ToKeyValuePairs(Case @case) { return new Dictionary<string, object> { {"编号", @case.编号}, {"名称", @case.名称}, {"案件类型", @case.案件类型}, {"创建时间", @case.创建时间}, {"绝限日", @case.绝限日}, {"状态", @case.状态}, {"客户号", @case.客户号}, {"申请人证件号", @case.申请人证件号}, {"发明人身份证号", @case.发明人身份证号}, {"主办员用户名", @case.主办员用户名}, {"翻译用户名", @case.翻译用户名}, {"一校用户名", @case.一校用户名}, {"二校用户名", @case.二校用户名} }; }
private static void 新申请测试(Case @case, User 主办员, User 翻译, User 一校, User 二校) { 立案(@case); 分案(@case.编号, 主办员, 翻译, 一校, 二校); Action 处理新申请案件 = () => Parallel.Invoke(() => 办案(@case.编号, 主办员, TaskNames.撰写五书) .Should().BeTrue(), () => { 办案(@case.编号, 一校, TaskNames.原始资料翻译一校) .Should().BeFalse(); 办案(@case.编号, 翻译, TaskNames.原始资料翻译) .Should().BeTrue(); 办案(@case.编号, 二校, TaskNames.原始资料翻译二校) .Should().BeFalse(); 办案(@case.编号, 一校, TaskNames.原始资料翻译一校) .Should().BeTrue(); 办案(@case.编号, 二校, TaskNames.原始资料翻译二校) .Should().BeTrue(); }); 处理新申请案件(); // 第一次内审不通过 代理部内审(@case.编号, false); 处理新申请案件(); // 第二次内审通过 代理部内审(@case.编号, true); 办案(@case.编号, 主办员, TaskNames.定稿五书).Should().BeTrue(); 文员处理案件(@case.编号, TaskNames.制作专利请求书); 流程部质检(@case.编号, true); 处理提交并确认(@case.编号); }
/// <summary> /// 返回与案件<param name="case" />相关的所有<see cref="CaseDoc"/>。 /// </summary> public static IEnumerable<CaseDoc> GetDocsOf(this ICaseDocManager manager, Case @case) { return manager.GetDocsOf(@case.编号); }
/// <summary> /// 返回与案件<param name="case" />相关的所有<see cref="CaseMessage"/>。 /// </summary> public static IEnumerable<CaseMessage> GetDocsOf(this ICaseMessageManager manager, Case @case) { return manager.GetMessagesOf(@case.编号); }
/// <summary> /// 表示的案件<param name="case"/>中名为<param name="taskName"/>的任务已被完成,案件流程可以继续。 /// </summary> /// <returns>案件是否成功继续。</returns> public static bool ResumeCase(this ICaseWorkflowManager manager, Case @case, string taskName) { return manager.ResumeCase(@case, taskName, new object()); }
/// <summary> /// 表示的案件<param name="case"/>中名为<param name="taskName"/>的任务已被完成,案件流程可以继续。 /// </summary> /// <param name="value"> /// 任务结果,作为可能影响案件流程的参数。 /// <example>如对于内审任务,传入true/false表示内审是否通过。</example> /// </param> /// <returns>案件是否成功继续。</returns> public static bool ResumeCase(this ICaseWorkflowManager manager, Case @case, string taskName, object value) { return manager.ResumeCase(@case.编号, taskName, value); }
private static void 立案(Case @case) { Debug.WriteLine("立案:" + @case.编号); var caseInfoManager = ServiceLocator.Current.GetInstance<ICaseInfoManager>(); var caseWorkflowManager = ServiceLocator.Current.GetInstance<ICaseWorkflowManager>(); @case.状态 = CaseState.OnGoing; // 首先保存案件信息 caseInfoManager.AddCase(@case); // 然后启动案件流程 caseWorkflowManager.StartCase(@case); // 应该已经保存了 Case? caseGot = caseInfoManager.GetCaseById(@case.编号); caseGot.Should().NotBeNull(); caseGot.Value.状态.Should().Be(CaseState.OnGoing); }