From b9a849e3ead02f73acb0de1734bd0336f2f5313d Mon Sep 17 00:00:00 2001 From: yubaolee Date: Fri, 20 Jan 2017 17:49:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4workflowengine.net?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/ApplyTransitionHistoryApp.cs | 38 ---- OpenAuth.App/OpenAuth.App.csproj | 5 +- .../WFSchemeService.cs | 18 +- OpenAuth.App/WorkflowInboxApp.cs | 28 --- OpenAuth.App/WorkflowSchemasManagerApp.cs | 38 ---- .../Core/ApplyTransitionHistory.cs | 62 ------ OpenAuth.Domain/Core/WorkflowScheme.cs | 36 ---- .../Interface/IWorkflowSchemeRepository.cs | 12 -- OpenAuth.Domain/OpenAuth.Domain.csproj | 5 - .../Controllers/FlowDesignController.cs | 8 +- .../FlowManage/Views/FlowDesign/Index.cshtml | 57 ++++++ OpenAuth.Mvc/BllScripts/flowDesign.js | 122 ++++++++++++ .../BllScripts/workflowSchemaManager.js | 92 --------- .../Controllers/DesignerController.cs | 56 ------ .../Controllers/WorkflowSchemasController.cs | 45 ----- .../Models/DefaultParcedProcessCache.cs | 45 ----- OpenAuth.Mvc/Models/WorkflowActionProvider.cs | 146 -------------- OpenAuth.Mvc/Models/WorkflowInit.cs | 110 ----------- OpenAuth.Mvc/Models/WorkflowRuleProvider.cs | 65 ------ OpenAuth.Mvc/OpenAuth.Mvc.csproj | 20 +- OpenAuth.Mvc/Scripts/designerconstants.js | 186 ------------------ OpenAuth.Mvc/Scripts/workflowdesigner.min.js | 3 - OpenAuth.Mvc/Views/Designer/Index.cshtml | 95 --------- .../Views/WorkflowSchemas/Index.cshtml | 40 ---- OpenAuth.Mvc/Web.config | 3 - OpenAuth.Mvc/packages.config | 3 - .../Mapping/ApplyTransitionHistoryMap.cs | 62 ------ .../Models/OpenAuthDBContext.cs | 2 - .../OpenAuth.Repository.csproj | 6 - .../Workflow/Mapping/WorkflowSchemeMap.cs | 37 ---- .../Workflow/WorkflowBaseRepository.cs | 134 ------------- .../Workflow/WorkflowContext.cs | 41 ---- .../Workflow/WorkflowSchemeRepository.cs | 11 -- 33 files changed, 204 insertions(+), 1427 deletions(-) delete mode 100644 OpenAuth.App/ApplyTransitionHistoryApp.cs rename {OpenAuth.Domain/Service => OpenAuth.App}/WFSchemeService.cs (87%) delete mode 100644 OpenAuth.App/WorkflowInboxApp.cs delete mode 100644 OpenAuth.App/WorkflowSchemasManagerApp.cs delete mode 100644 OpenAuth.Domain/Core/ApplyTransitionHistory.cs delete mode 100644 OpenAuth.Domain/Core/WorkflowScheme.cs delete mode 100644 OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs create mode 100644 OpenAuth.Mvc/BllScripts/flowDesign.js delete mode 100644 OpenAuth.Mvc/BllScripts/workflowSchemaManager.js delete mode 100644 OpenAuth.Mvc/Controllers/DesignerController.cs delete mode 100644 OpenAuth.Mvc/Controllers/WorkflowSchemasController.cs delete mode 100644 OpenAuth.Mvc/Models/DefaultParcedProcessCache.cs delete mode 100644 OpenAuth.Mvc/Models/WorkflowActionProvider.cs delete mode 100644 OpenAuth.Mvc/Models/WorkflowInit.cs delete mode 100644 OpenAuth.Mvc/Models/WorkflowRuleProvider.cs delete mode 100644 OpenAuth.Mvc/Scripts/designerconstants.js delete mode 100644 OpenAuth.Mvc/Scripts/workflowdesigner.min.js delete mode 100644 OpenAuth.Mvc/Views/Designer/Index.cshtml delete mode 100644 OpenAuth.Mvc/Views/WorkflowSchemas/Index.cshtml delete mode 100644 OpenAuth.Repository/Models/Mapping/ApplyTransitionHistoryMap.cs delete mode 100644 OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs delete mode 100644 OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs delete mode 100644 OpenAuth.Repository/Workflow/WorkflowContext.cs delete mode 100644 OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs diff --git a/OpenAuth.App/ApplyTransitionHistoryApp.cs b/OpenAuth.App/ApplyTransitionHistoryApp.cs deleted file mode 100644 index 0136bd76..00000000 --- a/OpenAuth.App/ApplyTransitionHistoryApp.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using OpenAuth.Domain; -using OpenAuth.Domain.Interface; - -namespace OpenAuth.App -{ - public class ApplyTransitionHistoryApp - { - private IRepository _repository; - - public ApplyTransitionHistoryApp(IRepository repository) - { - _repository = repository; - } - - public ApplyTransitionHistory Get(Guid processId, string currentstate, string nextState) - { - return _repository.FindSingle(h => h.ApplyId == processId && !h.TransitionTime.HasValue && - h.InitialState == currentstate && h.DestinationState == nextState); - } - - public void Add(ApplyTransitionHistory historyItem) - { - _repository.Add(historyItem); - } - - public void Update(ApplyTransitionHistory historyItem) - { - _repository.Update(u =>u.Id, historyItem); - } - - public void DeleteByProcess(Guid processId) - { - _repository.Delete(dth => - dth.ApplyId == processId && !dth.TransitionTime.HasValue); - } - } -} \ No newline at end of file diff --git a/OpenAuth.App/OpenAuth.App.csproj b/OpenAuth.App/OpenAuth.App.csproj index 67f697bc..1c13b741 100644 --- a/OpenAuth.App/OpenAuth.App.csproj +++ b/OpenAuth.App/OpenAuth.App.csproj @@ -80,7 +80,6 @@ - @@ -89,7 +88,7 @@ - + @@ -109,14 +108,12 @@ - - diff --git a/OpenAuth.Domain/Service/WFSchemeService.cs b/OpenAuth.App/WFSchemeService.cs similarity index 87% rename from OpenAuth.Domain/Service/WFSchemeService.cs rename to OpenAuth.App/WFSchemeService.cs index 4386ed82..95bb1c38 100644 --- a/OpenAuth.Domain/Service/WFSchemeService.cs +++ b/OpenAuth.App/WFSchemeService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using OpenAuth.App.ViewModel; using OpenAuth.Domain.Interface; namespace OpenAuth.Domain.Service @@ -42,7 +43,7 @@ namespace OpenAuth.Domain.Service Guid schemeid = Guid.Parse(keyValue); WFSchemeContent modelentityold = _unitWork.FindSingle(u => u.SchemeVersion == entity.SchemeVersion - && u.SchemeInfoId == schemeid); + && u.SchemeInfoId == schemeid); if (modelentityold.SchemeContent != modelentity.SchemeContent) { @@ -69,7 +70,7 @@ namespace OpenAuth.Domain.Service _unitWork.Update(entity); } - _unitWork.Save(); + _unitWork.Save(); return 1; } catch (Exception) @@ -102,5 +103,18 @@ namespace OpenAuth.Domain.Service { return _unitWork.Find(null).ToList(); } + + public GridData Load(int pageCurrent, int pageSize) + { + var result = new GridData + { + page = pageCurrent + }; + + result.total = _unitWork.Find(null).Count(); + result.rows = _unitWork.Find(pageCurrent, pageSize, "ModifyDate descending", null).ToList(); + + return result; + } } } diff --git a/OpenAuth.App/WorkflowInboxApp.cs b/OpenAuth.App/WorkflowInboxApp.cs deleted file mode 100644 index 37025a3a..00000000 --- a/OpenAuth.App/WorkflowInboxApp.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using OpenAuth.App.ViewModel; -using OpenAuth.Domain; -using OpenAuth.Domain.Interface; - -namespace OpenAuth.App -{ - public class WorkflowInboxApp - { - private IRepository _repository; - - public WorkflowInboxApp(IRepository repository) - { - _repository = repository; - } - - - public void DeleteAllByProcess(Guid processId) - { - _repository.Delete(u =>u.FirstId == processId && u.Key=="ProcessUser"); - } - - public void Add(Relevance newInboxItem) - { - _repository.Add(newInboxItem); - } - } -} \ No newline at end of file diff --git a/OpenAuth.App/WorkflowSchemasManagerApp.cs b/OpenAuth.App/WorkflowSchemasManagerApp.cs deleted file mode 100644 index 13c42136..00000000 --- a/OpenAuth.App/WorkflowSchemasManagerApp.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Linq; -using System.Web.Mvc; -using Infrastructure; -using OpenAuth.App.ViewModel; -using OpenAuth.Domain; -using OpenAuth.Domain.Interface; - -namespace OpenAuth.App -{ - /// - /// 工作流模板 - /// - public class WorkflowSchemasManagerApp - { - private IWorkflowSchemeRepository _repository; - - public WorkflowSchemasManagerApp(IWorkflowSchemeRepository repository) - { - _repository = repository; - } - public GridData Load(int pageCurrent, int pageSize) - { - var result = new GridData - { - page = pageCurrent, - total = _repository.GetCount(), - rows = _repository.Find(pageCurrent, pageSize, "Code", null).ToList() - }; - - return result; - } - [HttpPost] - public void Del(string[] codes) - { - _repository.Delete(u =>codes.Contains(u.Code)); - } - } -} \ No newline at end of file diff --git a/OpenAuth.Domain/Core/ApplyTransitionHistory.cs b/OpenAuth.Domain/Core/ApplyTransitionHistory.cs deleted file mode 100644 index b258c9b0..00000000 --- a/OpenAuth.Domain/Core/ApplyTransitionHistory.cs +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a CodeSmith Template. -// -// DO NOT MODIFY contents of this file. Changes to this -// file will be lost if the code is regenerated. -// Author:Yubao Li -// -//------------------------------------------------------------------------------ - -using System; - -namespace OpenAuth.Domain -{ - /// - /// - /// - public partial class ApplyTransitionHistory :Entity - { - public ApplyTransitionHistory() - { - this.AllowedToUserNames= string.Empty; - this.InitialState= string.Empty; - this.DestinationState= string.Empty; - this.Command= string.Empty; - } - - /// - /// - /// - public System.Guid ApplyId { get; set; } - /// - /// - /// - public System.Guid? UserId { get; set; } - /// - /// - /// - public string AllowedToUserNames { get; set; } - /// - /// - /// - public System.DateTime? TransitionTime { get; set; } - /// - /// - /// - public long Order { get; set; } - /// - /// - /// - public string InitialState { get; set; } - /// - /// - /// - public string DestinationState { get; set; } - /// - /// - /// - public string Command { get; set; } - - } -} \ No newline at end of file diff --git a/OpenAuth.Domain/Core/WorkflowScheme.cs b/OpenAuth.Domain/Core/WorkflowScheme.cs deleted file mode 100644 index 965e2cc1..00000000 --- a/OpenAuth.Domain/Core/WorkflowScheme.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a CodeSmith Template. -// -// DO NOT MODIFY contents of this file. Changes to this -// file will be lost if the code is regenerated. -// Author:Yubao Li -// -//------------------------------------------------------------------------------ - -using System; - -namespace OpenAuth.Domain -{ - /// - /// - /// - public partial class WorkflowScheme - { - public WorkflowScheme() - { - this.Code= string.Empty; - this.Scheme= string.Empty; - } - - /// - /// - /// - public string Code { get; set; } - /// - /// - /// - public string Scheme { get; set; } - - } -} \ No newline at end of file diff --git a/OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs b/OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs deleted file mode 100644 index cc64af3d..00000000 --- a/OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace OpenAuth.Domain.Interface -{ - public interface IWorkflowSchemeRepository : IRepository - { - - - } -} \ No newline at end of file diff --git a/OpenAuth.Domain/OpenAuth.Domain.csproj b/OpenAuth.Domain/OpenAuth.Domain.csproj index f488c1ab..8365b818 100644 --- a/OpenAuth.Domain/OpenAuth.Domain.csproj +++ b/OpenAuth.Domain/OpenAuth.Domain.csproj @@ -42,14 +42,11 @@ - - - @@ -75,7 +72,6 @@ - @@ -85,7 +81,6 @@ - + + + +
+
+
+
+
+
+
+
+
+
    +
    +
    +
    +
    +
    +
    +
    + @Html.Action("MenuHeader", "Home", new {area=""}) +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + +@{ ViewBag.Title = "流程设计管理"; Layout = "~/Views/Shared/_LayoutIndex.cshtml"; } diff --git a/OpenAuth.Mvc/BllScripts/flowDesign.js b/OpenAuth.Mvc/BllScripts/flowDesign.js new file mode 100644 index 00000000..fb135c0d --- /dev/null +++ b/OpenAuth.Mvc/BllScripts/flowDesign.js @@ -0,0 +1,122 @@ +//grid列表模块 +function MainGrid() { + var url = '/workflowschemas/Load'; + this.maingrid = $('#maingrid') + .jqGrid({ + colModel: [ + { label: '主键', name: 'id', hidden: true }, + { label: '流程编号', name: 'schemecode', index: 'schemecode', width: 100, align: 'left' }, + { label: '流程名称', name: 'schemename', index: 'schemename', width: 150, align: 'left' }, + { + label: "表单类型", name: "frmtype", index: "frmtype", width: 80, align: "left", + formatter: function (cellvalue, options, rowObject) { + return (cellvalue == 1 ? '系统表单' : '自定义表单') + } + }, + { label: '模板版本', name: 'schemeversion', index: 'schemeversion', width: 180, align: 'left' }, + { label: '状态Id', name: 'enabledmark', index: 'enabledmark', hidden: true }, + { + label: "状态", name: "enabledmarklabel", index: "enabledmarklabel", width: 50, align: "center", + formatter: function (cellvalue, options, rowObject) { + if (rowObject.enabledmark == 1) { + return '启用'; + } else if (rowObject.enabledmark == 0) { + return '停用'; + } else { + return '草稿'; + } + } + }, + + { label: "最近编辑用户", name: "modifyusername", index: "modifyusername", width: 90, align: "left" }, + { + label: "最近编辑时间", name: "modifydate", index: "modifydate", width: 150, align: "left", + formatter: function (cellvalue, options, rowObject) { + return formatDate(cellvalue, 'yyyy-MM-dd hh:mm:ss'); + } + }, + { label: "创建用户", name: "createusername", index: "createusername", width: 80, align: "left" }, + { + label: "创建时间", name: "createdate", index: "createdate", width: 150, align: "left", + formatter: function (cellvalue, options, rowObject) { + return formatDate(cellvalue, 'yyyy-MM-dd hh:mm:ss'); + } + }, + + { label: "备注", name: "description", index: "description", width: 200, align: "left" } + + ], + url: url, + datatype: "json", + + viewrecords: true, + rowNum: 18, + pager: "#grid-pager", + altRows: true, + height: 'auto', + multiselect: true, + multiboxonly: true, + + loadComplete: function () { + var table = this; + setTimeout(function () { + updatePagerIcons(table); + }, + 0); + } + }).jqGrid('navGrid', "#grid-pager", { + edit: false, add: false, del: false, refresh: false, search: false + }); + + this.reload = function (id) { + this.maingrid.jqGrid("setGridParam", { url: url }) + .trigger("reloadGrid", [{ page: 1 }]); //重载JQGrid + + }; +}; +MainGrid.prototype = new Grid(); +var list = new MainGrid(); +var vm = new Vue({ + el: '#editDlg' +}); + +//删除 +function del() { + list.del("Code", "/WorkflowSchemas/Del", function () { + list.reload(); + }); +} + +//自定义的编辑按钮 +function edit() { + var selected = list.getSelectedObj(); + if (selected == null) { + return; + } + + layer.open({ + type: 2, + title:selected.Code, + skin: 'layui-layer-rim', //加上边框 + area: ['800px', '600px'], //宽高 + maxmin: true, //开启最大化最小化按钮 + content: '/designer/index?schemeName=' + selected.Code + }); + +} + +function add() { + layer.open({ + type: 2, + skin: 'layui-layer-rim', //加上边框 + area: ['800px', '600px'], //宽高 + maxmin: true, //开启最大化最小化按钮 + content: '/designer/index?schemeName=', + end: function() { + list.reload(); + } + }); +} + + + diff --git a/OpenAuth.Mvc/BllScripts/workflowSchemaManager.js b/OpenAuth.Mvc/BllScripts/workflowSchemaManager.js deleted file mode 100644 index 761c418e..00000000 --- a/OpenAuth.Mvc/BllScripts/workflowSchemaManager.js +++ /dev/null @@ -1,92 +0,0 @@ -//grid列表模块 -function MainGrid() { - var url = '/workflowschemas/Load'; - this.maingrid = $('#maingrid') - .jqGrid({ - colModel: [ - { - name: 'Id', - index: 'Id', - hidden: true - }, - { - index: 'Code', - name: 'Code', - label: '模板名称' - } - - ], - url: url, - datatype: "json", - - viewrecords: true, - rowNum: 18, - pager: "#grid-pager", - altRows: true, - height: 'auto', - multiselect: true, - multiboxonly: true, - - loadComplete: function () { - var table = this; - setTimeout(function () { - updatePagerIcons(table); - }, - 0); - } - }).jqGrid('navGrid', "#grid-pager", { - edit: false, add: false, del: false, refresh: false, search: false - }); - - this.reload = function (id) { - this.maingrid.jqGrid("setGridParam", { url: url }) - .trigger("reloadGrid", [{ page: 1 }]); //重载JQGrid - - }; -}; -MainGrid.prototype = new Grid(); -var list = new MainGrid(); -var vm = new Vue({ - el: '#editDlg' -}); - -//删除 -function del() { - list.del("Code", "/WorkflowSchemas/Del", function () { - list.reload(); - }); -} - -//自定义的编辑按钮 -function edit() { - var selected = list.getSelectedObj(); - if (selected == null) { - return; - } - - layer.open({ - type: 2, - title:selected.Code, - skin: 'layui-layer-rim', //加上边框 - area: ['800px', '600px'], //宽高 - maxmin: true, //开启最大化最小化按钮 - content: '/designer/index?schemeName=' + selected.Code - }); - -} - -function add() { - layer.open({ - type: 2, - skin: 'layui-layer-rim', //加上边框 - area: ['800px', '600px'], //宽高 - maxmin: true, //开启最大化最小化按钮 - content: '/designer/index?schemeName=', - end: function() { - list.reload(); - } - }); -} - - - diff --git a/OpenAuth.Mvc/Controllers/DesignerController.cs b/OpenAuth.Mvc/Controllers/DesignerController.cs deleted file mode 100644 index b0970de8..00000000 --- a/OpenAuth.Mvc/Controllers/DesignerController.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Specialized; -using System.Configuration; -using System.IO; -using System.Linq; -using System.Text; -using System.Web.Mvc; -using System.Xml.Linq; -using OpenAuth.Mvc.Models; -using OptimaJet.Workflow; -using OptimaJet.Workflow.Core.Builder; -using OptimaJet.Workflow.Core.Bus; -using OptimaJet.Workflow.Core.Runtime; -using OptimaJet.Workflow.DbPersistence; -using WorkflowRuntime = OptimaJet.Workflow.Core.Runtime.WorkflowRuntime; - -namespace OpenAuth.Mvc.Controllers -{ - public class DesignerController : BaseController - { - public ActionResult Index(string schemeName) - { - return View(); - } - - public ActionResult API() - { - Stream filestream = null; - if (Request.Files.Count > 0) - filestream = Request.Files[0].InputStream; - - var pars = new NameValueCollection(); - pars.Add(Request.Params); - - if (Request.HttpMethod.Equals("POST", StringComparison.InvariantCultureIgnoreCase)) - { - var parsKeys = pars.AllKeys; - foreach (var key in Request.Form.AllKeys) - { - if (!parsKeys.Contains(key)) - { - pars.Add(Request.Form); - } - } - } - - var res = WorkflowInit.Runtime.DesignerAPI(pars, filestream, true); - if (pars["operation"].ToLower() == "downloadscheme") - return File(Encoding.UTF8.GetBytes(res), "text/xml", "scheme.xml"); - return Content(res); - } - - } -} - - diff --git a/OpenAuth.Mvc/Controllers/WorkflowSchemasController.cs b/OpenAuth.Mvc/Controllers/WorkflowSchemasController.cs deleted file mode 100644 index 2a6d19c0..00000000 --- a/OpenAuth.Mvc/Controllers/WorkflowSchemasController.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Web.Mvc; -using Infrastructure; -using OpenAuth.App; - -namespace OpenAuth.Mvc.Controllers -{ - public class WorkflowSchemasController : BaseController - { - private WorkflowSchemasManagerApp _app; - - public WorkflowSchemasController() - { - _app = AutofacExt.GetFromFac(); - } - public ActionResult Index() - { - return View(); - } - - public string Load(int pageCurrent = 1, int pageSize = 30) - { - return JsonHelper.Instance.Serialize(_app.Load(pageCurrent, pageSize)); - } - - [HttpPost] - public string Del(string[] ids) - { - try - { - _app.Del(ids); - } - catch (Exception e) - { - Result.Status = false; - Result.Message = e.Message; - } - - return JsonHelper.Instance.Serialize(Result); - } - - } -} - - diff --git a/OpenAuth.Mvc/Models/DefaultParcedProcessCache.cs b/OpenAuth.Mvc/Models/DefaultParcedProcessCache.cs deleted file mode 100644 index 4535ec1d..00000000 --- a/OpenAuth.Mvc/Models/DefaultParcedProcessCache.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using OptimaJet.Workflow.Core.Cache; -using OptimaJet.Workflow.Core.Model; - -namespace OpenAuth.Mvc.Models -{ - /// - /// 流程定义的缓存 - /// 李玉宝新增于2016-09-28 17:15:45 - /// - public sealed class DefaultParcedProcessCache : IParsedProcessCache - { - private Dictionary _cache; - - public void Clear() - { - _cache.Clear(); - } - - public ProcessDefinition GetProcessDefinitionBySchemeId(Guid schemeId) - { - if (_cache == null) - return null; - if (_cache.ContainsKey(schemeId)) - return _cache[schemeId]; - return null; - } - - public void AddProcessDefinition(Guid schemeId, ProcessDefinition processDefinition) - { - if (_cache == null) - { - _cache = new Dictionary {{schemeId, processDefinition}}; - } - else - { - if (_cache.ContainsKey(schemeId)) - _cache[schemeId] = processDefinition; - else - _cache.Add(schemeId, processDefinition); - } - } - } -} diff --git a/OpenAuth.Mvc/Models/WorkflowActionProvider.cs b/OpenAuth.Mvc/Models/WorkflowActionProvider.cs deleted file mode 100644 index 4cdb965f..00000000 --- a/OpenAuth.Mvc/Models/WorkflowActionProvider.cs +++ /dev/null @@ -1,146 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data.Entity.Validation; -using System.Linq; -using System.Text; -using OpenAuth.App; -using OpenAuth.Domain; -using OptimaJet.Workflow.Core.Model; -using OptimaJet.Workflow.Core.Runtime; - -namespace OpenAuth.Mvc.Models -{ - public class WorkflowActionProvider :IWorkflowActionProvider - { - private ModuleManagerApp _app; - - public WorkflowActionProvider() - { - _app = AutofacExt.GetFromFac(); - } - public void ExecuteAction(string name, ProcessInstance processInstance, WorkflowRuntime runtime, string actionParameter) - { - if (_actions.ContainsKey(name)) - { - _actions[name].Invoke(processInstance, actionParameter); - return; - } - } - - public bool ExecuteCondition(string name, ProcessInstance processInstance, WorkflowRuntime runtime, string actionParameter) - { - throw new NotImplementedException(); - } - - public List GetActions() - { - return _actions.Keys.ToList(); - } - - private static Dictionary> _actions = new Dictionary - > - { - {"创建流程记录", WriteTransitionHistory}, //仅用于PreExecution,创建流程初始转换列表 - {"更新流程记录", UpdateTransitionHistory} - }; - - private static ApplyTransitionHistoryApp _applyTransitionHistoryApp = AutofacExt.GetFromFac(); - - public static void WriteTransitionHistory(ProcessInstance processInstance, string parameter) - { - if (processInstance.IdentityIds == null) - return; - - var currentstate = WorkflowInit.Runtime.GetLocalizedStateName(processInstance.ProcessId, processInstance.CurrentState); - - var nextState = WorkflowInit.Runtime.GetLocalizedStateName(processInstance.ProcessId, processInstance.ExecutedActivityState); - - var command = WorkflowInit.Runtime.GetLocalizedCommandName(processInstance.ProcessId, processInstance.CurrentCommand); - - - var historyItem = new ApplyTransitionHistory - { - Id = Guid.NewGuid(), - AllowedToUserNames = GetEmployeesString(processInstance.IdentityIds), - DestinationState = nextState, - ApplyId = processInstance.ProcessId, - InitialState = currentstate, - Command = command - }; - _applyTransitionHistoryApp.Add(historyItem); - - } - - private static string GetEmployeesString(IEnumerable identities) - { - var identitiesGuid = identities.Select(c => new Guid(c)); - var app = AutofacExt.GetFromFac(); - - var employees = app.GetUsers(identitiesGuid); - - var sb = new StringBuilder(); - bool isFirst = true; - foreach (var employee in employees) - { - if (!isFirst) - sb.Append(","); - isFirst = false; - - sb.Append(employee.Name); - } - - return sb.ToString(); - } - - public static void UpdateTransitionHistory(ProcessInstance processInstance, string parameter) - { - var currentstate = WorkflowInit.Runtime.GetLocalizedStateName(processInstance.ProcessId, processInstance.CurrentState); - - var nextState = WorkflowInit.Runtime.GetLocalizedStateName(processInstance.ProcessId, processInstance.ExecutedActivityState); - - var command = WorkflowInit.Runtime.GetLocalizedCommandName(processInstance.ProcessId, processInstance.CurrentCommand); - - var isTimer = !string.IsNullOrEmpty(processInstance.ExecutedTimer); - - var historyItem = _applyTransitionHistoryApp.Get(processInstance.ProcessId, currentstate, nextState); - - if (historyItem == null) - { - historyItem = new ApplyTransitionHistory() - { - Id = Guid.NewGuid(), - AllowedToUserNames = string.Empty, - DestinationState = nextState, - ApplyId = processInstance.ProcessId, - InitialState = currentstate - }; - - _applyTransitionHistoryApp.Add(historyItem); - - } - - historyItem.Command = !isTimer ? command : string.Format("Timer: {0}", processInstance.ExecutedTimer); - historyItem.TransitionTime = DateTime.Now; - - if (string.IsNullOrWhiteSpace(processInstance.IdentityId)) - historyItem.UserId = null; - else - historyItem.UserId = new Guid(processInstance.IdentityId); - - try - { - _applyTransitionHistoryApp.Update(historyItem); - } - catch (DbEntityValidationException e) - { - Console.WriteLine(e); - } - - } - - internal static void DeleteEmptyPreHistory(Guid processId) - { - _applyTransitionHistoryApp.DeleteByProcess(processId); - } - } -} \ No newline at end of file diff --git a/OpenAuth.Mvc/Models/WorkflowInit.cs b/OpenAuth.Mvc/Models/WorkflowInit.cs deleted file mode 100644 index 7ad31b49..00000000 --- a/OpenAuth.Mvc/Models/WorkflowInit.cs +++ /dev/null @@ -1,110 +0,0 @@ -using System; -using System.Configuration; -using System.Xml.Linq; -using OpenAuth.App; -using OpenAuth.Domain; -using OptimaJet.Workflow.Core.Builder; -using OptimaJet.Workflow.Core.Bus; -using OptimaJet.Workflow.Core.Persistence; -using OptimaJet.Workflow.Core.Runtime; -using OptimaJet.Workflow.DbPersistence; - -namespace OpenAuth.Mvc.Models -{ - public static class WorkflowInit - { - private static volatile WorkflowRuntime _runtime; - private static readonly object _sync = new object(); - - public static WorkflowRuntime Runtime - { - get - { - if (_runtime == null) - { - lock (_sync) - { - if (_runtime == null) - { - var connectionString = ConfigurationManager.ConnectionStrings["WorkFlow"].ConnectionString; - var builder = new WorkflowBuilder( - new MSSQLProvider(connectionString), - new OptimaJet.Workflow.Core.Parser.XmlWorkflowParser(), - new MSSQLProvider(connectionString) - ); - builder.SetCache(new DefaultParcedProcessCache()); - - _runtime = new WorkflowRuntime(new Guid("{8D38DB8F-F3D5-4F26-A989-4FDD40F32D9D}")) - .WithBuilder(builder) - .WithRuleProvider(new WorkflowRuleProvider()) - .WithActionProvider(new WorkflowActionProvider()) - .WithPersistenceProvider(new MSSQLProvider(connectionString)) - .WithTimerManager(new TimerManager()) - .WithBus(new NullBus()) - .SwitchAutoUpdateSchemeBeforeGetAvailableCommandsOn() - .Start(); - _runtime.ProcessStatusChanged += _runtime_ProcessStatusChanged; - } - } - } - - return _runtime; - } - } - - private static void _runtime_ProcessStatusChanged(object sender, ProcessStatusChangedEventArgs e) - { - if (e.NewStatus != ProcessStatus.Idled && e.NewStatus != ProcessStatus.Finalized) - return; - - if (string.IsNullOrEmpty(e.SchemeCode)) - return; - - //״̬ת¼ - WorkflowActionProvider.DeleteEmptyPreHistory(e.ProcessId); - _runtime.PreExecuteFromCurrentActivity(e.ProcessId); - - //֪ͨб - UpdateInbox(e); - - //״̬ - UpdateApplyState(e); - } - - /// - /// ״̬ - /// - private static void UpdateApplyState(ProcessStatusChangedEventArgs e) - { - var nextState = WorkflowInit.Runtime.GetLocalizedStateName(e.ProcessId, e.ProcessInstance.CurrentState); - - - } - - /// - /// ֪ͨб - /// - private static void UpdateInbox(ProcessStatusChangedEventArgs e) - { - var inboxApp = AutofacExt.GetFromFac(); - inboxApp.DeleteAllByProcess(e.ProcessId); - - if (e.NewStatus != ProcessStatus.Finalized) - { - var newActors = Runtime.GetAllActorsForDirectCommandTransitions(e.ProcessId); - foreach (var newActor in newActors) - { - var newInboxItem = new Relevance() - { - Id = Guid.NewGuid(), - SecondId = new Guid(newActor), - FirstId = e.ProcessId, - Key = "ProcessUser" - }; - - inboxApp.Add(newInboxItem); - } - } - } - } -} \ No newline at end of file diff --git a/OpenAuth.Mvc/Models/WorkflowRuleProvider.cs b/OpenAuth.Mvc/Models/WorkflowRuleProvider.cs deleted file mode 100644 index 32062950..00000000 --- a/OpenAuth.Mvc/Models/WorkflowRuleProvider.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using OpenAuth.App; -using OptimaJet.Workflow.Core.Model; -using OptimaJet.Workflow.Core.Runtime; - -namespace OpenAuth.Mvc.Models -{ - /// - /// 流程角色处理 - /// - public class WorkflowRuleProvider : IWorkflowRuleProvider - { - private RoleManagerApp _app; - - public WorkflowRuleProvider() - { - _app = AutofacExt.GetFromFac(); - } - - /// - /// 加载角色列表,供流程设计的时候进行选择 - /// - public List GetRules() - { - var roles = _app.Load(Guid.Empty, 1, 100).rows; - var rolestrs = new List(); - foreach (var role in roles) - { - rolestrs.Add(role.Name); - } - return rolestrs; - } - - /// - /// Checks the specified process instance. - /// 李玉宝于2016-09-05 16:43:07 - /// - /// The process instance. - /// The runtime. - /// 用户ID - /// Name of the rule. - /// The parameter. - /// true if XXXX, false otherwise. - public bool Check(ProcessInstance processInstance, WorkflowRuntime runtime, string identityId, string ruleName, - string parameter) - { - var userRole = _app.LoadForUser(Guid.Parse(identityId)); - foreach (var role in userRole) - { - if (role.Name == ruleName) - return true; - } - return false; - } - - public IEnumerable GetIdentities(ProcessInstance processInstance, WorkflowRuntime runtime, string ruleName, string parameter) - { - var userids = _app.GetUsersInRole(ruleName); - if (userids == null) return null; - return userids.Select(u => u.ToString()); - } - } -} \ No newline at end of file diff --git a/OpenAuth.Mvc/OpenAuth.Mvc.csproj b/OpenAuth.Mvc/OpenAuth.Mvc.csproj index 7d87fa5b..d27696e3 100644 --- a/OpenAuth.Mvc/OpenAuth.Mvc.csproj +++ b/OpenAuth.Mvc/OpenAuth.Mvc.csproj @@ -73,14 +73,6 @@ False ..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll
    - - ..\packages\WorkflowEngine.NET-Core.1.5.5.2\lib\net45\OptimaJet.Workflow.Core.dll - True - - - ..\packages\WorkflowEngine.NET-ProviderForMSSQL.1.5.5.2\lib\net45\OptimaJet.Workflow.DbPersistence.dll - True - @@ -158,8 +150,6 @@ - - @@ -172,11 +162,7 @@ - - - - Global.asax @@ -207,7 +193,7 @@ - + @@ -1273,7 +1259,6 @@ - @@ -1282,7 +1267,6 @@ - @@ -1522,7 +1506,6 @@ - @@ -1543,7 +1526,6 @@ - diff --git a/OpenAuth.Mvc/Scripts/designerconstants.js b/OpenAuth.Mvc/Scripts/designerconstants.js deleted file mode 100644 index 172c711b..00000000 --- a/OpenAuth.Mvc/Scripts/designerconstants.js +++ /dev/null @@ -1,186 +0,0 @@ -var WorkflowDesignerConstants = { - SelectColor: 'purple', - ActivityColor: '#F2F2F2', - ActivityInitialColor: '#00ff00', - ActivityFinalColor: '#ff0000', - ActivityCurrentColor: '#00CCCC', - - DeleteConfirm: '确定要删除所选项?', - FieldIsRequired: 'Field is required!', - FieldMustBeUnique: 'Field must be unique!', - ButtonTextDelete: '删除', - ButtonTextCreate: '创建', - - InfoBlockLabel: { - Activity: '节点: ', - Transition: '状态转换: ', - Command: '命令: ', - }, - - ActivityNamePrefix: 'Activity_', - ActivityFormLabel: { - Title: '节点', - Name: '名称', - State: '状态', - IsInitial: '是否为初始节点', - IsFinal: '是否为完成节点', - IsForSetState: '是否修改状态', - IsAutoSchemeUpdate: '是否自动更新', - Implementation: '执行操作', - PreExecutionImplementation: '提前执行操作', - ImpOrder: '序号', - ImpAction: '操作', - ImpActionParameter: '操作参数', - AlwaysConditionShouldBeSingle: 'Always condition should be single', - OtherwiseConditionShouldBeSingle: 'Otherwise condition should be single' - - }, - - TransitionFormLabel: { - Title: '状态转换', - Name: '名称', - From: '上一步', - To: '下一步', - Classifier: '类型', - Restrictions: '限制条件', - RestrictionsType: '类型', - RestrictionsActor: '执行人', - Condition: '转换条件', - ConditionType: '类型', - ConditionAction: '操作', - ResultOnPreExecution: 'Result on PreExecution', - Trigger: '触发', - TriggerType: '触发类型', - TriggerCommand: '命令', - TriggerTimer: '定时', - ConditionActionParameter: '操作参数', - ConditionInversion: '转换执行结果', - ConditionsConcatenationType: 'Conditions concatenation type', - AllowConcatenationType: 'Concat allow as', - RestrictConcatenationType: 'Concat restrict as', - ConditionsListShouldNotBeEmpty: 'Conditions list should not be empty', - IsFork: 'Is fork', - MergeViaSetState: 'Merge subprocess via set state', - DisableParentStateControl: 'Disable parent process control' - - }, - LocalizationFormLabel: { - Title: 'Localization', - ObjectName: 'ObjectName', - Type: 'Type', - IsDefault: 'IsDefault', - Culture: 'Culture', - Value: 'Value', - Types: ['Command', 'State', 'Parameter'], - }, - - TimerFormLabel: { - Title: 'Timers', - Name: 'Name', - Type: 'Type', - Value: 'Value', - Types: ['Command', 'State', 'Parameter'], - NotOverrideIfExists: "Do not override timer if exists" - }, - - ParameterFormLabel: { - Title: '系统参数', - Name: 'Name', - Type: 'Type', - Purpose: 'Purpose', - Value: 'Value', - InitialValue: '默认值' - }, - - ActorFormLabel: { - Title: '执行人', - Name: '名称', - Rule: 'Rule', - Value: 'Value' - }, - - CommandFormLabel: { - Title: '命令', - Name: "名称", - InputParameters: "Input Parameters", - InputParametersName: 'Name', - InputParametersParameter: 'Parameter' - }, - - AdditionalParamsFormLabel: { - Title: 'Additional Parameters', - IsObsolete: "IsObsolete", - DefiningParameters: 'Defining parameters', - ProcessParameters: 'Process parameters', - ProcessParametersName: 'Name', - ProcessParametersValue: 'Value' - }, - CodeActionsFormLabel: { - Title: '代码片段', - Name: 'Name', - ActionCode: 'Action code', - IsGlobal: 'Is global', - Type: 'Type' - }, - - ToolbarLabel: { - CreateActivity: '创建节点', - CopySelected: '复制所选', - Undo: '撤销', - Redo: '重做', - Move: '移动', - ZoomIn: '放大', - ZoomOut: '缩小', - ZoomPositionDefault: '默认大小', - AutoArrangement: '自动排列', - Actors: '执行人', - Commands: '命令', - Parameters: '参数', - Localization: '本地化', - Timers: '定时器', - AdditionalParameters: '附加参数', - CodeActions: '代码片段' - }, - ErrorActivityIsInitialCountText: "One element must be marked flag Initial", - ErrorReadOnlySaveText: "The Designer in ReadOnly mode, you can't save it.", - FormMaxHeight: 500, - EditCodeSettings: { - Height: 600, - Width: 1000, - CodeHeight: 390, - MessageBoxHeight: 400, - MessageBoxWidth: 600, - SuccessBoxHeight: 150, - SuccessBoxWidth: 300 - }, - EditCodeLabel: { - Title: "Edit code", - EditCodeButton: 'Edit code', - Usings: 'Usings', - Compile: "Compile", - CompileSucceeded: "Compilation succeeded.", - Success: "Success", - Error: "Error", - OK: "OK" - }, - - EditJSONSettings: { - Height: 600, - Width: 1000, - CodeHeight: 390, - MessageBoxHeight: 400, - MessageBoxWidth: 600, - SuccessBoxHeight: 150, - SuccessBoxWidth: 300 - }, - EditJSONLabel: { - Title: "Edit code", - EditCodeButton: 'Edit code', - Usings: 'Usings', - Compile: "Compile", - CompileSucceeded: "Compilation succeeded.", - Success: "Success", - Error: "Error", - OK: "OK" - } -}; \ No newline at end of file diff --git a/OpenAuth.Mvc/Scripts/workflowdesigner.min.js b/OpenAuth.Mvc/Scripts/workflowdesigner.min.js deleted file mode 100644 index 4043a12a..00000000 --- a/OpenAuth.Mvc/Scripts/workflowdesigner.min.js +++ /dev/null @@ -1,3 +0,0 @@ -function WorkflowDesigner(e){var t=this;this.Settings=e,this.GetName=function(){return t.Settings.name},this.error=function(e){alert(e)},this.load=function(e){var i=new Array;this.schemecode=e.schemecode,this.processid=e.processid,this.schemeid=e.schemeid,this.readonly=e.readonly,i.push({name:"schemecode",value:this.schemecode}),i.push({name:"processid",value:this.processid}),i.push({name:"schemeid",value:this.schemeid}),i.push({name:"operation",value:"load"});$.ajax({url:this.Settings.apiurl,data:i,async:!0,success:function(e){var i={};try{i=JSON.parse(e)}catch(n){return void t.error(e)}return i.isError?void t.error(i.errorMessage):(t.data=i,void t.render())},error:function(e,i,n){t.error(i+" "+n)}})},this.exists=function(e){var i=new Array;this.schemecode=e.schemecode,this.processid=e.processid,this.schemeid=e.schemeid,this.readonly=e.readonly,i.push({name:"schemecode",value:this.schemecode}),i.push({name:"processid",value:this.processid}),i.push({name:"schemeid",value:this.schemeid}),i.push({name:"operation",value:"exists"});var n=$.ajax({url:this.Settings.apiurl,data:i,async:!1,error:function(e,i,n){t.error(i+" "+n)}}).responseText;try{return JSON.parse(n)}catch(o){return t.error(n),!1}},this.create=function(){var e=new Array;e.push({name:"operation",value:"load"});$.ajax({url:this.Settings.apiurl,data:e,async:!0,success:function(e){try{t.data=JSON.parse(e)}catch(i){t.error(e)}t.render()}})},this.render=function(){t.Graph&&t.Graph.destroy(),t.Graph=new WorkflowGraph(this.Settings.renderTo,t,t.Settings,[WorkflowDesignerBackground,WorkflowDesignerToolbar,WorkflowDesignerActivity,WorkflowDesignerTransition,WorkflowDesignerKeyboard]),WorkflowDesignerCommon.DataCorrection(t.data),t.Graph.Draw(t.data)},this.save=function(e){if(t.readonly)return void alert(WorkflowDesignerConstants.ErrorReadOnlySaveText);var i=new Array;i.push({name:"schemecode",value:this.schemecode}),i.push({name:"processid",value:this.processid}),i.push({name:"schemeid",value:this.schemeid}),i.push({name:"operation",value:"save"}),i.push({name:"data",value:JSON.stringify(this.data)});$.ajax({url:this.Settings.apiurl,data:i,async:!0,type:"post",success:function(i){var n={};try{n=JSON.parse(i)}catch(o){return void t.error(i)}return n.isError?void t.error(n.errorMessage):(t.data=n,t.render(),void(e&&setTimeout(function(){e(t)},100)))}})},this.downloadscheme=function(e){var t=new Array;t.push({name:"operation",value:"downloadscheme"}),t.push({name:"data",value:JSON.stringify(this.data)}),WorkflowDesignerCommon.download(this.Settings.apiurl,t,"post")},this.uploadscheme=function(e,i){var n=this.GetName()+"_uploadiframe",o=document.createElement("iframe");o.setAttribute("id",n),o.setAttribute("name",n),o.setAttribute("width","0"),o.setAttribute("height","0"),o.setAttribute("border","0"),o.setAttribute("style","width: 0; height: 0; border: none;"),e.parentNode.appendChild(o),window.frames[n].name=n,iframeId=document.getElementById(n);var r=function(){iframeId.detachEvent?iframeId.detachEvent("onload",r):iframeId.removeEventListener("load",r,!1),iframeId.contentDocument?content=iframeId.contentDocument.body.innerHTML:iframeId.contentWindow?content=iframeId.contentWindow.document.body.innerHTML:iframeId.document&&(content=iframeId.document.body.innerHTML),setTimeout("iframeId.parentNode.removeChild(iframeId)",250);var e={};try{e=JSON.parse(content)}catch(n){return void t.error(content)}return e.isError?void t.error(e.errorMessage):(t.data=e,t.render(),void(i&&i(t)))};iframeId.addEventListener&&iframeId.addEventListener("load",r,!0),iframeId.attachEvent&&iframeId.attachEvent("onload",r),e.setAttribute("target",n),e.setAttribute("action",this.createurl("uploadscheme")),e.setAttribute("method","post"),e.setAttribute("enctype","multipart/form-data"),e.setAttribute("encoding","multipart/form-data"),e.submit()},this.createurl=function(e){var t=this.Settings.apiurl,i="?";return t.indexOf("?")>=0&&(i="&"),t+=i+"operation="+e,i="&",void 0!=this.schemeid&&(t+=i+"schemeid="+this.schemeid),void 0!=this.processid&&(t+=i+"processid="+this.processid),void 0!=this.schemecode&&(t+=i+"schemecode="+this.schemecode),t},this.validate=function(){var e=void 0,i=$.grep(t.data.Activities,function(e){return 1==e.IsInitial});return 1!=i.length&&(e=WorkflowDesignerConstants.ErrorActivityIsInitialCountText),e},this.destroy=function(){this.schemecode=void 0,this.processid=void 0,this.schemeid=void 0,this.data=void 0,this.Graph.destroy()},this.compile=function(e,i){e={Name:e.Name,Type:e.Type,IsGlobal:e.IsGlobal,ActionCode:e.ActionCode,Usings:e.Usings};var n=new Array;n.push({name:"schemecode",value:this.schemecode}),n.push({name:"processid",value:this.processid}),n.push({name:"schemeid",value:this.schemeid}),n.push({name:"operation",value:"compile"}),n.push({name:"data",value:JSON.stringify(e)});$.ajax({url:this.Settings.apiurl,data:n,async:!0,type:"post",success:function(e){try{e=JSON.parse(e)}catch(n){t.error(e)}i&&setTimeout(function(){i(e)},100)}})},this.getemptytype=function(e,t){var i=new Array;i.push({name:"operation",value:"getemptytype"}),i.push({name:"data",value:JSON.stringify(e)});$.ajax({url:this.Settings.apiurl,data:i,async:!0,type:"post",success:function(e){t&&setTimeout(function(){t(e)},100)}})}}function WorkflowDesignerActivity(){this.type="WorkflowDesignerActivity",this.init=function(e){this.designer=e,this.Layer=new Kinetic.Layer,this.designer.Stage.add(this.Layer),this.Layer.setZIndex(1),this.ImageCreateTransitionAndActivity=new Image,this.ImageCreateTransitionAndActivity.src=this.designer.Settings.imagefolder+"designer.createat.png",this.ImageCreateTransition=new Image,this.ImageCreateTransition.src=this.designer.Settings.imagefolder+"designer.createt.png",this.ImageDeleteActivity=new Image,this.ImageDeleteActivity.src=this.designer.Settings.imagefolder+"designer.delete.png"},this.ItemControls=new Array,this.draw=function(){null!=this.ItemControls&&this.ItemControls.forEach(function(e){e.control.destroy()}),this.ItemControls=new Array;var e=this;void 0!=this.designer.data.Activities&&this.designer.data.Activities.forEach(function(t){var i,n;if(""!=t.DesignerSettings.X&&""!=t.DesignerSettings.Y)i=Number(t.DesignerSettings.X),n=Number(t.DesignerSettings.Y);else{var o=this.GetDefaultPosition();i=o.x,n=o.y}var r=new WorkflowDesignerActivityControl({x:i,y:n,item:t,designer:e.designer,manager:e});e.ItemControls.push(r),r.Draw(),r.Sync()}),this.Layer.batchDraw()},this.CreateNewActivity=function(e,t){void 0==e&&(e=this.GetDefaultPosition()),void 0==t&&(t={IsAutoSchemeUpdate:!0,IsForSetState:!0}),void 0==t.Name&&(t.Name=this.GetDefaultName()),0==this.designer.data.Activities.length&&(t.IsInitial=!0),t.DesignerSettings&&(t.DesignerSettings=new{X:e.x,Y:e.y});var i=new WorkflowDesignerActivityControl({x:e.x,y:e.y,item:t,designer:this.designer,manager:this});return this.designer.data.Activities.push(t),this.ItemControls.push(i),i.Draw(),i.Sync(),i},this.GetDefaultName=function(){for(var e=WorkflowDesignerConstants.ActivityNamePrefix,t=1,i=0;ie.x2&&(e.x2=a),s>e.y2&&(e.y2=s)}return e},this.GetSelected=function(){var e=new Array;return this.ItemControls.forEach(function(t){t.selected&&e.push(t)}),e},this.SelectByPosition=function(e){this.ItemControls.forEach(function(t){t.getIntersectingActivityRect(e)&&t.Select()})},this.SelectByItem=function(e){this.ItemControls.forEach(function(t){t.item==e&&t.Select()})},this.ObjectMove=function(e){this.ItemControls.forEach(function(t){t.selected&&e.sender!=t&&t.ObjectMove(e.changepos)}),this.redrawTransitions()},this.createTransitionAndActivity=function(e){var t={x:e.control.getX()+2*e.rectangle.attrs.width,y:e.control.getY()},i=this.CreateNewActivity(t),n=this.designer.GetComponentByType("WorkflowDesignerTransition");n.CreateNewTransition(e,i),this.designer.redrawAll()},this.createTransition=function(e){var t=this.designer.GetComponentByType("WorkflowDesignerTransition");return t.CreateNewTransition(e)}}function WorkflowDesignerActivityControl(e){var t=this;this.manager=e.manager,this.designer=e.designer,this.x=e.x,this.y=e.y,this.item=e.item,this.control=void 0,this.rectangle=void 0,this.text=void 0,this.deleteButton=void 0,this.createTransitionAndActivityButton=void 0,this.createTransitionButton=void 0,this.selected=!1,this.dependentTransitions=new Array,this.getX=function(){return this.rectangle.attrs.x+this.control.attrs.x},this.getY=function(){return this.rectangle.attrs.y+this.control.attrs.y},this.GetName=function(){return this.item.Name},this.SetName=function(e){this.item.Name=e},this.Draw=function(){var i=t.designer.Settings;t.control=new Kinetic.Group({x:e.x,y:e.y,rotationDeg:0,draggable:!0,dragBoundFunc:function(e){var n=(i.DefaultMoveStep*t.manager.Layer.getScaleX(),i.DefaultMoveStep*t.manager.Layer.getScaleY()),e={x:Math.round(e.x/n)*n,y:Math.round(e.y/n)*n};if(t.selected){var o=this.getAbsolutePosition();t.manager.ObjectMove({sender:t,changepos:{x:e.x-o.x,y:e.y-o.y}})}return e}});var n=WorkflowDesignerConstants.ActivityColor;t.item.IsFinal&&(n=WorkflowDesignerConstants.ActivityFinalColor),t.item.IsInitial&&(n=WorkflowDesignerConstants.ActivityInitialColor),t.designer.GetCurrentActivity()==t.item.Name&&(n=WorkflowDesignerConstants.ActivityCurrentColor),t.rectangle=new Kinetic.Rect({x:0,y:0,width:this.designer.Settings.DefaultActivityWidth,height:this.designer.Settings.DefaultActivityHeight,stroke:"black",strokeWidth:1,fill:n,shadowOpacity:.5}),t.text=new Kinetic.Text({x:2,y:2,text:this.GetName(),fontSize:12,fontFamily:"Calibri",fontStyle:"bold",fill:"black"}),t.text.setX((t.rectangle.attrs.width-t.text.getWidth())/2),t.text.setY((t.rectangle.attrs.height-t.text.getHeight())/2-6),void 0==t.item.State&&(t.item.State=""),t.stateText=new Kinetic.Text({x:2,y:2,text:WorkflowDesignerConstants.ActivityFormLabel.State+": "+t.item.State,fontSize:10,fontFamily:"Calibri",fill:"black"}),t.stateText.setX((t.rectangle.attrs.width-t.stateText.getWidth())/2),t.stateText.setY(t.text.getY()+15),t.deleteButton=new Kinetic.Image({x:t.rectangle.attrs.width-13,y:3,image:t.manager.ImageDeleteActivity,width:10,height:10}),t.createTransitionAndActivityButton=new Kinetic.Image({x:t.rectangle.attrs.width-13,y:t.rectangle.attrs.height-26,image:t.manager.ImageCreateTransitionAndActivity,width:10,height:10}),t.createTransitionButton=new Kinetic.Image({x:t.rectangle.attrs.width-13,y:t.rectangle.attrs.height-13,image:t.manager.ImageCreateTransition,width:10,height:10}),t.control.add(t.rectangle),t.control.add(t.text),t.control.add(t.stateText),t.control.add(t.deleteButton),t.control.add(t.createTransitionAndActivityButton),t.control.add(t.createTransitionButton),this.control.on("dragend",this.Sync),this.control.on("dragmove",this._onMove),this.control.on("click",this._onClick),this.control.on("dblclick",this._onDblClick),this.deleteButton.on("click",this._onDelete),this.createTransitionAndActivityButton.on("click",this._onCreateTransitionAndActivity),this.createTransitionButton.on("click",this._onCreateTransition),t.manager.Layer.add(t.control)},this.Delete=function(){this.control.destroy(),this.designer.data.Activities.splice(this.designer.data.Activities.indexOf(this.item),1),this.manager.ItemControls.splice(this.manager.ItemControls.indexOf(this),1);for(var e=new Array,t=0;t=t.xl&&e.x=t.yl&&e.yt.xr||e.xrt.yr||e.yr10||Math.abs(i.yl-i.yr)>10)&&(t.designer.DeselectAll(),t.designer.ComponentsExecute("SelectByPosition",i))}t._mousedownpos=void 0,t.DeleteSelectionRect()})},this.setMoveModeEnabled=function(e){this._movemodeenabled=e,this.RectBG.setDraggable(this._movemodeenabled)},this.LayerScale=function(e){this.BackgroundLayer.setScale({x:this.BackgroundLayer.getScale().x+e,y:this.BackgroundLayer.getScale().y+e})},this.LayerScaleNorm=function(e){this.BackgroundLayer.setScale({x:1,y:1}),this.SelectionLayer.setScale({x:1,y:1}),this.RectBG.setPosition({x:0,y:0})},this.DrawSelectionRect=function(e){this.RectSelection?(this.RectSelection.setWidth(e.x-this._mousedownpos.x),this.RectSelection.setHeight(e.y-this._mousedownpos.y)):(this.RectSelection=new Kinetic.Rect({x:this._mousedownpos.x,y:this._mousedownpos.y,width:e.x-this._mousedownpos.x,height:e.y-this._mousedownpos.y,draggable:!1,fill:"#66CCFF",opacity:.2}),this.SelectionLayer.add(this.RectSelection)),this.SelectionLayer.batchDraw()},this.DeleteSelectionRect=function(e){this.RectSelection&&(this.RectSelection.destroy(),this.RectSelection=void 0,this.SelectionLayer.batchDraw())},this.getSelectionRectPos=function(){if(void 0!=this.RectSelection){var e=this.RectSelection.getAbsolutePosition(),t=e.x,i=e.y,n=t+this.RectSelection.getWidth()*this.SelectionLayer.getScaleX(),o=i+this.RectSelection.getHeight()*this.SelectionLayer.getScaleX();return{xl:Math.min(t,n),yl:Math.min(i,o),xr:Math.max(t,n),yr:Math.max(i,o)}}}}function WorkflowDesignerKeyboard(){this.type="WorkflowDesignerKeyboard",this.init=function(e){this.designer=e}}function WorkflowDesignerToolbar(){this.type="WorkflowDesignerToolbar";var e=this;this.init=function(t){this.designer=t,this.Layer=new Kinetic.Layer,this.designer.Stage.add(this.Layer),this.Layer.setZIndex(4);var i=40,n=10,o=0;this.Items.forEach(function(t){t.index=o,o++,t.separator||(t.ImageToolbar=new Image,t.ImageToolbar.onload=function(){t.cImageToolbar=new Kinetic.Image({x:i+40*t.index,y:n,image:t.ImageToolbar,width:32,height:32,strokeWidth:0}),t.cImageToolbar.on("click",t.click),e.Layer.add(t.cImageToolbar),WorkflowDesignerTooltip(e.Layer,t.cImageToolbar,t.title),e.Layer.batchDraw()},t.ImageToolbar.src=e.designer.Settings.imagefolder+t.img,t.imgactive&&(t.ImageActiveToolbar=new Image,t.ImageActiveToolbar.src=e.designer.Settings.imagefolder+t.imgactive))}),this.CreateInfoBlock({x:i+40*(this.Items[this.Items.length-1].index+1),y:n-7});var r=this.GetWorkflowDesignerBackground();r.RectBG.setDraggable(!1)},this.draw=function(){this.GraphRedrawAll()},this.GraphRedrawAll=function(){this.UpdateInfoBlock(),this.Layer.batchDraw()},this.CreateInfoBlock=function(e){this.infoText=new Kinetic.Text({text:this.GetInfoBlockText(),fontFamily:"Calibri",fontSize:12,padding:5,fill:"black"}),this.info=new Kinetic.Group(e),this.info.add(this.infoText),this.Layer.add(this.info)},this.UpdateInfoBlock=function(e){this.infoText.setText(this.GetInfoBlockText())},this.GetInfoBlockText=function(){var e=0,t=0,i=0;return void 0!=this.designer.data&&(e=this.designer.data.Activities.length,t=this.designer.data.Transitions.length,i=this.designer.data.Commands.length),WorkflowDesignerConstants.InfoBlockLabel.Activity+e+"\r\n"+WorkflowDesignerConstants.InfoBlockLabel.Transition+t+"\r\n"+WorkflowDesignerConstants.InfoBlockLabel.Command+i},this.ToolbarMovePress=function(){var e=this.GetWorkflowDesignerBackground();e.setMoveModeEnabled(!e._movemodeenabled);var t=this.GetItemByCode("move").cImageToolbar;e._movemodeenabled?(t.setStrokeWidth(4),t.setStrokeEnabled(!0),t.setStroke(WorkflowDesignerConstants.SelectColor)):(t.setStrokeEnabled(!1),t.setStroke("black")),this.Layer.batchDraw()},this.GetWorkflowDesignerBackground=function(){return this.designer.GetComponentByType("WorkflowDesignerBackground")},this.CreateActivity=function(){var e=this.designer.GetComponentByType("WorkflowDesignerActivity");e.CreateNewActivity(),this.designer.redrawAll()},this.AutoArrangement=function(){if(0!=e.designer.data.Activities.length){var t=new Array;e.designer.data.Activities.forEach(function(e){e.IsInitial&&t.push(e)}),e.designer.data.Activities.forEach(function(i){if(!i.IsInitial){for(var n=!0,o=0;o=0||(c.DesignerSettings.X=s.x,o.push(c),d.push(c))}for(var l=0;l0&&(s.y+=n.y);var h=new Array;e.designer.data.Transitions.forEach(function(e){"Direct"==e.Classifier&&e.From==c&&h.push(e.To)}),c.DesignerSettings.Y=s.y;var m=r(h,{x:s.x,y:s.y});s.y=m.y}return{x:s.x,y:s.y}};r(t,i,!0),e.designer.data.Transitions.forEach(function(e){void 0==e.DesignerSettings&&(e.DesignerSettings={}),e.DesignerSettings.Bending=0}),e.designer.Draw(e.designer.data)}},this.CopySelectedGenUniqueValue=function(e,t,i){for(var n=e,o=1;!0;o++){for(var r=!1,a=0;a'),beforerowadded:function(e){void 0!=e.Type&&(e.Type=decodeURIComponent(e.Type))},onrowadded:function(e){var t=e.find("[name=Purpose]"),i=t[0];t.change(function(){s(e)}),void 0!=i&&"System"!==i.value&&e.find('[name=Purpose] option[value="System"]').remove(),s(e)}},o=new WorkflowDesignerForm(n),r=function(){for(var e=$(o.window.find(".WorkflowDesignerTable"))[0],t=0;t"),n.top.buttonset().click(function(e,t){var i=n.top.buttonset().first()[0].childNodes[0].checked;i?a():r()});var l=function(e,i){if(o.CheckRequired(e,["Name","Type","Purpose","Parameter"],WorkflowDesignerConstants.FieldIsRequired)&&o.CheckUnique(e,["Name"],WorkflowDesignerConstants.FieldMustBeUnique)){o.ClearTempField(e),t.SyncTable(t.designer.data.Parameters,e,n);for(var r=0;r=0;n--){var r=$.grep(t,function(t){return e[n][i.keyproperty]==t.keyproperty});0==r.length?e.splice(n,1):i.elements.forEach(function(t){e[n][t.field]=r[0][t.field]})}for(var n=0;n0?1:d>=Math.PI/2?-1:0>=d&&d>-Math.PI/2?-1:1,s=(d>0?1:-1)*s;var c=a*l*s,h=(e+i)/2,m=(t+n)/2,g=h-c*Math.cos(Math.PI/2+d),u=m-c*Math.sin(Math.PI/2+d);return{x:g,y:u}},this.DrawTransition=function(e,t){var i,n,o,r,a=this.bending,s=50,d=this.from.rectangle,l=this.to.rectangle;i=this.from.getX(),n=this.from.getY(),o=this.to.getX(),r=this.to.getY();var c,h,m,g,u=i+d.attrs.width/2,f=n+d.attrs.height/2,p=o+l.attrs.width/2,y=r+l.attrs.height/2;p>=u-s-l.attrs.width/2&&p<=u+s+l.attrs.width/2&&y>=f?(c=u,h=n+d.attrs.height,m=p,g=r):p>=u-s-l.attrs.width/2&&p<=u+s+l.attrs.width/2&&f>y?(c=u,h=n,m=p,g=r+l.attrs.height):u>p?(c=i,h=f,m=o+l.attrs.width,g=y):(c=i+d.attrs.width,h=n+d.attrs.height/2,m=o,g=r+l.attrs.height/2),void 0!=e&&(c=e.x,h=e.y),void 0!=t&&(m=t.x,g=t.y);var v=Math.atan2(g-h,m-c),C=this._getLineLength(c,h,m,g),w=this._getCBPoint(c,h,m,g,v,C,a),T=w.x,A=w.y,S=.5,b=Math.atan2(g-A,m-T),D=Math.PI/10*(a>0?1:0>a?-1:0);Math.abs(v)>=Math.PI/2&&(D=-D),b+=D;var k=void 0==this.item.Classifier?"notspecified":this.item.Classifier.toLowerCase(),I="notspecified"==k?"gray":"direct"==k?"green":"red";if(this.start={x:c,y:h},this.end={x:m,y:g},this.middle={x:T,y:A},this.angle=b,this.lineAngle=v,this.control)WorkflowDesignerCommon.updateArrowByAngle(this.arrow,m,g,b,15,I),this.line.setPoints([c,h,T,A,m,g]),this.line.setTension(S);else{this.control=new Kinetic.Group({x:0,y:0,rotationDeg:0}),this.arrow=WorkflowDesignerCommon.createArrowByAngle(m,g,b,15,I);var x={points:[c,h,T,A,m,g],stroke:I,strokeWidth:1,lineCap:"round",lineJoin:"round",tension:S};this.item.IsFork&&(x.dash=[10,10]),this.line=new Kinetic.Line(x),this.control.add(this.line),this.control.add(this.arrow),this.manager.Layer.add(this.control)}},this.DrawActivePoint=function(){if(this.activePoint)this._moveActivePoint(this.middle.x,this.middle.y);else{var e=this._createActivePoint(this.middle.x,this.middle.y,this.control);t.manager.APLayer.add(e),this.activePoint=e}},this.DrawTouchPoints=function(){var e=.1*this._getLineLength(this.start.x,this.start.y,this.end.x,this.end.y);if(2==this.touchpoints.length)this._moveTouchPoints(this.touchpoints[0],this.start.x,this.start.y,e,this.angle,this.lineAngle),this._moveTouchPoints(this.touchpoints[1],this.end.x,this.end.y,e,this.angle,this.lineAngle,!0);else{var i=this._createTouchPoint(this.start.x,this.start.y,e,this.angle,this.lineAngle,this.control),n=this._createTouchPoint(this.end.x,this.end.y,e,this.angle,this.lineAngle,this.control,!0);t.manager.APLayer.add(i),t.manager.APLayer.add(n),this.touchpoints=[i,n]}},this.Draw=function(e,t){this.DrawTransition(e,t),this.DrawActivePoint(),this.DrawTouchPoints()},this.DeleteTouchPoint=function(e){for(var t=0;t=s&&(a=-a,s=-s,d=-d);var l=-(d+a*o)/s,c=r>l?-1:1,h=this._getLineLength(e,t,i,n),m=(e+i)/2,g=(t+n)/2,u=this._getLineLength(m,g,o,r),f=u/h*c;return 0==s&&(f=-f),f},this.getIntersectingRect=function(e){var t=this.activePoint.getAbsolutePosition();return t.x>=e.xl&&t.x=e.yl&&t.yAdditional params").button({icons:{primary:"ui-icon-wrench"},text:!1}).on("click",function(){a.is(":visible")&&"and"===g?a.hide():a.show(),s.is(":visible")&&"and"===u?s.hide():s.show()});p.append(" "),p.append(y);var v=$(e.find("[name=condition]").parent().parent().children()[0]),C=$("").button({icons:{primary:"ui-icon-wrench"},text:!1}).on("click",function(){d.is(":visible")&&"and"===f?d.hide():d.show()});v.append(" "),v.append(C)}},n=new WorkflowDesignerForm(i),o=function(e,i){var n=!0;n&=e.CheckRequired([i],["Name"],WorkflowDesignerConstants.FieldIsRequired);var o=["Type"];"Command"==i.Trigger.Type?o.push("Command.Name"):"Timer"==i.Trigger.Type&&o.push("Timer.Name"),n&=e.CheckRequired([i.Trigger],o,WorkflowDesignerConstants.FieldIsRequired),i.Conditions.forEach(function(t){o=["Type"],"Action"==t.Type&&o.push("Action.ActionName"),n&=e.CheckRequired([t],o,WorkflowDesignerConstants.FieldIsRequired),"Always"==t.Type&&i.Conditions.length>1?(n=!1,e.ControlAddError(t.control_Type,WorkflowDesignerConstants.AlwaysConditionShouldBeSingle)):"Otherwise"==t.Type&&i.Conditions.length>1&&(n=!1,e.ControlAddError(t.control_Type,WorkflowDesignerConstants.OtherwiseConditionShouldBeSingle))});var r=$(i.control_Conditions.parent().parent().children()[0]).children("label");return!i.Conditions.length>0?(r.attr("title",WorkflowDesignerConstants.TransitionFormLabel.ConditionsListShouldNotBeEmpty),r.css("color","red"),n=!1):(r.attr("title",void 0),r.css("color","")),t.designer.data.Transitions.forEach(function(o){o!=t.item&&o.Name==i.Name&&(n=!1,e.ControlAddError(i.control_Name,WorkflowDesignerConstants.FieldMustBeUnique))}),e.CheckRequired(i.Restrictions,["Type","Actor.Name"],WorkflowDesignerConstants.FieldIsRequired)||(n=!1),n},r=function(e){return o(n,e)?(n.ClearTempField(e),t.item.Name=e.Name,t.item.From.Name=e.From.Name,t.item.To.Name=e.To.Name,t.item.Classifier=e.Classifier,t.item.Restrictions=e.Restrictions,t.item.Trigger=e.Trigger,t.item.Conditions=e.Conditions,t.item.IsFork=e.IsFork,t.item.MergeViaSetState=e.MergeViaSetState,t.item.DisableParentStateControl=e.DisableParentStateControl,t.item.ConditionsConcatenationType=e.ConditionsConcatenationType,t.item.AllowConcatenationType=e.AllowConcatenationType,t.item.RestrictConcatenationType=e.RestrictConcatenationType,WorkflowDesignerCommon.DataCorrection(t.designer.data),t.designer.Draw(t.designer.data),!0):!1};n.showModal(r)},this.Sync=function(){t.item.DesignerSettings.Bending=t.bending},this.destroy=function(){this.control.destroy(),this.activePoint.destroy(),this.touchpoints.forEach(function(e){e.destroy()})}}function WorkflowDesignerTransitionTempControl(e){this.x=e.x,this.y=e.y,this.manager=e.manager,this.control=void 0,this.Draw=function(e,t){this.control=new Kinetic.Group({x:0,y:0,rotationDeg:0}),this.line=new Kinetic.Line({points:[this.x,this.y,e,t],stroke:"#FFCC99",strrokeWidth:1});var i=Math.atan2(t-this.y,e-this.x);this.arrow=WorkflowDesignerCommon.createArrowByAngle(e,t,i,20,"#FFCC99"),this.control.add(this.line),this.control.add(this.arrow),this.manager.Layer.add(this.control)},this.Redraw=function(e){this.line.setPoints([this.x,this.y,e.x,e.y]);var t=Math.atan2(e.y-this.y,e.x-this.x);WorkflowDesignerCommon.updateArrowByAngle(this.arrow,e.x,e.y,t,20,"#FFCC99")},this.Delete=function(){this.control.destroy()}}function WorkflowDesignerForm(e){this.type="WorkflowDesignerForm",this.parameters=e,this.id=WorkflowDesignerCommon.createUUID(),this.isReadOnly=function(){return this.parameters.readonly},this.showModal=function(e){var t=this;t.window=$("
    "),t.window.id=this.id;var i=void 0;"table"===this.parameters.type?i=this.generateTable(this.parameters):"form"===this.parameters.type&&(i=this.generateForm(this.parameters)),void 0==i&&(i=new Array),void 0!=t.parameters.top&&i.unshift(t.parameters.top),void 0!=t.parameters.bottom&&i.push(t.parameters.bottom),t.window.append(i),void 0!=this.parameters.renderFinalFunc&&this.parameters.renderFinalFunc(i),t.window.dialog({modal:!0,title:this.parameters.title,width:this.parameters.width,maxHeight:WorkflowDesignerConstants.FormMaxHeight,beforeClose:function(i,n){if(t.ClearError(),void 0!=e&&!t.isReadOnly()){var o=t.getEditData(t.parameters);return e(o,t.parameters)}},close:function(e,t){$(this).dialog("destroy").remove()}})},this.getEditData=function(e){var t,i=this;if("form"==e.type)t={},e.elements.forEach(function(e){t["control_"+e.field]=e.control,"table"==e.type||"form"==e.type?t[e.field]=i.getEditData(e):i.SetValueByPropertyName(t,e.field,i.getEasyControlValue(e))});else if("table"==e.type){t=[];var n=e.control;if(e.elements.forEach(function(e){var o=i.getElementCode(e),r="[name="+o+"]",a=n.find(r);if(void 0!=a)for(var s=0;s');n.attr("name",i.getElementCode(e));var o=new Array;return e.elements.forEach(function(n){var r=$("");void 0==t&&(t="");var a=t+"_"+n.field,s=$("");if(s[0].innerHTML=n.name,r.append($("").append(s)),"table"==n.type){n.fieldFunc?n.data=n.fieldFunc(e.data):n.data=e.data[n.field];var d=i.generateTable(n,a);r.append($("").append(d))}else if("form"==n.type){n.fieldFunc?n.data=n.fieldFunc(e.data):n.data=e.data[n.field];var d=i.generateForm(n,a);r.append($("").append(d))}else{var l=i.generateEasyControls(n,i.GetValueByPropertyName(e.data,n.field),a);s[0]["for"]=l[0].id,n.control=l[0],r.append($("").append(l[0]))}o.push(r)}),e.control=n,n.append(o),n},this.generateTable=function(e,t){var i=this,n=$('
    ');n.attr("name",i.getElementCode(e));var o=$(""),r=$("");e.elements.forEach(function(e){var t=$("");t[0].innerHTML=e.name,void 0!=e.width&&(t[0].width=e.width),r.append(t)}),this.isReadOnly()||r.append(""),o.append(r),n.append(o);var a=function(o){void 0!=e.beforerowadded&&e.beforerowadded(o);var r=$("");e.keyproperty&&r.attr("keyproperty",o[e.keyproperty]),void 0==t&&(t="");var a=t+WorkflowDesignerCommon.createUUID();if(e.elements.forEach(function(e){if("table"==e.type){e.fieldFunc?e.data=e.fieldFunc(o):e.data=o[e.field];var t=i.generateTable(e,a);r.append($("").append(t))}else{var n=i.generateEasyControls(e,i.GetValueByPropertyName(o,e.field),a,o);r.append($("").append(n))}}),!i.isReadOnly()){var s=$('');s[0].innerHTML=WorkflowDesignerConstants.ButtonTextDelete,s[0].href="#",s.on("click",function(){return r.remove(),!1}),r.append($("").append(s))}n.append(r),void 0!=e.onrowadded&&e.onrowadded(r)};void 0!=e.data&&e.data.forEach(function(e){a(e)}),e.control=n;var s=new Array;if(s.push(n),!this.isReadOnly()){var d=$('');d[0].innerHTML=WorkflowDesignerConstants.ButtonTextCreate,d[0].href="#",d.on("click",function(){var t={};return e.datadefault&&(t=e.datadefault),a(t),!1}),s.push(d)}return s},this.generateEasyControls=function(e,t,i,n){var o=this;if("input"==e.type){var r=$('');if(r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),void 0!=t&&(r[0].value=t),o.isReadOnly()&&r.attr("readonly",!0),void 0!=e.datasource){var a={minLength:0,autoFocus:!0,source:e.datasource,open:function(e,t){$(this).autocomplete("option","appendTo",r[0].id),r[0].acwasopened||($(this).autocomplete("close"),r[0].acwasopened=!0,$(this).autocomplete("search",r[0].value))}};r.autocomplete(a),r.autocomplete("option","appendTo",r[0].id)}return r}if("json"==e.type){var r=$('');r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),void 0!=t&&(r[0].value=t),o.isReadOnly()&&r.attr("readonly",!0);var s=$('');s[0].id=r[0].id+"_button";var d=$('
    '+r[0].value+"
    ");return d[0].id=r[0].id+"_form",s.on("click",function(t){var i=d.dialog({autoOpen:!1,height:WorkflowDesignerConstants.EditJSONSettings.Height,width:WorkflowDesignerConstants.EditJSONSettings.Width,modal:!0,buttons:{},close:function(){var e=ace.edit(r[0].id+"_editor").getValue();r[0].value=o.toCompactJSON(e)}}),n=d.dialog("option","buttons");r[0].readOnly||$.extend(n,{format:{text:WorkflowDesignerConstants.EditJSONLabel.Format,click:function(){var e=ace.edit(r[0].id+"_editor").getValue();a.setValue(o.toPrettyJSON(e)),a.clearSelection()}}}),void 0==e.getemptytype||r[0].readOnly||$.extend(n,{createemptytype:{text:WorkflowDesignerConstants.EditJSONLabel.CreateEmptyType,click:function(){var t=e;void 0!=t.getemptytype&&t.getemptytype(o,r[0],function(e){void 0!=e&&""!=e&&(a.setValue(o.toPrettyJSON(e)),a.clearSelection())})}}}),d.dialog("option","buttons",n);var a=ace.edit(r[0].id+"_editor");r[0].readOnly?a.setOptions({readOnly:!0}):a.setOptions({readOnly:!1}),a.getSession().setMode("ace/mode/json"),a.setValue(o.toPrettyJSON(r[0].value)),a.clearSelection(),i.dialog("open")}),$('
    ').append($('
    ').append(s)).append($('
    ').append(r))}if("code"==e.type){void 0==t&&(t="");var r=$("");r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),r[0].code={},r[0].code.code=decodeURIComponent(t);var l=n.Usings;l=void 0==l?o.parameters.designer.data.AdditionalParams.Usings.join(";")+";":decodeURIComponent(l),r[0].code.usings=l;var d=$('

    '+WorkflowDesignerConstants.EditCodeLabel.Usings+'

    '+this.htmlEncode(r[0].code.code)+'
    }
    ');return d[0].id=r[0].id+"_form",o.isReadOnly()&&r.attr("disabled",!0),r.on("click",function(e){var t=d.dialog({autoOpen:!1,height:WorkflowDesignerConstants.EditCodeSettings.Height,width:WorkflowDesignerConstants.EditCodeSettings.Width,modal:!0,buttons:{compile:{text:WorkflowDesignerConstants.EditCodeLabel.Compile, -click:function(){for(var e=o.getEditData(o.parameters),t=void 0,i=0;i'+(e.Success?WorkflowDesignerConstants.EditCodeLabel.CompileSucceeded:e.Message)+"").dialog({modal:!0,height:e.Success?WorkflowDesignerConstants.EditCodeSettingsSuccessBoxHeight:WorkflowDesignerConstants.EditCodeSettings.MessageBoxHeight,width:e.Success?WorkflowDesignerConstants.EditCodeSettings.SuccessBoxWidth:WorkflowDesignerConstants.EditCodeSettings.MessageBoxWidth,buttons:{ok:{text:WorkflowDesignerConstants.EditCodeLabel.OK,click:function(){$(this).dialog("close")}}}})};o.parameters.designer.designer.compile(t,n)}}}},close:function(){r[0].code={},r[0].code.code=ace.edit(r[0].id+"_editor").getValue(),r[0].code.usings=$("#"+r[0].id+"_usingsedit")[0].value.replace(/(\r\n|\n|\r)/gm,"")}});$("#"+r[0].id+"_usingsedit")[0].value=o.htmlEncode(o.modifyUsingString(r[0].code.usings)),$("#"+r[0].id+"_usings").accordion({collapsible:!0,active:!1,heightStyle:"content"});var n=$("#"+o.generateid("Type",i))[0].value.toLowerCase(),a=$("#"+o.generateid("Name",i))[0].value;""===a&&(a="???");var s="{";"action"===n&&(s="void "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string parameter) {"),"condition"===n&&(s="bool "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string parameter) {"),"ruleget"===n&&(s="IEnumerable<string> "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string parameter) {"),"rulecheck"===n&&(s="bool "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string identityId, string parameter) {"),$("#"+r[0].id+"_function_upper").html(s);var l=ace.edit(r[0].id+"_editor");l.getSession().setMode("ace/mode/csharp"),t.dialog("open")}),r}if("checkbox"==e.type){var r=$('');return r[0].type="checkbox",r[0].id=this.generateid(e.field,i),r[0].checked=t,r[0].name=o.getElementCode(e),o.isReadOnly()&&r.attr("disabled","disabled"),r}if("select"==e.type){var r=$('');return r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),r.append($("")),void 0!=e.datasource&&e.datasource.forEach(function(i){var n=$("");void 0==e.displayfield?(n[0].value=i,n[0].innerHTML=i):(n[0].value=i[e.displayfield],n[0].innerHTML=i[e.displayfield]),n[0].value==t&&(n[0].selected="selected"),o.isReadOnly()&&r.attr("readonly",!0),r.append(n)}),r}if("textarea"==e.type){var r=$('');return r[0].id=o.generateid(e.field,i),r[0].name=o.getElementCode(e),void 0!=t&&(r[0].value=t),this.isReadOnly()&&r.attr("readonly",!0),r}},this.modifyUsingString=function(e){var t=e.substring(e.length-1);return";"===t&&(e=e.substring(0,e.length-1)),e.split(";").join(";\r\n")+";"},this.getEasyControlValue=function(e){return"input"==e.type?e.control.value:"json"==e.type?e.control.value:"code"==e.type?e.control.code:"checkbox"==e.type?e.control.checked:"select"==e.type?e.control.value:"textarea"==e.type?e.control.value:void 0},this.generateid=function(e,t){return t?e+"_"+t+"_"+this.id:e+"_"+this.id},this.GetValueByPropertyName=function(e,t){if(void 0!=e){if(t.indexOf(".")<0)return e[t];var i=e;return t.split(".").forEach(function(e){void 0!=i&&(i=i[e])}),i}},this.SetValueByPropertyName=function(e,t,i){if(t.indexOf(".")<0)return e[t]=i;for(var n=e,o=t.split("."),r=0;r").text(e).html()},this.htmlDecode=function(e){return $("
    ").html(e).text()},this.toCompactJSON=function(e){try{return JSON.stringify(JSON.parse(e))}catch(t){try{return JSON5.stringify(JSON5.parse(e))}catch(t){return e}}},this.toPrettyJSON=function(e){try{return JSON.stringify(JSON.parse(e),null," ")}catch(t){try{return JSON5.stringify(JSON5.parse(e),null," ")}catch(t){return e}}}}function WorkflowGraph(e,t,i,n){var o=this;o.container=e,o.designer=t,void 0==i&&(i=new Object),void 0==i.Container&&(i.Container="container"),void 0==i.graphwidth&&(i.graphwidth=1024),void 0==i.graphheight&&(i.graphheight=768),void 0==i.DefaultActivityWidth&&(i.DefaultActivityWidth=150),void 0==i.DefaultActivityHeight&&(i.DefaultActivityHeight=75),void 0==i.DefaultMoveStep&&(i.DefaultMoveStep=10),void 0==i.imagefolder&&(i.imagefolder="/images/"),this.Settings=i,this.Settings.ContainerStage=this.container+"_stage",$("#"+this.container).append("
    "),this.Stage=new Kinetic.Stage({container:this.Settings.ContainerStage,width:this.Settings.graphwidth,height:this.Settings.graphheight,stroke:"black"}),this.Components=new Array,this.AddComponent=function(e){var t=new e;return t.init(this),o.Components.push(t),t},this.GetComponentByType=function(e){for(var t=0;t0&&confirm(WorkflowDesignerConstants.DeleteConfirm)&&(e.forEach(function(e){e.Delete()}),this.redrawAll())},this.destroy=function(){this.Stage.destroy()},this.GetCurrentActivity=function(){if(void 0!=o.data&&void 0!=o.data.AdditionalParams&&void 0!=o.data.AdditionalParams.ProcessParameters)for(var e=0;ei;i++)e[i]=t.substr(Math.floor(16*Math.random()),1);e[14]="4",e[19]=t.substr(3&e[19]|8,1),e[8]=e[13]=e[18]=e[23]="-";var n=e.join("");return n},DataCorrection:function(e){void 0==e.AdditionalParams&&(e.AdditionalParams={}),void 0==e.AdditionalParams.Actions&&(e.AdditionalParams.Actions=[]),void 0==e.AdditionalParams.Rules&&(e.AdditionalParams.Rules=[]);var t=function(e,t){if(void 0!=e){var i=$.grep(t,function(t){return t==e});0==i.length&&t.push(e)}},i=function(e,t,i){if(void 0!=e&&void 0!=t){var n=$.grep(t,function(t){return e==t[i]});return n.length>0?n[0]:void 0}};e.Activities.forEach(function(i){void 0!=i.Implementation&&(i.Implementation.forEach(function(i){t(i.Name,e.AdditionalParams.Actions)}),i.PreExecutionImplementation.forEach(function(i){t(i.Name,e.AdditionalParams.Actions)}))}),e.Transitions.forEach(function(n){void 0!=n.From&&(n.From=i(n.From.Name,e.Activities,"Name")),void 0!=n.To&&(n.To=i(n.To.Name,e.Activities,"Name")),void 0!=n.Restrictions&&n.Restrictions.forEach(function(t){t.Actor=i(t.Actor.Name,e.Actors,"Name")}),void 0!=n.Condition&&void 0!=n.Condition.Action&&t(n.Condition.Action.Name,e.AdditionalParams.Actions),void 0!=n.Trigger&&void 0!=n.Trigger.Command&&(n.Trigger.Command=i(n.Trigger.Command.Name,e.Commands,"Name")),void 0!=n.Trigger&&void 0!=n.Trigger.Timer&&(n.Trigger.Timer=i(n.Trigger.Timer.Name,e.Timers,"Name"))}),e.Commands.forEach(function(t){void 0!=t.InputParameters&&t.InputParameters.forEach(function(t){t.Parameter=i(t.Parameter.Name,e.Parameters,"Name")})}),e.Actors.forEach(function(i){void 0!=i.Rule&&t(i.Rule,e.AdditionalParams.Rules)})},download:function(e,t,i){if(e&&t){var n=new Array;t.forEach(function(e){var t=$('');t.attr("name",e.name),t.attr("value",e.value),n.push(t)});var o=$('
    ');o.append(n),o.appendTo("body").submit().remove()}}}; \ No newline at end of file diff --git a/OpenAuth.Mvc/Views/Designer/Index.cshtml b/OpenAuth.Mvc/Views/Designer/Index.cshtml deleted file mode 100644 index 4e9653ab..00000000 --- a/OpenAuth.Mvc/Views/Designer/Index.cshtml +++ /dev/null @@ -1,95 +0,0 @@ -@{ - Layout = null; -} - - - - - - - - - - - - - - - - - - - - - - - - -
    大小: x - | -
    -
    -
    - - \ No newline at end of file diff --git a/OpenAuth.Mvc/Views/WorkflowSchemas/Index.cshtml b/OpenAuth.Mvc/Views/WorkflowSchemas/Index.cshtml deleted file mode 100644 index e8a4a647..00000000 --- a/OpenAuth.Mvc/Views/WorkflowSchemas/Index.cshtml +++ /dev/null @@ -1,40 +0,0 @@ -@{ - Layout = "~/Views/Shared/_Layout.cshtml"; -} - - - - - -
    -
    -
    -
    -
    - @Html.Action("MenuHeader", "Home") -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/OpenAuth.Mvc/Web.config b/OpenAuth.Mvc/Web.config index 7620ec72..446c1ed5 100644 --- a/OpenAuth.Mvc/Web.config +++ b/OpenAuth.Mvc/Web.config @@ -17,7 +17,6 @@ - @@ -53,8 +52,6 @@ - diff --git a/OpenAuth.Mvc/packages.config b/OpenAuth.Mvc/packages.config index 263d3356..cdaad854 100644 --- a/OpenAuth.Mvc/packages.config +++ b/OpenAuth.Mvc/packages.config @@ -25,7 +25,4 @@ - - - \ No newline at end of file diff --git a/OpenAuth.Repository/Models/Mapping/ApplyTransitionHistoryMap.cs b/OpenAuth.Repository/Models/Mapping/ApplyTransitionHistoryMap.cs deleted file mode 100644 index e318018f..00000000 --- a/OpenAuth.Repository/Models/Mapping/ApplyTransitionHistoryMap.cs +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a CodeSmith Template. -// -// DO NOT MODIFY contents of this file. Changes to this -// file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System.ComponentModel.DataAnnotations.Schema; -using OpenAuth.Domain; - -namespace OpenAuth.Repository.Models.Mapping -{ - public partial class ApplyTransitionHistoryMap - : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration - { - public ApplyTransitionHistoryMap() - { - // table - ToTable("ApplyTransitionHistory", "dbo"); - - // keys - HasKey(t => t.Id); - - // Properties - Property(t => t.Id) - .HasColumnName("Id") - .IsRequired(); - Property(t => t.ApplyId) - .HasColumnName("ApplyId") - .IsRequired(); - Property(t => t.UserId) - .HasColumnName("UserId") - .IsOptional(); - Property(t => t.AllowedToUserNames) - .HasColumnName("AllowedToUserNames") - .IsRequired(); - Property(t => t.TransitionTime) - .HasColumnName("TransitionTime") - .IsOptional(); - Property(t => t.Order) - .HasColumnName("Order") - .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) - .IsRequired(); - Property(t => t.InitialState) - .HasColumnName("InitialState") - .HasMaxLength(1024) - .IsRequired(); - Property(t => t.DestinationState) - .HasColumnName("DestinationState") - .HasMaxLength(1024) - .IsRequired(); - Property(t => t.Command) - .HasColumnName("Command") - .HasMaxLength(1024) - .IsRequired(); - - // Relationships - } - } -} diff --git a/OpenAuth.Repository/Models/OpenAuthDBContext.cs b/OpenAuth.Repository/Models/OpenAuthDBContext.cs index cef138c0..1b596acd 100644 --- a/OpenAuth.Repository/Models/OpenAuthDBContext.cs +++ b/OpenAuth.Repository/Models/OpenAuthDBContext.cs @@ -27,7 +27,6 @@ namespace OpenAuth.Repository.Models : base(nameOrConnectionString) { } - public System.Data.Entity.DbSet ApplyTransitionHistories { get; set; } public System.Data.Entity.DbSet Categories { get; set; } public System.Data.Entity.DbSet DicDetails { get; set; } public System.Data.Entity.DbSet DicIndices { get; set; } @@ -49,7 +48,6 @@ namespace OpenAuth.Repository.Models protected override void OnModelCreating(DbModelBuilder modelBuilder) { - modelBuilder.Configurations.Add(new ApplyTransitionHistoryMap()); modelBuilder.Configurations.Add(new CategoryMap()); modelBuilder.Configurations.Add(new DicDetailMap()); modelBuilder.Configurations.Add(new DicIndexMap()); diff --git a/OpenAuth.Repository/OpenAuth.Repository.csproj b/OpenAuth.Repository/OpenAuth.Repository.csproj index c66afd25..168e3ca6 100644 --- a/OpenAuth.Repository/OpenAuth.Repository.csproj +++ b/OpenAuth.Repository/OpenAuth.Repository.csproj @@ -55,8 +55,6 @@ - - @@ -64,7 +62,6 @@ - @@ -88,9 +85,6 @@ - - - diff --git a/OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs b/OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs deleted file mode 100644 index 49587103..00000000 --- a/OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs +++ /dev/null @@ -1,37 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a CodeSmith Template. -// -// DO NOT MODIFY contents of this file. Changes to this -// file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ - -using OpenAuth.Domain; - -namespace OpenAuth.Repository.Workflow.Mapping -{ - public partial class WorkflowSchemeMap - : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration - { - public WorkflowSchemeMap() - { - // table - ToTable("WorkflowScheme", "dbo"); - - // keys - HasKey(t => t.Code); - - // Properties - Property(t => t.Code) - .HasColumnName("Code") - .HasMaxLength(256) - .IsRequired(); - Property(t => t.Scheme) - .HasColumnName("Scheme") - .IsRequired(); - - // Relationships - } - } -} diff --git a/OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs b/OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs deleted file mode 100644 index a4f15f81..00000000 --- a/OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs +++ /dev/null @@ -1,134 +0,0 @@ -using System; -using System.Data.Entity; -using System.Data.Entity.Migrations; -using System.Linq; -using System.Linq.Expressions; -using EntityFramework.Extensions; -using Infrastructure; -using OpenAuth.Domain.Interface; - -namespace OpenAuth.Repository.Workflow -{ - public class WorkflowBaseRepository :IRepository where T:class - { - protected WorkflowContext Context = new WorkflowContext(); - - - /// - /// 根据过滤条件,获取记录 - /// - /// The exp. - public IQueryable Find(Expression> exp = null) - { - return Filter(exp); - } - - public bool IsExist(Expression> exp) - { - return Context.Set().Any(exp); - } - - /// - /// 查找单个 - /// - public T FindSingle(Expression> exp) - { - return Context.Set().AsNoTracking().FirstOrDefault(exp); - } - - /// - /// 得到分页记录 - /// - /// The pageindex. - /// The pagesize. - /// 排序,格式如:"Id"/"Id descending" - public IQueryable Find(int pageindex, int pagesize, string orderby = "", Expression> exp = null) - { - if (pageindex < 1) pageindex = 1; - if (string.IsNullOrEmpty(orderby)) - orderby = "Id descending"; - - return Filter(exp).OrderBy(orderby).Skip(pagesize * (pageindex - 1)).Take(pagesize); - } - - /// - /// 根据过滤条件获取记录数 - /// - public int GetCount(Expression> exp = null) - { - return Filter(exp).Count(); - } - - public void Add(T entity) - { - Context.Set().Add(entity); - Save(); - } - - /// - /// 批量添加 - /// - /// The entities. - public void BatchAdd(T[] entities) - { - Context.Set().AddRange(entities); - Save(); - } - - public void Update(T entity) - { - var entry = this.Context.Entry(entity); - //todo:如果状态没有任何更改,会报错 - entry.State = EntityState.Modified; - - Save(); - } - - public void Delete(T entity) - { - Context.Set().Remove(entity); - Save(); - } - - /// - /// 按指定id更新实体,会更新整个实体 - /// - /// The identity exp. - /// The entity. - public void Update(Expression> identityExp, T entity) - { - Context.Set().AddOrUpdate(identityExp, entity); - Save(); - } - - /// - /// 实现按需要只更新部分更新 - /// 如:Update(u =>u.Id==1,u =>new User{Name="ok"}); - /// - /// The where. - /// The entity. - public void Update(Expression> where, Expression> entity) - { - Context.Set().Where(where).Update(entity); - } - - public virtual void Delete(Expression> exp) - { - Context.Set().Where(exp).Delete(); - } - - public void Save() - { - Context.SaveChanges(); - } - - private IQueryable Filter(Expression> exp) - { - var dbSet = Context.Set().AsQueryable(); - if (exp != null) - dbSet = dbSet.Where(exp); - return dbSet; - } - - } -} diff --git a/OpenAuth.Repository/Workflow/WorkflowContext.cs b/OpenAuth.Repository/Workflow/WorkflowContext.cs deleted file mode 100644 index 3dcfc01a..00000000 --- a/OpenAuth.Repository/Workflow/WorkflowContext.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a CodeSmith Template. -// -// DO NOT MODIFY contents of this file. Changes to this -// file will be lost if the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System.Data.Entity; -using OpenAuth.Domain; -using OpenAuth.Repository.Models; -using OpenAuth.Repository.Models.Mapping; -using OpenAuth.Repository.Workflow.Mapping; - -namespace OpenAuth.Repository.Workflow -{ - public partial class WorkflowContext: DbContext - { - static WorkflowContext() - { - Database.SetInitializer< OpenAuthDBContext>(null); - } - public WorkflowContext() - :base("Name=WorkFlow") - { } - - public WorkflowContext(string nameOrConnectionString) - : base(nameOrConnectionString) - { } - - - public System.Data.Entity.DbSet WorkflowSchemes { get; set; } - - protected override void OnModelCreating(DbModelBuilder modelBuilder) - { - modelBuilder.Configurations.Add(new WorkflowSchemeMap()); - - } - } -} \ No newline at end of file diff --git a/OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs b/OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs deleted file mode 100644 index 9dd8ad99..00000000 --- a/OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs +++ /dev/null @@ -1,11 +0,0 @@ -using OpenAuth.Domain; -using OpenAuth.Domain.Interface; - -namespace OpenAuth.Repository.Workflow -{ - public class WorkflowSchemeRepository:WorkflowBaseRepository,IWorkflowSchemeRepository - { - - - } -}