public override void CreateJob(WFFinsEntity fins, WFTinsEntity tinsEntity, bool needWaitCallback) { //Console.WriteLine($"结束节点{tinsEntity.Taskname}开始执行……"); //不用为结束节点创建待执行任务 fins.State = EDBEntityState.Modified; fins.Status = (int)EFlowStatus.Completed; fins.Edate = DateTime.Now; _DataAccess.Update(fins); }
/// <summary> /// 流转到下一步 /// </summary> public virtual void CreateJob(WFFinsEntity fins, WFTinsEntity tinsEntity, bool needWaitCallback) { //插入MQ,流程监控启动 WFTEventEntity nextEntity = new WFTEventEntity(); nextEntity.Add(); nextEntity.Flowid = tinsEntity.Flowid; nextEntity.Finsid = tinsEntity.Finsid; nextEntity.Taskid = tinsEntity.Taskid; nextEntity.Dataid = fins.Dataid; nextEntity.Tinsid = tinsEntity.ID; nextEntity.Status = 0; nextEntity.Waitcallback = needWaitCallback ? 1 : 0; nextEntity.Cdate = System.DateTime.Now; _DataAccess.Update(nextEntity); }
/// <summary> /// 初始任务节点程实例信息 /// </summary> public virtual WFTinsEntity Init(WFFinsEntity fins, WFTaskEntity taskEntity) { WFTinsEntity tins = new WFTinsEntity(); tins.Add(); tins.Finsid = fins.ID; tins.Flowid = taskEntity.Flowid; tins.Taskid = taskEntity.ID; tins.Taskname = taskEntity.Name; tins.Sdate = System.DateTime.Now; if (taskEntity.Type == ETaskType.End || taskEntity.Type == ETaskType.Start) { tins.Edate = System.DateTime.Now; } _DataAccess.Update(tins); return(tins); }
public WFTaskEntity[] GetNextTasks(WFTaskEntity preTask, WFTinsEntity tinsEntity, string bisJsonData) { var filter = TableFilter.New().Equals("BEGINTASKID", preTask.ID); var links = DataAccess.Query(WFLinkEntity.TableCode) .FixField("*").Where(filter).QueryList <WFLinkEntity>().ToList(); if (preTask.Type != ETaskType.BingXing && links.Count() > 1) { var dataList = new List <WFJsonDataEntity>(); dataList.Add(_JsonConverter.Deserialize <WFJsonDataEntity>(bisJsonData)); foreach (var link in links.OrderByDescending(l => l.Priority)) { bool hitRule = false; if (string.IsNullOrWhiteSpace(link.Filter)) { hitRule = true; } else { var conditionFilter = _JsonConverter.Deserialize <TableFilter>(link.Filter); hitRule = dataList.QueryDynamic(conditionFilter).Count() == 1; } if (hitRule) { links = new List <WFLinkEntity>(); links.Add(link); break; } } } if (links.Count() == 1) { filter = TableFilter.New().Equals("ID", string.Join(',', links.Select(l => l.Endtaskid).ToArray())); } else { filter = TableFilter.New().In("ID", string.Join(',', links.Select(l => l.Endtaskid).ToArray())); } var tasks = DataAccess.Query(WFTaskEntity.TableCode).FixField("*") .Where(filter).QueryList <WFTaskEntity>(); return(tasks.ToArray()); }
public override bool RunTask(WFTaskEntity taskEntity, WFFinsEntity fins, WFTinsEntity tinsEntity, WFTEventEntity enventEntity) { // 根据tasksetting 节点的配置信息读取要发送到的远端地址 //可以是多个地址 if (!string.IsNullOrWhiteSpace(taskEntity.Setting)) { var list = _jsonConverter.Deserialize <List <SendHttpModel> >(taskEntity.Setting); if (list != null) { Dictionary <string, string> dicPostdata = null; foreach (var item in list) { //Console.WriteLine($"发送数据到远端{item.Url}"); dicPostdata = new Dictionary <string, string>(); dicPostdata.Add("callbackTag", enventEntity.ID); dicPostdata.Add("customTag", item.CustomTag); dicPostdata.Add("dataId", enventEntity.Dataid); var content = new FormUrlEncodedContent(dicPostdata); var httpClient = _httpClientFactory.CreateClient(); try { var response = httpClient.PostAsync(item.Url, content).GetAwaiter().GetResult(); if (response.IsSuccessStatusCode) { response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); } else { var a = ""; } } catch (HttpRequestException ex) { throw new HttpRequestException($"{ex.Message},RunTask url:{item.Url} content:{_jsonConverter.Serialize(dicPostdata) }"); } } return(false); } } return(true); }
public WFFinsEntity GetWFFinsExecInfo(string finsId) { var col = this._dataAccess.Query(WFFinsEntity.TableCode) .FixField("*") .Where(TableFilter.New().Equals("ID", finsId)) .Query <WFFinsEntity>(); if (!col.Data.Any()) { throw new Exception($"{finsId}数据不存在"); } var en = col.Data.FirstOrDefault(); en.WfFlow = this._workFlowTemplate.GetWFTemplate(en.Flowid); en.TaskIns = _WorkFlowInstance.GetTinsList(finsId); TableFilter tf = TableFilter.New().Equals("FINSID", en.ID); var eventArr = this._wftEventRepository.GetList(tf);//查询异步回调信息 en.LinkIns = new List <WFLinkEntity>(); for (int i = 0; i < en.TaskIns.Count; i++) { WFTinsEntity startTIns = en.TaskIns[i]; if (startTIns.Edate.ToString("yyyy-MM-dd") == "0001-01-01")//#如果没有结束时间 { //TODOWHP 待完善 on 2020-03-28 09:41:14 //eventArr.Data.All(o=>o.Tinsid=en.ID) } } foreach (WFLinkEntity link in en.WfFlow.Links) { if (en.TaskIns.Any(o => o.Taskid == link.Begintaskid) && en.TaskIns.Any(o => o.Taskid == link.Endtaskid)) { en.LinkIns.Add(link); } } return(en); }
public override bool RunTask(WFTaskEntity taskEntity, WFFinsEntity fins, WFTinsEntity tinsEntity, WFTEventEntity enventEntity) { //TODO:发送数据到MQ // 根据tasksetting 节点的配置信息读取要发送到的远端地址 //可以是多个地址 if (!string.IsNullOrWhiteSpace(taskEntity.Setting)) { var obj = _JsonConverter.Deserialize <SendMQModel>(taskEntity.Setting); if (obj != null) { var dicPostdata = new Dictionary <string, string>(); dicPostdata.Add("callbackTag", enventEntity.ID); dicPostdata.Add("customTag", obj.CustomTag); dicPostdata.Add("dataId", enventEntity.Dataid); byte[] body = System.Text.Encoding.UTF8.GetBytes(_JsonConverter.Serialize(dicPostdata)); _ChannelService.SendMsg(model => { model.BasicPublish(obj.Exchange, obj.RoutingKey ?? "", body, ""); }, obj.ServerName); } } return(false); }
public override bool RunTask(WFTaskEntity taskEntity, WFFinsEntity fins, WFTinsEntity tinsEntity, WFTEventEntity mqEntity) { //结束节点不需要做具体任务 return(false); }
/// <summary> /// 执行具体任务 /// </summary> public virtual bool RunTask(WFTaskEntity taskEntity, WFFinsEntity fins, WFTinsEntity tinsEntity, WFTEventEntity mqEntity) { //System.Console.WriteLine($"{taskEntity.Type}节点{tinsEntity.Taskname}开始执行……"); return(true); }