public WFTinsEntity CreateTaskIns(WFFinsEntity fins, WFTaskEntity taskEntity) { var taskSetting = GetTaskInfo(taskEntity); var tins = taskSetting.Init(fins, taskEntity); return(tins); }
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); }
public WFFinsEntity CreatFlowInstance(string serviceId, string flowId, string dataId, string name) { WFFinsEntity fins = new WFFinsEntity(); fins.Add(); fins.ServiceId = serviceId; fins.Flowid = flowId; fins.Dataid = dataId; fins.Name = string.IsNullOrEmpty(name)?dataId:name; fins.Cdate = DateTime.Now; fins.Status = (int)EFlowStatus.Starting; _DataAccess.Update(fins); return(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 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); }
/// <summary> /// 执行下一个节点任务 /// </summary> /// <param name="fins"></param> /// <param name="nextTasks"></param> private void ExeNextTask(WFFinsEntity fins, WFTaskEntity[] nextTasks) { foreach (var nextTask in nextTasks) { bool parallelCompleted = true; if (nextTask.Type == ETaskType.JuHe) { //判断上游节点是否全部完成 var preTasks = _WFTask.GetPreTasks(nextTask); var tins = _WFTask.GetTinssById(fins.ID, preTasks.Select(t => t.ID).ToArray()); parallelCompleted = preTasks.Count() == tins.Count() && tins.Where(t => t.Edate == DateTime.MinValue).Count() == 0; } if (parallelCompleted) { var tinsNext = _WFTask.CreateTaskIns(fins, nextTask); var taskSetting = _WFTask.GetTaskInfo(nextTask); taskSetting.CreateJob(fins, tinsNext, IsNeedCallback(nextTask.Type)); } } }
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); }