更改gooflow的导出数据格式,方便后端读取

This commit is contained in:
yubaolee 2018-03-20 17:40:50 +08:00
parent 37789838fa
commit 1a880c0daf
9 changed files with 76 additions and 362 deletions

View File

@ -1,64 +0,0 @@
using System.Collections.Generic;
namespace OpenAuth.App.Extention
{
public interface IWF_Runtime
{
#region API
/// <summary>
/// 工作流实例运行信息
/// </summary>
/// <returns></returns>
WF_RuntimeModel runtimeModel{get;}
/// <summary>
/// 获取实例接下来运行的状态
/// </summary>
/// <returns>-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束</returns>
int GetStatus();
/// <summary>
/// 获取节点类型 0会签开始,1会签结束,2一般节点,开始节点,4流程运行结束
/// </summary>
/// <param name="nodeId"></param>
/// <returns></returns>
int GetNodeStatus(string nodeId);
/// <summary>
/// 获取会签下面需要审核的ID列表
/// </summary>
/// <param name="shuntnodeId"></param>
/// <returns></returns>
List<string> GetCountersigningNodeIdList(string shuntnodeId);
/// <summary>
/// 通过节点Id获取下一个节点Id
/// </summary>
/// <param name="nodeId"></param>
/// <returns></returns>
string GetNextNodeByNodeId(string nodeId);
/// <summary>
/// 节点会签审核
/// </summary>
/// <param name="nodeId"></param>
/// <param name="flag"></param>
/// <returns>-1不通过,1等待,其它通过</returns>
string NodeConfluence(string nodeId, bool flag,string userId, string description = "");
/// <summary>
/// 驳回节点0"前一步"1"第一步"2"某一步" 3"不处理"
/// </summary>
/// <returns></returns>
string RejectNode();
/// <summary>
/// 驳回节点0"前一步"1"第一步"2"某一步" 3"不处理"
/// </summary>
/// <param name="nodeId"></param>
/// <returns></returns>
string RejectNode(string nodeId);
/// <summary>
/// 标记节点1通过-1不通过0驳回
/// </summary>
/// <param name="nodeId"></param>
/// <param name="flag"></param>
/// <param name="userId"></param>
/// <param name="description"></param>
void MakeTagNode(string nodeId, int flag,string userId, string description = "");
#endregion
}
}

View File

@ -5,7 +5,7 @@ using Infrastructure;
namespace OpenAuth.App.Extention
{
public class WF_Runtime : IWF_Runtime
public class WF_Runtime
{
private WF_RuntimeModel _runtimeModel = null;

View File

@ -182,100 +182,6 @@ namespace OpenAuth.App
}
}
/// <summary>
/// 删除工作流实例进程(删除草稿使用)
/// </summary>
/// <param name="keyValue">主键</param>
/// <returns></returns>
public int DeleteProcess(string keyValue)
{
try
{
FlowInstance entity = UnitWork.FindSingle<FlowInstance>(u =>u.Id ==keyValue);
UnitWork.Delete<FlowInstance>(u =>u.Id == keyValue);
UnitWork.Save();
return 1;
}
catch {
throw;
}
}
/// <summary>
/// 虚拟操作实例
/// </summary>
/// <param name="keyValue"></param>
/// <param name="state">0暂停,1启用,2取消召回</param>
/// <returns></returns>
public int OperateVirtualProcess(string keyValue,int state)
{
try
{
FlowInstance entity = UnitWork.FindSingle<FlowInstance>(u =>u.Id ==keyValue);
if (entity.IsFinish == 1)
{
throw new Exception("实例已经审核完成,操作失败");
}
else if (entity.IsFinish == 2)
{
throw new Exception("实例已经取消,操作失败");
}
/// 流程是否完成(0运行中,1运行结束,2被召回,3不同意,4表示被驳回)
string content = "";
switch (state)
{
case 0:
if (entity.Disabled == 0)
{
return 1;
}
entity.Disabled = 0;
content = "【暂停】暂停了一个流程进程【" + entity.Code + "/" + entity.CustomName + "】";
break;
case 1:
if (entity.Disabled == 1)
{
return 1;
}
entity.Disabled = 1;
content = "【启用】启用了一个流程进程【" + entity.Code + "/" + entity.CustomName + "】";
break;
case 2:
entity.IsFinish = 2;
content = "【召回】召回了一个流程进程【" + entity.Code + "/" + entity.CustomName + "】";
break;
}
UnitWork.Update(entity);
FlowInstanceOperationHistory processOperationHistoryEntity = new FlowInstanceOperationHistory();
processOperationHistoryEntity.InstanceId = entity.Id;
processOperationHistoryEntity.Content = content;
UnitWork.Add(processOperationHistoryEntity);
UnitWork.Save();
return 1;
}
catch
{
throw;
}
}
/// <summary>
/// 流程指派
/// </summary>
/// <param name="processId"></param>
/// <param name="makeLists"></param>
public void DesignateProcess(string processId, string makeLists)
{
try
{
FlowInstance entity = new FlowInstance();
entity.Id = processId;
entity.MakerList = makeLists;
UnitWork.Update(entity);
}
catch {
throw;
}
}
#endregion
@ -306,7 +212,7 @@ namespace OpenAuth.App
frmData = frmData,
processId = processId
};
IWF_Runtime wfruntime = null;
WF_Runtime wfruntime = null;
if (frmData == null)
{
@ -390,7 +296,7 @@ namespace OpenAuth.App
previousId = FlowInstance.PreviousId,
processId = processId
};
IWF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel);
WF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel);
#region »áÇ©
@ -560,7 +466,7 @@ namespace OpenAuth.App
previousId = FlowInstance.PreviousId,
processId = processId
};
IWF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel);
WF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel);
string resnode = "";
@ -608,138 +514,6 @@ namespace OpenAuth.App
throw;
}
}
/// <summary>
/// 召回流程进程
/// </summary>
/// <param name="processId"></param>
public void CallingBackProcess(string processId)
{
try
{
OperateVirtualProcess(processId, 2);
}
catch
{
throw;
}
}
/// <summary>
/// 终止一个实例(彻底删除)
/// </summary>
/// <param name="processId"></param>
/// <returns></returns>
public void KillProcess(string processId)
{
try
{
UnitWork.Delete<FlowInstance>(u => u.Id == processId);
}
catch
{
throw;
}
}
/// <summary>
/// 获取某个节点(审核人所能看到的提交表单的权限)
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public string GetProcessSchemeContentByNodeId(string data, string nodeId)
{
try
{
List<dynamic> list = new List<dynamic>();
dynamic schemeContentJson = data.ToJson();//获取工作流模板内容的json对象;
string schemeContent1 = schemeContentJson.SchemeContent.Value;
dynamic schemeContentJson1 = schemeContent1.ToJson();
string FrmContent = schemeContentJson1.Frm.FrmContent.Value;
dynamic FrmContentJson = FrmContent.ToJson();
foreach (var item in schemeContentJson1.Flow.nodes)
{
if (item.id.Value == nodeId && item.setInfo != null)
{
foreach (var item1 in item.setInfo.frmPermissionInfo)
{
foreach (var item2 in FrmContentJson)
{
if (item2.control_field.Value == item1.fieldid.Value)
{
if (item1.look.Value == true)
{
if (item1.down != null)
{
item2.down = item1.down.Value;
}
list.Add(item2);
}
break;
}
}
}
break;
}
}
schemeContentJson1.Frm.FrmContent = list.ToJson().ToString();
schemeContentJson.SchemeContent = schemeContentJson1.ToString();
return schemeContentJson.ToString();
}
catch
{
throw;
}
}
/// <summary>
/// 获取某个节点(审核人所能看到的提交表单的权限)
/// </summary>
/// <param name="data"></param>
/// <param name="userId"></param>
/// <returns></returns>
public string GetProcessSchemeContentByUserId(string data, string userId)
{
try
{
List<dynamic> list = new List<dynamic>();
dynamic schemeContentJson = data.ToJson();//获取工作流模板内容的json对象;
string schemeContent1 = schemeContentJson.SchemeContent.Value;
dynamic schemeContentJson1 = schemeContent1.ToJson();
string FrmContent = schemeContentJson1.Frm.FrmContent.Value;
dynamic FrmContentJson = FrmContent.ToJson();
foreach (var item in schemeContentJson1.Flow.nodes)
{
if (item.setInfo != null && item.setInfo.UserId != null && item.setInfo.UserId.Value == userId)
{
foreach (var item1 in item.setInfo.frmPermissionInfo)
{
foreach (var item2 in FrmContentJson)
{
if (item2.control_field.Value == item1.fieldid.Value)
{
if (item1.look.Value == true)
{
if (item1.down != null)
{
item2.down = item1.down.Value;
}
list.Add(item2);
}
break;
}
}
}
break;
}
}
schemeContentJson1.Frm.FrmContent = list.ToJson().ToString();
schemeContentJson.SchemeContent = schemeContentJson1.ToString();
return schemeContentJson.ToString();
}
catch
{
throw;
}
}
#endregion
/// <summary>
@ -747,7 +521,7 @@ namespace OpenAuth.App
/// </summary>
/// <param name="wfruntime"></param>
/// <returns></returns>
private string GetMakerList(IWF_Runtime wfruntime)
private string GetMakerList(WF_Runtime wfruntime)
{
try
{
@ -912,11 +686,6 @@ namespace OpenAuth.App
}
public FlowInstance GetProcessInstanceEntity(string keyValue)
{
return UnitWork.FindSingle<FlowInstance>(u => u.Id == keyValue);
}
/// <summary>
/// ÉóºËÁ÷³Ì
/// <para>ÀîÓñ±¦ÓÚ2017-01-20 15:44:45</para>
@ -955,9 +724,9 @@ namespace OpenAuth.App
}
public void Add(FlowInstance flowScheme)
public void Add(FlowInstance instance)
{
Repository.Add(flowScheme);
Repository.Add(instance);
}
public void Update(FlowInstance flowScheme)

View File

@ -15,20 +15,13 @@ namespace OpenAuth.App
private static string temp_view = "<div style=\"{0}\"/>{1}</div>";
/**
*
* : html
*/
public static string GetHtml(Form form, string action){
public static string GetHtml(string contentData, string contentParse, string action)
{
var tableData = new Dictionary<string, Object>();//表单数据
//action=action!=null && !""==(action)?action:"view";
var tableData =new Dictionary<string, Object>();//表单数据
string html = form.ContentParse;
foreach (var json in form.ContentData.ToList<JObject>())
string html = contentParse;
foreach (var json in contentData.ToList<JObject>())
{
string name = "";
string leipiplugins = json.GetValue("leipiplugins").ToString();
if ("checkboxs" == (leipiplugins))
@ -74,6 +67,17 @@ namespace OpenAuth.App
return html;
}
/**
*
* : html
*/
public static string GetHtml(Form form, string action){
//action=action!=null && !""==(action)?action:"view";
return GetHtml(form.ContentData, form.ContentParse, action);
}
//text
private static string GetTextBox(JObject item, Dictionary<string,Object> formData,string action)
{

View File

@ -107,7 +107,6 @@
<Compile Include="AuthorizeApp.cs" />
<Compile Include="CategoryApp.cs" />
<Compile Include="Define.cs" />
<Compile Include="Extention\IWF_Runtime.cs" />
<Compile Include="Extention\WF_Runtime.cs" />
<Compile Include="Extention\WF_RuntimeInitModel.cs" />
<Compile Include="Extention\WF_RuntimeModel.cs" />

View File

@ -1605,13 +1605,22 @@ GooFlow.prototype={
var t=this.$editable;
this.$editable=false;
if(data.title) this.setTitle(data.title);
if(data.initNum) this.$max=data.initNum;
for(var i in data.nodes)
this.addNode(i,data.nodes[i]);
for(var j in data.lines)
this.addLine(j,data.lines[j]);
for(var k in data.areas)
this.addArea(k,data.areas[k]);
if (data.initNum) this.$max = data.initNum;
if (data != "") {
var length,k;
for (k = 0, length = data.nodes.length; k < length; k++) {
this.addNode(data.nodes[k].id, data.nodes[k]);
}
for (k = 0, length = data.lines.length; k < length; k++) {
this.addLine(data.lines[k].id, data.lines[k]);
}
for (k = 0,length = data.areas.length; k < length; k++) {
this.addArea(data.areas[k].id, data.areas[k]);
}
}
this.$editable=t;
this.$deletedItem={};
//自行重构工作区,使之大小自适应
@ -1657,27 +1666,31 @@ GooFlow.prototype={
exportData:function(){
var ret={};
ret.title=this.$title;
ret.nodes={};
ret.lines={};
ret.areas={};
ret.nodes=[];
ret.lines=[];
ret.areas=[];
ret.initNum=this.$max;
for(var k1 in this.$nodeData){
if(!this.$nodeData[k1].marked){
delete this.$nodeData[k1]["marked"];
}
ret.nodes[k1]=JSON.parse(JSON.stringify(this.$nodeData[k1]));
ret.nodes.push(JSON.parse(JSON.stringify(this.$nodeData[k1])));
//ret.nodes[k1]=JSON.parse(JSON.stringify(this.$nodeData[k1]));
}
for(var k2 in this.$lineData){
if(!this.$lineData[k2].marked){
delete this.$lineData[k2]["marked"];
}
ret.lines[k2]=JSON.parse(JSON.stringify(this.$lineData[k2]));
ret.lines.push(JSON.parse(JSON.stringify(this.$lineData[k2])));
// ret.lines[k2]=JSON.parse(JSON.stringify(this.$lineData[k2]));
}
for(var k3 in this.$areaData){
if(!this.$areaData[k3].marked){
delete this.$areaData[k3]["marked"];
}
ret.areas[k3]=JSON.parse(JSON.stringify(this.$areaData[k3]));
ret.areas.push(JSON.parse(JSON.stringify(this.$areaData[k3])));
// ret.areas[k3]=JSON.parse(JSON.stringify(this.$areaData[k3]));
}
return ret;
},
@ -1953,7 +1966,10 @@ GooFlow.prototype={
}
},
//增加一条线
addLine:function(id,json){
addLine: function (id, json) {
if (json.id == undefined) {
$.extend(json, { id: id });
}
if(typeof this.onItemAdd==='function' && this.onItemAdd(id,"line",json)===false)return;
if(this.$undoStack&&this.$editable){
this.pushOper("delLine",[id]);

View File

@ -103,16 +103,15 @@
}
};
var load = function () {
var url = '/flowschemes/load';
$.getJSON(url, function (json) {
zTreeObj = $.fn.zTree.init($("#frmTree"), setting);
zTreeObj.addNodes(null, json.data);
$("#menutree").html("点击预览表单效果");
zTreeObj.expandAll(true);
});
};
var url = '/flowschemes/load';
$.getJSON(url, function (json) {
zTreeObj = $.fn.zTree.init($("#frmTree"), setting);
zTreeObj.addNodes(null, json.data);
$("#menutree").html("点击预览表单效果");
zTreeObj.expandAll(true);
});
var setCheck = function (id) { //设置已经选中的表单
if (id == null | id == '') return;
@ -125,13 +124,10 @@
}
return {
load: load,
setCheck: setCheck
}
}();
frmTree.load();
if (update) {
$.getJSON('/FlowInstances/get?id=' + id,
function (data) {

View File

@ -56,16 +56,14 @@
}
};
var load = function () {
var url = '/forms/load';
$.getJSON(url, function (json) {
zTreeObj = $.fn.zTree.init($("#frmTree"), setting);
zTreeObj.addNodes(null, json.data);
var url = '/forms/load';
$.getJSON(url, function (json) { //todo这个地方要用同步方式不然后面的setCheck会出问题
zTreeObj = $.fn.zTree.init($("#frmTree"), setting);
zTreeObj.addNodes(null, json.data);
$("#menutree").html("点击预览表单效果");
zTreeObj.expandAll(true);
});
};
$("#menutree").html("点击预览表单效果");
zTreeObj.expandAll(true);
});
var setCheck = function (id) { //设置已经选中的表单
if (id == null | id == '') return;
@ -78,7 +76,6 @@
}
return {
load: load,
setCheck: setCheck
}
}();
@ -121,9 +118,6 @@
});
/*=========流程设计end=====================*/
frmTree.load();
if (update) {
$.getJSON('/flowschemes/get?id=' + id,
function (data) {

View File

@ -80,7 +80,7 @@
var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象执行iframe页的方法iframeWin.method();
iframeWin.submit();
},
cancel: function (index) {
no: function (index) {
layer.close(index);
mainList();
}