예제 #1
0
    /// <summary>
    /// Returns the dataset loaded from the given document data.
    /// </summary>
    /// <param name="documentData">Document data to make the dataset from</param>
    /// <param name="taskType">Task type</param>
    /// <param name="taskObjectType">Task object type</param>
    protected virtual DataSet GetDataSet(string documentData, TaskTypeEnum taskType, string taskObjectType)
    {
        SyncHelper syncHelper = SyncHelper.GetInstance();
        syncHelper.OperationType = OperationTypeEnum.Synchronization;
        string className = CMSHierarchyHelper.GetNodeClassName(documentData, ExportFormatEnum.XML);
        DataSet ds = syncHelper.GetSynchronizationTaskDataSet(taskType, className, taskObjectType);

        XmlParserContext xmlContext = new XmlParserContext(null, null, null, XmlSpace.None);
        XmlReader reader = new XmlTextReader(documentData, XmlNodeType.Element, xmlContext);
        return DataHelper.ReadDataSetFromXml(ds, reader, null, null);
    }
예제 #2
0
 /// <summary>
 /// 更新使用属性
 /// </summary>
 public void UpdateFlag(TaskTypeEnum flag)
 {
     try
     {
         CommonSQL.UpdateDevInfo(devName, (int)flag);
         taskType = flag;
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #3
0
    /// <summary>
    /// Returns the dataset loaded from the given document data.
    /// </summary>
    /// <param name="documentData">Document data to make the dataset from</param>
    /// <param name="taskType">Task type</param>
    /// <param name="taskObjectType">Task object type</param>
    protected virtual DataSet GetDataSet(string documentData, TaskTypeEnum taskType, string taskObjectType)
    {
        var man = SyncManager.GetInstance();

        man.OperationType = OperationTypeEnum.Synchronization;
        string  className = DocumentHierarchyHelper.GetNodeClassName(documentData, ExportFormatEnum.XML);
        DataSet ds        = man.GetSynchronizationTaskDataSet(taskType, className, taskObjectType);

        XmlParserContext xmlContext = new XmlParserContext(null, null, null, XmlSpace.None);
        XmlReader        reader     = new XmlTextReader(documentData, XmlNodeType.Element, xmlContext);

        return(DataHelper.ReadDataSetFromXml(ds, reader, null, null));
    }
예제 #4
0
        public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
        {
            if ((bool)value)
            {
                TaskTypeEnum taskTypeEnum = (TaskTypeEnum)int.Parse(parameter.ToString());

                return(taskTypeEnum);
            }
            else
            {
                return(string.Empty);
            }
        }
        private string ActivityFunctionComplete(TaskTypeEnum TaskType)
        {
            var table = new Dictionary <TaskTypeEnum, string> {
                { TaskTypeEnum.DanDas, nameof(DandasCompleteData) },
                { TaskTypeEnum.Danvand, nameof(DanvandCompleteData) },
                { TaskTypeEnum.SroData, nameof(SROCompleteData) }
            };

            if (table.ContainsKey(TaskType))
            {
                return(table[TaskType]);
            }
            return(string.Empty);
        }
예제 #6
0
 /// <summary>
 /// 更新锁定状态
 /// </summary>
 public void IsLockUnlockNew(TaskTypeEnum tt, bool islock, string lockid = "")
 {
     try
     {
         CommonSQL.UpdateDevInfo((int)tt, devName, lockid, "", islock);
         taskType = tt;
         isLock   = islock;
         lockID   = lockid;
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #7
0
		public void AddTask(TaskTypeEnum taskType, Dictionary<TaskParamsKey, string> parameters)
		{
			Logger.WriteInfo("AddTask " + taskType.ToString());

			if (parameters != null && parameters.ContainsKey(TaskParamsKey.NextRunTime))
			{
				BaseTask.AddNew(taskType, parameters, minStartDate: DateTime.Parse(parameters[TaskParamsKey.NextRunTime]));
				parameters.Remove(TaskParamsKey.NextRunTime);
			}
			else
			{
				BaseTask.AddNew(taskType, parameters);
			}
		}
예제 #8
0
        /// <summary>
        /// 移至待命点
        /// </summary>
        /// <returns></returns>
        public bool Standby(string area, TaskTypeEnum tt, int site)
        {
            try
            {
                bool res = false;
                if (devices.Exists(c => c.area == area && c.taskType == tt && c.isUseful))
                {
                    DevInfoARF a = devices.Find(c => c.area == area && c.taskType == tt && c.isUseful);

                    if (a._.CurrentTask == TaskEnum.辊台任务 && a._.FinishTask == TaskEnum.辊台任务)
                    {
                        a.StopRoller();
                    }
                    if (a.isLock)
                    {
                        if (a._.CurrentSite != site)
                        {
                            res = true;
                        }
                    }
                    else
                    {
                        int sb = tt == TaskTypeEnum.入库 ? ADS.mDis.GetArfStandByP1(a.area) : ADS.mDis.GetArfStandByP2(a.area);
                        if (Math.Abs(a._.CurrentSite - sb) <= 2)
                        {
                            res = true;
                        }
                        else
                        {
                            if (a.isUseful && ADS.mSocket.IsConnected(a.devName) && a._.ActionStatus == ActionEnum.停止)
                            {
                                a.ToSite(sb);
                            }
                        }
                    }
                }
                else
                {
                    res = true;
                }
                return(res);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #9
0
        WithTask <TFlowTask>(TaskTypeEnum type, string v)
            where TFlowTask : IFlowTask <TFlowDataType, TContextType>
        {
            if (Element.Tasks == null)
            {
                Element.Tasks = new List <TaskDefinition>();
            }
            var task = new TaskDefinition
            {
                Type     = typeof(TFlowTask),
                TaskType = type,
                RequiresValidDataToExecute = false
            };

            Element.Tasks.Add(task);
            return(this);
        }
        private void ProcessTask_After(object sender, StagingSynchronizationEventArgs e)
        {
            if (e.TaskType == TaskTypeEnum.UpdateDocument || e.TaskType == TaskTypeEnum.CreateDocument || e.TaskType == TaskTypeEnum.MoveDocument || e.TaskType == TaskTypeEnum.PublishDocument || e.TaskType == TaskTypeEnum.ArchiveDocument)
            {
                // Seems the first table is always the node's table, the table name dose change by the document page type.
                DataTable NodeTable = e.TaskData.Tables[0];
                if (NodeTable != null && NodeTable.Columns.Contains("NodeGuid"))
                {
                    // Don't want to trigger updates as we set the data in the database, so we won't log synchronziations
                    TreeNode NodeObj = new DocumentQuery().WhereEquals("NodeGUID", NodeTable.Rows[0]["NodeGuid"]).FirstOrDefault();

                    using (new CMSActionContext()
                    {
                        LogSynchronization = false,
                        LogIntegration = false
                    })
                    {
                        List <int> NewNodeCategoryIDs = RelHelper.NewBoundObjectIDs(e, TreeCategoryInfo.OBJECT_TYPE, "NodeID", "CategoryID", CategoryInfo.TYPEINFO);

                        // Now handle categories, deleting categories not found, and adding ones that are not set yet.
                        TreeCategoryInfo.Provider.Get().WhereEquals("NodeID", NodeObj.NodeID).WhereNotIn("CategoryID", NewNodeCategoryIDs).ForEachObject(x => x.Delete());
                        List <int> CurrentCategories = TreeCategoryInfo.Provider.Get().WhereEquals("NodeID", NodeObj.NodeID).Select(x => x.CategoryID).ToList();
                        foreach (int NewCategoryID in NewNodeCategoryIDs.Except(CurrentCategories))
                        {
                            TreeCategoryInfo.Provider.Add(NodeObj.NodeID, NewCategoryID);
                        }
                    }
                    if (RelHelper.IsStagingEnabled(NodeObj.NodeSiteID))
                    {
                        TaskTypeEnum TaskTypeToUse = e.TaskType;
                        switch (e.TaskType)
                        {
                        case TaskTypeEnum.MoveDocument:
                            TaskTypeToUse = TaskTypeEnum.UpdateDocument;
                            break;
                        }
                        // Check if we need to generate a task for a server that isn't the origin server
                        RelHelper.CheckIfTaskCreationShouldOccur(NodeObj.NodeGUID, TaskTypeToUse);
                    }
                }
                else
                {
                    Service.Resolve <IEventLogService>().LogEvent(EventTypeEnum.Error, "RelationshipExended", "No Node Table Found", eventDescription: "First Table in the incoming Staging Task did not contain the Node GUID, could not processes.");
                }
            }
        }
예제 #11
0
        WithUiTask(TaskTypeEnum type, string uiTask)
        {
            if (Element.Tasks == null)
            {
                Element.Tasks = new List <TaskDefinition>();
            }
            var task = new TaskDefinition
            {
                Type      = null,
                TaskType  = type,
                ExecuteOn = ExecuteOn.Ui,
                RequiresValidDataToExecute = false,
                UiTask = uiTask
            };

            Element.Tasks.Add(task);
            return(this);
        }
예제 #12
0
 /// <summary>
 /// 摆渡车是否送货中
 /// </summary>
 /// <param name="area"></param>
 /// <param name="tt"></param>
 /// <returns></returns>
 public bool IsGiving(string area, TaskTypeEnum tt)
 {
     try
     {
         bool res = false;
         if (devices.Exists(c => c.area == area && c.taskType == tt && c.isUseful))
         {
             DevInfoARF a = devices.Find(c => c.area == area && c.taskType == tt && c.isUseful);
             if (ADS.mSocket.IsConnected(a.devName) && a._.CommandStatus == CommandEnum.命令正常 && a._.DeviceStatus == DeviceEnum.设备正常)
             {
                 if (a._.ActionStatus == ActionEnum.停止)
                 {
                     a.StartGiveRoll(tt);
                 }
                 else
                 {
                     if (a._.CurrentTask == TaskEnum.辊台任务)
                     {
                         if (a._.GoodsStatus != GoodsEnum.辊台无货)
                         {
                             if (a._.CurrentTask == TaskEnum.辊台任务)
                             {
                                 a.StartGiveRoll(tt);
                             }
                         }
                         else
                         {
                             if (a._.FinishTask == TaskEnum.辊台任务)
                             {
                                 a.StopRoller();
                             }
                         }
                         res = true;
                     }
                 }
             }
         }
         return(res);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #13
0
        /// <summary>
        /// 移动对接点
        /// </summary>
        public bool MovingButtSite(string area, TaskTypeEnum tt, int site)
        {
            try
            {
                bool res = false;
                if (devices.Exists(c => c.area == area && c.taskType == tt && c.isUseful))
                {
                    DevInfoARF a = devices.Find(c => c.area == area && c.taskType == tt && c.isUseful);

                    if (!ADS.mSocket.IsConnected(a.devName) ||
                        a._.CommandStatus == CommandEnum.命令错误 ||
                        a._.DeviceStatus == DeviceEnum.设备故障)
                    {
                        return(res);
                    }

                    if (a._.CurrentTask == TaskEnum.辊台任务 && a._.FinishTask == TaskEnum.辊台任务)
                    {
                        a.StopRoller();
                    }

                    if (Standby(area, tt == TaskTypeEnum.入库 ? TaskTypeEnum.出库 : TaskTypeEnum.入库, site))
                    {
                        if (a._.CurrentSite != site)
                        {
                            if (a._.ActionStatus == ActionEnum.停止)
                            {
                                a.ToSite(site);
                            }
                        }
                        else
                        {
                            res = true;
                        }
                    }
                }
                return(res);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #14
0
        /// <summary>
        /// 锁定摆渡车
        /// </summary>
        /// <param name="area"></param>
        /// <param name="tt"></param>
        /// <returns></returns>
        public bool IsLock(string area, TaskTypeEnum tt, string lockid)
        {
            try
            {
                bool res = false;
                if (devices.Exists(c => c.area == area && c.taskType == tt && c.isUseful))
                {
                    DevInfoARF a = devices.Find(c => c.area == area && c.taskType == tt && c.isUseful);
                    switch (tt)
                    {
                    case TaskTypeEnum.入库:
                        if (a.isLock && a.lockID == lockid)
                        {
                            res = true;
                        }
                        else if (a._.GoodsStatus == GoodsEnum.辊台无货)
                        {
                            a.IsLockUnlock(true, lockid);
                        }
                        break;

                    case TaskTypeEnum.出库:
                        if (a.isLock && a.lockID == lockid)
                        {
                            res = true;
                        }
                        else if (a._.GoodsStatus != GoodsEnum.辊台无货)
                        {
                            a.IsLockUnlock(true, lockid);
                        }
                        break;

                    default:
                        break;
                    }
                }
                return(res);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #15
0
        /// <summary>
        /// 是否有空闲摆渡车
        /// </summary>
        /// <returns></returns>
        public bool IsFreeARF(string area, TaskTypeEnum tt)
        {
            try
            {
                ChangeFlag(area);

                bool res = false;
                if (devices.Exists(c => c.area == area && c.taskType == tt && c.isUseful))
                {
                    DevInfoARF a = devices.Find(c => c.area == area && c.taskType == tt && c.isUseful);

                    if (ADS.mSocket.IsConnected(a.devName) &&
                        a._.CommandStatus != CommandEnum.命令错误 && a._.DeviceStatus != DeviceEnum.设备故障)
                    {
                        if (a._.CurrentTask == TaskEnum.辊台任务 && a._.FinishTask == TaskEnum.辊台任务)
                        {
                            a.StopRoller();
                        }
                        if (a.isLock)
                        {
                            if (a._.GoodsStatus == GoodsEnum.辊台无货 && a._.ActionStatus == ActionEnum.停止)
                            {
                                // 停止&解锁
                                a.StopTask();
                                a.IsLockUnlock(false);
                                res = true;
                            }
                        }
                        else
                        {
                            res = true;
                        }
                    }
                }
                return(res);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #16
0
        /// <summary>
        /// 更新锁定状态
        /// </summary>
        public void IsLockUnlockNew(TaskTypeEnum tt, bool islock, string lockid1 = "", string lockid2 = "")
        {
            try
            {
                CommonSQL.UpdateDevInfo((int)tt, devName, lockid1, lockid2, islock);
                taskType = tt;
                isLock   = islock;
                lockID1  = lockid1;
                lockID2  = lockid2;

                if (tt == TaskTypeEnum.无)
                {
                    GiveSite = 0;
                    TakeSite = 0;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #17
0
        /// <summary>
        /// 摆渡车作业判断执行送货?
        /// </summary>
        public static bool JobPartARF_Give(string jobid, TaskTypeEnum tt)
        {
            bool result = false;

            switch (tt)
            {
            case TaskTypeEnum.入库:
                // 入库送货--运输车是否到位
                result = mRgv.IsGiveButtRGV(jobid, DevType.摆渡车);
                break;

            case TaskTypeEnum.出库:
                // 出库送货--固定辊台是否到位
                result = mFrt.IsTaskConform(jobid, tt, TaskStatus.taking);
                break;

            default:
                break;
            }
            return(result);
        }
예제 #18
0
        /// <summary>
        /// 添加任务
        /// </summary>
        /// <param name="task"></param>
        public void AddTask(string jobid, string area, TaskTypeEnum tasktype, int goodsnum, int takesite, int givesite)
        {
            int id = ADS.ID;

            ADS.PlusID();
            TaskARF t = new TaskARF()
            {
                id         = id,
                jobid      = jobid,
                area       = area,
                tasktype   = tasktype,
                goodsnum   = goodsnum,
                takesite   = takesite,
                givesite   = givesite,
                taskstatus = TaskStatus.init,
                device     = new DevInfoARF()
            };

            task.Add(t);
            t.InsertDB();
        }
예제 #19
0
        public static UserTask CreateUserTask(ApplicationDbContext db, TaskTypeEnum taskType, string taskDescription, Guid referenceKey, string referenceEmail, Guid referenceOrganisationId, IPrincipal user)
        {
            UserTask userTask = new UserTask()
            {
                UserTaskId      = Guid.NewGuid(),
                TaskType        = taskType,
                TaskDescription = taskDescription,
                ReferenceKey    = referenceKey,
                ReferenceEmail  = referenceEmail,
                OrganisationId  = referenceOrganisationId,
                EntityStatus    = EntityStatusEnum.Active,
                RecordChange    = RecordChangeEnum.NewRecord,
                RecordChangeBy  = AppUserHelpers.GetAppUserIdFromUser(user),
                RecordChangeOn  = DateTime.Now
            };

            db.UserTasks.Add(userTask);
            db.SaveChanges();

            return(userTask);
        }
예제 #20
0
        /// <summary>
        /// 添加任务
        /// </summary>
        /// <param name="task"></param>
        public void AddTask(string jobid, string area, TaskTypeEnum tasktype, int goodsnum, DevType fromdev, DevType todev)
        {
            int id = ADS.ID;

            ADS.PlusID();
            TaskPKL t = new TaskPKL()
            {
                id         = id,
                jobid      = jobid,
                area       = area,
                tasktype   = tasktype,
                goodsnum   = goodsnum,
                fromdev    = fromdev,
                todev      = todev,
                taskstatus = TaskStatus.init,
                device     = new DevInfoPKL()
            };

            task.Add(t);
            t.InsertDB();
        }
        public async Task <List <string> > StartOrchestrator(
            [OrchestrationTrigger] IDurableOrchestrationContext context,
            ILogger log)
        {
            var outputs = new List <string>();

            var taskItem = context.GetInput <TaskItem>();

            if (taskItem == null)
            {
                outputs.Add("Error getting task information");
                return(outputs);
            }
            TaskTypeEnum taskType = (TaskTypeEnum)taskItem.TaskType;

            string prepare       = ActivityFunctionPrepare(taskType);
            var    resultPrepare = await context.CallActivityAsync <ProcessResult>(prepare, taskItem.CustomerId);

            outputs.Add(resultPrepare.Information);
            if (!resultPrepare.Sucess)
            {
                return(outputs);
            }

            string process       = ActivityFunctionProcess(taskType);
            var    resultProcess = await context.CallActivityAsync <ProcessResult>(process, taskItem.CustomerId);

            outputs.Add(resultProcess.Information);
            if (!resultProcess.Sucess)
            {
                return(outputs);
            }

            string complete       = ActivityFunctionComplete(taskType);
            var    resultComplete = await context.CallActivityAsync <ProcessResult>(complete, taskItem.CustomerId);

            outputs.Add(resultComplete.Information);
            return(outputs);
        }
예제 #22
0
        public static UserTask CreateUserTask(ApplicationDbContext db, TaskTypeEnum taskType, string taskDescription, Guid referenceKey, Guid createdBy, EntityStatusEnum entityStatus)
        {
            UserTask userTask = new UserTask()
            {
                UserTaskId      = Guid.NewGuid(),
                TaskType        = taskType,
                TaskDescription = taskDescription,
                ReferenceKey    = referenceKey,
                CreatedOn       = DateTime.Now,
                CreatedBy       = createdBy,
                EntityStatus    = entityStatus
            };

            db.UserTasks.Add(userTask);

            CreateAdminListForTask(db, userTask);
            CreateManagerListForTask(db, userTask);

            db.SaveChanges();

            return(userTask);
        }
예제 #23
0
        public List <int> GetTimeScheduleredCustomers(TaskTypeEnum taskType)
        {
            switch (taskType)
            {
            case TaskTypeEnum.Danvand:
                return(new List <int> {
                    130, 45, 28, 15, 16
                });

            case TaskTypeEnum.DanDas:
                return(new List <int> {
                    130, 45, 28, 15, 16
                });

            case TaskTypeEnum.SroData:
                return(new List <int> {
                    131, 46, 29, 199, 996
                });

            default:
                return(new List <int>());
            }
        }
예제 #24
0
파일: BaseTask.cs 프로젝트: evkap/DVS
		public static void AddNew(TaskTypeEnum taskType, Dictionary<TaskParamsKey, string> parameters = null, DateTime? minStartDate = null, int? parentTaskId = null)
		{
			Task task = new Task();
			task.CreateDate = DateTime.Now;
			task.TaskStatus = TaskStatus.Pending;
			task.TaskTypeEnum = taskType;
			task.MinStartDate = minStartDate;
			task.ParentTaskId = parentTaskId;
			if (parameters != null)
			{
				task.TaskParams = new List<TaskParam>();
				foreach (var item in parameters)
				{
					task.TaskParams.Add(new TaskParam(item.Key, item.Value));
				}
			}

			using (var dbFactory = new DatabaseFactory())
			{
				var repository = new TaskQueueRepository(dbFactory);
				repository.Add(task);
			}
		}
예제 #25
0
        /// <summary>
        /// 接货任务
        /// </summary>
        /// <param name="tasktype"></param>
        /// <param name="goodsnum"></param>
        public void StartTakeRoll(TaskTypeEnum tasktype, int goodsnum)
        {
            byte roller = (byte)RollerStatusEnum.辊台全启动;
            byte direction;
            byte take  = (byte)RollerTypeEnum.接货;
            byte goods = (byte)goodsnum;

            switch (tasktype)
            {
            case TaskTypeEnum.入库:
                direction = (byte)RollerDiretionEnum.正向;
                break;

            case TaskTypeEnum.出库:
                direction = (byte)RollerDiretionEnum.反向;
                break;

            default:
                return;
            }
            //                             字头    设备号 控制码  值1      值2     值3   值4    结束符
            byte[] order = new byte[] { 0x96, 0x02, 0x01, 0x02, roller, direction, take, goods, 0xFF, 0xFE };
            ADS.mSocket.SendOrder(devName, order, true);
        }
예제 #26
0
        private bool GetReportFromRequest(HttpRequest request, TaskTypeEnum taskTypeEnum, out ReportDTO reportReqDTO)
        {
            string errorMessage = null;

            reportReqDTO = null;
            APIRequestDTO requestDTO;

            try
            {
                if (!Library.GetDTOFromRequest(request, out requestDTO, taskTypeEnum.ToString(), ref errorMessage))
                {
                    Global.Log.Error(errorMessage);
                    return(false);
                }
                reportReqDTO = (ReportDTO)requestDTO;
                Global.Log.DebugFormat("User ID: [{0}] reported Info for Task: [{1}]", reportReqDTO.UserID, reportReqDTO.TaskId);
                return(true);
            }
            catch (Exception ex)
            {
                Global.Log.Error(ex.Message);
                return(false);
            }
        }
예제 #27
0
파일: TaskFactory.cs 프로젝트: evkap/DVS
		public BaseTask CreateTask(TaskTypeEnum taskType)
		{
			_kernel.Rebind<IDatabaseFactory>().To<DatabaseFactory>().InSingletonScope();

			switch (taskType)
			{
				case TaskTypeEnum.Notifications:
					return _kernel.Get<NotificationsTask>();
				case TaskTypeEnum.AscGov:
					return _kernel.Get<AscGovTask>();
				case TaskTypeEnum.HUDAppraiserLicense:
					return _kernel.Get<HUDAppraiserLicensesTask>();
				case TaskTypeEnum.HUDAppraiserContactInfo:
					return _kernel.Get<HUDAppraiserContactInfoTask>();
				case TaskTypeEnum.LicenseDailyUpdateByAscGov:
					return _kernel.Get<LicenseDailyUpdateByAscGov>();
				case TaskTypeEnum.LicenseDailyUpdateByHUD:
					return _kernel.Get<LicenseDailyUpdateByHUD>();
				case TaskTypeEnum.LicenseExpirationCheck:
					return _kernel.Get<LicenseExpirationCheck>();
				case TaskTypeEnum.SendAppraiserOrderInvitationSMS:
					return _kernel.Get<SendAppraiserOrderInvitationSMS>();
				case TaskTypeEnum.SendAppraiserOrderInvitationEmail:
					return _kernel.Get<SendAppraiserOrderInvitationEmail>();
				case TaskTypeEnum.AssignmentAppraisersForOrder:
					return _kernel.Get<AssignmentAppraisersForOrder>();
				case TaskTypeEnum.LOEGeneration:
					return _kernel.Get<LOEGenerationTask>();
				case TaskTypeEnum.OrderPeriodicalNotification:
					return _kernel.Get<OrderPeriodicalNotificationTask>();
				case TaskTypeEnum.AVMRequest:
					return _kernel.Get<AVMRequestTask>();
				default:
					throw new NotSupportedException(taskType.ToString());
			}
		}
        /// <summary>
        /// Custom Staging Task generation
        /// </summary>
        /// <param name="RelationshipSiteObj"></param>
        /// <param name="TaskType"></param>
        private void RelationshipNameSite_CreateStagingTask(RelationshipNameSiteInfo RelationshipSiteObj, TaskTypeEnum TaskType)
        {
            List <ServerInfo>    ActiveServers   = ServerInfo.Provider.Get().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).ToList();
            RelationshipNameInfo RelationshipObj = RelationshipNameInfo.Provider.Get(RelationshipSiteObj.RelationshipNameID);

            // If relationship obj is already gone, then the Site deletion thing is already handled with the deletion of the relationship name.
            if (RelationshipObj == null)
            {
                return;
            }

            if (IsCustomAdhocRelationshipName(RelationshipObj) && ActiveServers.Count > 0)
            {
                string Data         = "<NewDataSet>" + RelationshipObj.ToXML("CMS_RelationshipName", false) + "</NewDataSet>";
                string TaskTitle    = "";
                string TaskTitleEnd = "";
                switch (TaskType)
                {
                case TaskTypeEnum.AddToSite:
                    TaskTitle    = "Add";
                    TaskTitleEnd = "to";
                    break;

                case TaskTypeEnum.RemoveFromSite:
                    TaskTitle    = "Remove";
                    TaskTitleEnd = "from";
                    break;
                }
                StagingTaskInfo SiteTask = new CMS.Synchronization.StagingTaskInfo()
                {
                    TaskTitle      = string.Format("{0} Relationship name '{1}' {2} site", TaskTitle, RelationshipObj.RelationshipDisplayName, TaskTitleEnd),
                    TaskType       = TaskType,
                    TaskObjectType = RelationshipNameInfo.OBJECT_TYPE,
                    TaskObjectID   = RelationshipObj.RelationshipNameId,
                    TaskData       = Data,
                    TaskTime       = DateTime.Now,
                    TaskSiteID     = SiteContext.CurrentSiteID
                };
                StagingTaskInfo.Provider.Set(SiteTask);

                foreach (ServerInfo ServerObj in ActiveServers)
                {
                    // Create synchronization
                    SynchronizationInfo SyncSiteInfo = new SynchronizationInfo()
                    {
                        SynchronizationTaskID   = SiteTask.TaskID,
                        SynchronizationServerID = ServerObj.ServerID
                    };
                    SynchronizationInfo.Provider.Set(SyncSiteInfo);
                }

                TaskGroupInfo TaskGroup = TaskGroupInfoProvider.GetUserTaskGroupInfo(MembershipContext.AuthenticatedUser.UserID);
                if (TaskGroup != null)
                {
                    TaskGroupTaskInfo.Provider.Add(TaskGroup.TaskGroupID, SiteTask.TaskID);
                }
            }
        }
    /// <summary>
    /// Processes given object according to task type.
    /// It is expected that you use TranslateColumnsToExternal method before you process the task.
    /// The TranslateColumnsToExternal needs GetExternalObjectID and GetExternalDocumentID to be implemented.
    /// It traverses the given object and tries to translate foreign keys to match external (your) application.
    /// </summary>
    /// <param name="infoObj">Info object to process</param>
    /// <param name="translations">Translation helper object containing translations for given object</param>
    /// <param name="taskType">Type of task</param>
    /// <param name="dataType">Type of data</param>
    /// <param name="siteName">Name of site</param>
    /// <param name="errorMessage">Possible error message</param>
    /// <returns>Result of processing</returns>
    public override IntegrationProcessResultEnum ProcessInternalTaskAsync(GeneralizedInfo infoObj, TranslationHelper translations, TaskTypeEnum taskType, TaskDataTypeEnum dataType, string siteName, out string errorMessage)
    {
        try
        {
            // If object is of 'user' type
            // You can also use following condition: (((BaseInfo)infoObj) is CMS.SiteProvider.UserInfo)
            if (infoObj.ObjectType == PredefinedObjectType.USER)
            {
                bool log = false;
                // Create simple message
                string message = "User with username '" + infoObj.ObjectCodeName + "' has been";
                switch (taskType)
                {
                    case TaskTypeEnum.CreateObject:
                        log = true;
                        message += " created.";
                        break;

                    case TaskTypeEnum.UpdateObject:
                        log = true;
                        message += " updated.";
                        break;

                    case TaskTypeEnum.DeleteObject:
                        log = true;
                        message += " deleted.";
                        break;
                }
                if (log)
                {
                    EventLogProvider eventLog = new EventLogProvider();
                    // Log the message
                    eventLog.LogEvent(EventLogProvider.EVENT_TYPE_INFORMATION, DateTime.Now, ConnectorName, taskType.ToString(), 0, null, 0, null, null, message, 0, null);
                }
            }
            errorMessage = null;
            return IntegrationProcessResultEnum.OK;
        }
        catch (Exception ex)
        {
            errorMessage = ex.Message;
            return IntegrationProcessResultEnum.Error;
        }
        finally
        {
            // Clear translations cached during TranslateColumnsToExternal which internally calls GetExternalObjectID, GetExternalDocumentID
            // This call is optional but recommended in the case where eg. collision of code names can occur
            ClearInternalTranslations();
        }
    }
예제 #30
0
		private int TestTaskLifeCycleInternal(TaskTypeEnum taskType, ICollection<TaskParam> taskParams = null)
		{
			var task = new Task();
			task.CreateDate = DateTime.Now;
			task.TaskTypeEnum = taskType;
			task.TaskStatus = TaskStatus.Pending;
			task.TaskParams = taskParams;

			_repository.Add(task);

			_taskQueueManager.ProcessQueue();

			using (var dc = new TaskQueueContext())
			{
				var tTask = dc.Tasks.Single(e => e.TaskTypeId == (int)taskType);
				tTask.Should().NotBeNull();
				tTask.TaskStatusId.Should().Be((int)TaskStatus.Executing);
			}

			int maxIterationsCount = 30;
			while (maxIterationsCount-- != 0)
			{
				using (var dc = new TaskQueueContext())
				{
					var tTask = dc.Tasks.Single(t => t.Id == task.Id);
					if (tTask.TaskStatus != TaskStatus.Executing)
						break;

					Thread.Sleep(1000);
				}
			}

			using (var dc = new TaskQueueContext())
			{
				var tTask = dc.Tasks.Single(t => t.Id == task.Id);
				tTask.TaskStatus.Should().Be(TaskStatus.Completed);
			}

			return task.Id;
		}
    /// <summary>
    /// Processes given document according to task type.
    /// It is expected that you use TranslateColumnsToExternal method before you process the task.
    /// The TranslateColumnsToExternal needs GetExternalObjectID and GetExternalDocumentID to be implemented.
    /// It traverses the given object and tries to translate foreign keys to match external (your) application.
    /// </summary>
    /// <param name="node">Document to process</param>
    /// <param name="translations">Translation helper object containing translations for given document</param>
    /// <param name="taskType">Type of task</param>
    /// <param name="dataType">Type of data</param>
    /// <param name="siteName">Name of site</param>
    /// <param name="errorMessage">Possible error message</param>
    /// <returns>Result of processing</returns>
    public override IntegrationProcessResultEnum ProcessInternalTaskAsync(TreeNode node, TranslationHelper translations, TaskTypeEnum taskType, TaskDataTypeEnum dataType, string siteName, out string errorMessage)
    {
        try
        {
            bool log = false;
            // Create simple message
            string message = "Document named '" + node.NodeName + "' located at '" + node.NodeAliasPath + "' has been";
            switch (taskType)
            {
                case TaskTypeEnum.CreateDocument:
                    log = true;
                    message += " created.";
                    break;

                case TaskTypeEnum.UpdateDocument:
                    log = true;
                    message += " updated.";
                    break;

                case TaskTypeEnum.DeleteDocument:
                    log = true;
                    message += " deleted.";
                    break;
            }
            if (log)
            {
                EventLogProvider eventLog = new EventLogProvider();
                // Log the message
                eventLog.LogEvent(EventLogProvider.EVENT_TYPE_INFORMATION, DateTime.Now, ConnectorName, taskType.ToString(), 0, null, node.NodeID, node.DocumentName, null, message, node.NodeSiteID, null);
            }
            errorMessage = null;
            return IntegrationProcessResultEnum.OK;
        }
        catch (Exception ex)
        {
            errorMessage = ex.Message;
            return IntegrationProcessResultEnum.Error;
        }
        finally
        {
            // Clear translations cached during TranslateColumnsToExternal which internally calls GetExternalObjectID, GetExternalDocumentID
            // This call is optional but recommended in the case where eg. collision of code names can occur
            ClearInternalTranslations();
        }
    }
 /// <summary>
 /// Suitable for implementation of synchronous outcoming document processing. Identifiers of object are in their original state.
 /// </summary>
 /// <param name="node">Document to process</param>
 /// <param name="taskType">Type of task</param>
 /// <param name="siteName">Name of site</param>
 /// <param name="errorMessage">Possible error message</param>
 /// <returns>Processing result</returns>
 public override IntegrationProcessResultEnum ProcessInternalTaskSync(TreeNode node, TaskTypeEnum taskType, string siteName, out string errorMessage)
 {
     // Synchronous processing of documents (meaning processing is executed in the context of CMS right away)
     // (task is not being logged and processed afterwards in separate thread as in ProcessInternalTaskAsync method)
     errorMessage = null;
     return IntegrationProcessResultEnum.OK;
 }
예제 #33
0
        public void Remap(
            BooleanCedent[] booleanCedents,
            CategorialCedent[] categorialCedents,
            int taskID,
            TaskTypeEnum taskType,
            string boxIdentity,
            out long allRowsInTaskDataMatrixCount)
        {
            List<AbstractAttributeStruct> abstractAttributes = new List<AbstractAttributeStruct>();
            string categoryName;

            #region EQUIVALENCE CLASS PROBLEM VARIABLES
            int attributeIdentifier;
            int literalIdentifier;
            int equivalenceClassIdentifier;
            int rewrite;
            //Pair <attribute.identifier, List Of [literal.identifier]>
            Dictionary<int, List<int>> attributesAndLiterals = new Dictionary<int, List<int>>();
            //Pair <attribute.identifier, equivalenceClass.identifier>
            Dictionary<int, int> attributesAndEquivalenceClasses = new Dictionary<int, int>();
            //Pair <literal.identifier, equivalenceClass.identifier>
            Dictionary<int, int> literalsAndEquivalenceClasses = new Dictionary<int, int>();
            #endregion

            #region BooleanCedent (tdCedentD), EquivalenceClass (tdEquivalenceClass), Literal (tdLiteralD)

            Dictionary<CedentEnum, bool> savedCedents = new Dictionary<CedentEnum, bool>();

            if (booleanCedents != null)
            {
                int booleanCedentID;
                int equivalenceClassID;
                EquivalenceClassStruct[] equivalenceClasses;

                foreach (BooleanCedent booleanCedent in booleanCedents)
                {
                    #region BooleanPartialCedent (tdCedentD)
                    CedentIdentifierAndType cedentIdentifierAndType = new CedentIdentifierAndType(booleanCedent.Cedent.identifier, booleanCedent.CedentType);
                    if (this.booleanPartialCedents.ContainsKey(cedentIdentifierAndType))
                    {
                        booleanCedentID = this.booleanPartialCedents[cedentIdentifierAndType];
                        continue;
                    }
                    else
                    {
                        booleanCedentID = this.SetBooleanPartialCedent(
                            booleanCedent.CedentType,
                            booleanCedent.Cedent.minLen,
                            booleanCedent.Cedent.maxLen,
                            taskID);
                        this.booleanPartialCedents.Add(cedentIdentifierAndType, booleanCedentID);
                    }

                    savedCedents[booleanCedent.CedentType] = true;

                    #endregion

                    #region EQUIVALENCE CLASS PROBLEM

                    equivalenceClasses = booleanCedent.Cedent.equivalenceClasses;

                    if (equivalenceClasses != null &&
                        equivalenceClasses.Length > 0)
                    {
                        //This makes attributesAndLiterals Dictionary<int, List<int>> Pair <attribute.identifier, List Of [literal.identifier]>
                        if (booleanCedent.Cedent.literalSettings != null)
                            foreach (LiteralSettingStruct literalSettingStruct in booleanCedent.Cedent.literalSettings)
                            {
                                //literalSettingStruct.identifier;
                                attributeIdentifier = literalSettingStruct.atomSetting.abstractAttribute.identifier;
                                literalIdentifier = literalSettingStruct.identifier;
                                if (attributesAndLiterals.ContainsKey(attributeIdentifier))
                                    attributesAndLiterals[attributeIdentifier].Add(literalIdentifier);
                                else
                                    attributesAndLiterals.Add(attributeIdentifier, new List<int>(new int[] { literalIdentifier }));
                                attributesAndEquivalenceClasses[attributeIdentifier] = 0;
                                literalsAndEquivalenceClasses[literalIdentifier] = 0;
                            }
                        //This makes attributesAndEquivalenceClasses Dictionary<int, int> Pair <attribute.identifier, equivalenceClass.identifier>
                        foreach (EquivalenceClassStruct equivalenceClassStruct in equivalenceClasses)
                        {
                            equivalenceClassIdentifier = equivalenceClassStruct.identifier;
                            foreach (int identifierOfAttributeInClass in equivalenceClassStruct.attributesIdentifiers)
                            {
                                rewrite = 0;
                                if (attributesAndEquivalenceClasses.ContainsKey(identifierOfAttributeInClass))
                                {
                                    if (attributesAndEquivalenceClasses[identifierOfAttributeInClass] != 0)
                                        rewrite = attributesAndEquivalenceClasses[identifierOfAttributeInClass];
                                    attributesAndEquivalenceClasses[identifierOfAttributeInClass] = equivalenceClassIdentifier;
                                }
                                else
                                    attributesAndEquivalenceClasses.Add(identifierOfAttributeInClass, equivalenceClassIdentifier);
                                if (rewrite != 0)
                                    foreach (KeyValuePair<int, int> kvp in attributesAndEquivalenceClasses)
                                    {
                                        if (attributesAndEquivalenceClasses[kvp.Key] == rewrite)
                                            attributesAndEquivalenceClasses[kvp.Key] = equivalenceClassIdentifier;
                                    }
                            }
                        }
                        //This makes literalsAndEquivalenceClasses Dictionary<int, int> Pair <literal.identifier, equivalenceClass.identifier>
                        //Process equivalence classes of attributes to literals
                        foreach (KeyValuePair<int, int> kvp in attributesAndEquivalenceClasses)
                        {
                            if (attributesAndEquivalenceClasses[kvp.Key] != 0)
                            {
                                rewrite = attributesAndEquivalenceClasses[kvp.Key];
                                foreach (int currentLiteralKey in attributesAndLiterals[kvp.Key])
                                {
                                    literalsAndEquivalenceClasses[currentLiteralKey] = rewrite;
                                }
                            }
                        }
                        //This process equivalence classes of literals
                        foreach (EquivalenceClassStruct equivalenceClassStruct in equivalenceClasses)
                        {
                            equivalenceClassIdentifier = equivalenceClassStruct.identifier;
                            foreach (int identifierOfLiteralInClass in equivalenceClassStruct.literalsIdentifiers)
                            {
                                rewrite = 0;
                                if (literalsAndEquivalenceClasses.ContainsKey(identifierOfLiteralInClass))
                                {
                                    if (literalsAndEquivalenceClasses[identifierOfLiteralInClass] != 0)
                                        rewrite = literalsAndEquivalenceClasses[identifierOfLiteralInClass];
                                    literalsAndEquivalenceClasses[identifierOfLiteralInClass] = equivalenceClassIdentifier;
                                }
                                else
                                {
                                    literalsAndEquivalenceClasses.Add(identifierOfLiteralInClass, equivalenceClassIdentifier);
                                }
                                if (rewrite != 0)
                                    foreach (KeyValuePair<int, int> kvp in literalsAndEquivalenceClasses)
                                    {
                                        if (literalsAndEquivalenceClasses[kvp.Key] == rewrite)
                                            literalsAndEquivalenceClasses[kvp.Key] = equivalenceClassIdentifier;
                                    }
                            }
                        }
                    }

                    #endregion

                    #region EquivalenceClass (tdEquivalenceClass)

                    equivalenceClasses = booleanCedent.Cedent.equivalenceClasses;
                    if (booleanCedent.Cedent.equivalenceClasses != null)
                        foreach (EquivalenceClassStruct equivalenceClassStruct in equivalenceClasses)
                        {
                            //test if equivalence class is used or if it was absorb by other equivalence class
                            if (!literalsAndEquivalenceClasses.ContainsValue(equivalenceClassStruct.identifier))
                                continue;

                            equivalenceClassID = this.SetEquivalenceClass(
                                booleanCedentID,
                                equivalenceClassStruct.identifier);
                            this.equivalenceClasses.Add(equivalenceClassStruct.identifier, equivalenceClassID);
                        }

                    #endregion

                    #region  Prepare list of Attributes from BooleanCedents
                    if (booleanCedent.Cedent.literalSettings != null)
                        foreach (LiteralSettingStruct literalSettingStruct in booleanCedent.Cedent.literalSettings)
                        {
                            abstractAttributes.Add(literalSettingStruct.atomSetting.abstractAttribute);
                        }
                    #endregion
                }
            }
            #endregion
            #region Prepare list of Attributes from CategorialCedents
            if (categorialCedents != null)
                foreach (CategorialCedent categorialCedent in categorialCedents)
                {
                    savedCedents[categorialCedent.CedentType] = true;
                    abstractAttributes.AddRange(categorialCedent.Cedent.attributes);
                }
            #endregion

            #region Saved cedents?
            //pokud totiz neni nastaven nejaky cedent (chybi treba prazdny radek), tak nejde pustit gen
            switch (taskType)
            {
                case TaskTypeEnum.FFT:
                    if (!savedCedents.ContainsKey(CedentEnum.Antecedent) || savedCedents[CedentEnum.Antecedent] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Antecedent, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.Succedent) || savedCedents[CedentEnum.Succedent] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Succedent, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.Condition) || savedCedents[CedentEnum.Condition] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Condition, 0, 0, taskID);
                    break;
                case TaskTypeEnum.SDFFT:
                    if (!savedCedents.ContainsKey(CedentEnum.Antecedent) || savedCedents[CedentEnum.Antecedent] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Antecedent, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.Succedent) || savedCedents[CedentEnum.Succedent] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Succedent, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.Condition) || savedCedents[CedentEnum.Condition] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Condition, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.FirstSet) || savedCedents[CedentEnum.FirstSet] == false)
                        this.SetBooleanPartialCedent(CedentEnum.FirstSet, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.SecondSet) || savedCedents[CedentEnum.SecondSet] == false)
                        this.SetBooleanPartialCedent(CedentEnum.SecondSet, 0, 0, taskID);
                    break;
                case TaskTypeEnum.KL:
                    if (!savedCedents.ContainsKey(CedentEnum.Antecedent) || savedCedents[CedentEnum.Antecedent] == false)
                        this.SetCategorialPartialCedent(CedentEnum.Antecedent, 0, 0, taskID, taskType);
                    if (!savedCedents.ContainsKey(CedentEnum.Succedent) || savedCedents[CedentEnum.Succedent] == false)
                        this.SetCategorialPartialCedent(CedentEnum.Succedent, 0, 0, taskID, taskType);
                    if (!savedCedents.ContainsKey(CedentEnum.Condition) || savedCedents[CedentEnum.Condition] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Condition, 0, 0, taskID);
                    break;

                case TaskTypeEnum.CF:
                    if (!savedCedents.ContainsKey(CedentEnum.Antecedent) || savedCedents[CedentEnum.Antecedent] == false)
                        this.SetCategorialPartialCedent(CedentEnum.Antecedent, 0, 0, taskID, taskType);
                    if (!savedCedents.ContainsKey(CedentEnum.Condition) || savedCedents[CedentEnum.Condition] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Condition, 0, 0, taskID);
                    break;

                case TaskTypeEnum.SDCF:
                    if (!savedCedents.ContainsKey(CedentEnum.Antecedent) || savedCedents[CedentEnum.Antecedent] == false)
                        this.SetCategorialPartialCedent(CedentEnum.Antecedent, 0, 0, taskID, taskType);
                    if (!savedCedents.ContainsKey(CedentEnum.Condition) || savedCedents[CedentEnum.Condition] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Condition, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.FirstSet) || savedCedents[CedentEnum.FirstSet] == false)
                        this.SetBooleanPartialCedent(CedentEnum.FirstSet, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.SecondSet) || savedCedents[CedentEnum.SecondSet] == false)
                        this.SetBooleanPartialCedent(CedentEnum.SecondSet, 0, 0, taskID);
                    break;

                case TaskTypeEnum.SDKL:
                    if (!savedCedents.ContainsKey(CedentEnum.Antecedent) || savedCedents[CedentEnum.Antecedent] == false)
                        this.SetCategorialPartialCedent(CedentEnum.Antecedent, 0, 0, taskID, taskType);
                    if (!savedCedents.ContainsKey(CedentEnum.Succedent) || savedCedents[CedentEnum.Succedent] == false)
                        this.SetCategorialPartialCedent(CedentEnum.Succedent, 0, 0, taskID, taskType);
                    if (!savedCedents.ContainsKey(CedentEnum.Condition) || savedCedents[CedentEnum.Condition] == false)
                        this.SetBooleanPartialCedent(CedentEnum.Condition, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.FirstSet) || savedCedents[CedentEnum.FirstSet] == false)
                        this.SetBooleanPartialCedent(CedentEnum.FirstSet, 0, 0, taskID);
                    if (!savedCedents.ContainsKey(CedentEnum.SecondSet) || savedCedents[CedentEnum.SecondSet] == false)
                        this.SetBooleanPartialCedent(CedentEnum.SecondSet, 0, 0, taskID);
                    break;

                default:
                    throw Ferda.Modules.Exceptions.SwitchCaseNotImplementedError(taskType);
            }
            #endregion

            #region DataMatrix (tmMatrix), Columns (tmAttribute), AbstractAttributes (tmQuantity), Category (tmCategory, tmCategoryEnumValue, tmInterval, tmValue)

            string dataMatrixName = "";
            int dataMatrixDBID = 0;
            string[] primaryKeyColumns = null; //must be sorted (for BinarySearch)
            string connectionString = null;
            allRowsInTaskDataMatrixCount = 0;
            ColumnSchemaInfo[] columnSchemaInfoSeq = null;
            Ferda.Modules.Boxes.DataMiningCommon.DataMatrix.DataMatrixInfo dataMatrixInfo;

            #region DataMatrix (tmMatrix)
            {
                AbstractAttributeStruct abstractAttributeStruct = abstractAttributes[0];
                dataMatrixInfo = abstractAttributeStruct.column.dataMatrix;

                //only for first attribute/column ... each attribute in one task must be in one and only one data matrix
                columnSchemaInfoSeq = dataMatrixInfo.explainDataMatrix;
                dataMatrixName = dataMatrixInfo.dataMatrixName;
                dataMatrixDBID = SetDataMatrix(dataMatrixName, dataMatrixInfo.recordsCount);
                updateTask(taskID, dataMatrixDBID);

                allRowsInTaskDataMatrixCount = dataMatrixInfo.recordsCount;

                string connectionStringForSave = dataMatrixInfo.database.odbcConnectionString.Trim();
                if (connectionStringForSave.StartsWith("DSN=", StringComparison.InvariantCultureIgnoreCase))
                    connectionStringForSave = connectionStringForSave.Substring(4);

                ExecuteUpdateQuery(
                    "UPDATE tpParamsDB SET "
                    + " strValue='" + connectionStringForSave + "' "
                    + " WHERE Name='DSN'");

                connectionString = dataMatrixInfo.database.odbcConnectionString;
                primaryKeyColumns = dataMatrixInfo.primaryKeyColumns;
                Array.Sort(primaryKeyColumns);
            }

            //Test values of primary key columns for duplicits (also test connection string and existence of data matrix)
            Ferda.Modules.Helpers.Data.DataMatrix.TestValuesInEnteredPrimaryKeyColumnsAreNotUniqueError(connectionString, dataMatrixName, primaryKeyColumns, boxIdentity);
            #endregion

            ColumnInfo columnInfo;
            CategoriesStruct categories;
            int columnID;
            int columnThereforeAlsoAttributeValueSubTypeDBID = 0;
            string columnSelectExpression;
            int primaryKeyColumnPosition;
            int categoryID;
            int enumCategoryValueID;
            int attributeID;
            //int attributeIdentifier; --allready defined
            string xCategory;
            string includeNullCategory;

            foreach (AbstractAttributeStruct abstractAttributeStruct in abstractAttributes)
            {
                //Protect from multiple saving columns or attributesAndEquivalenceClasses or caregories
                if (this.attributes.ContainsKey(abstractAttributeStruct.identifier))
                    continue;

                #region Columns (tmAttribute)

                if (dataMatrixName != abstractAttributeStruct.column.dataMatrix.dataMatrixName)
                {
                    throw Ferda.Modules.Exceptions.BoxRuntimeError(null, boxIdentity, "LM Task can not run over more than one datamatrix!");
                }
                columnSelectExpression = abstractAttributeStruct.column.columnSelectExpression;

                //Protect from multiple saving columns
                if (this.columns.ContainsKey(columnSelectExpression))
                {
                    columnID = this.columns[columnSelectExpression];
                }
                else
                {
                    columnInfo = abstractAttributeStruct.column;
                    primaryKeyColumnPosition = Array.BinarySearch(primaryKeyColumns, abstractAttributeStruct.column.columnSelectExpression);
                    columnThereforeAlsoAttributeValueSubTypeDBID = this.constants.ValueSubTypeEnumDictionary[columnInfo.columnSubType];
                    columnID = SetColumn(
                        columnInfo.columnSelectExpression,
                        dataMatrixDBID,
                        columnInfo.columnType,
                        columnInfo.columnSubType,
                        columnSelectExpression,
                        (primaryKeyColumnPosition >= 0) ? primaryKeyColumnPosition + 1 : -1);
                    this.columns.Add(columnInfo.columnSelectExpression, columnID);
                }

                int i = 0;
                foreach (string primaryKeyColumn in primaryKeyColumns)
                {
                    i++;
                    if (String.IsNullOrEmpty(primaryKeyColumn))
                        continue;
                    if (this.columns.ContainsKey(primaryKeyColumn))
                        continue;
                    foreach (ColumnSchemaInfo columnSchemaInfo in columnSchemaInfoSeq)
                    {
                        if (columnSchemaInfo.name == primaryKeyColumn)
                        {
                            int tmpColumnID = SetColumn(
                                columnSchemaInfo.name,
                                dataMatrixDBID,
                                ColumnTypeEnum.Ordinary,
                                Ferda.Modules.Helpers.Data.Column.GetColumnSubTypeByDataType(columnSchemaInfo.dataType),
                                columnSchemaInfo.name,
                                i);
                            this.columns.Add(columnSchemaInfo.name, tmpColumnID);
                            break;
                        }
                    }
                }

                #endregion

                #region Attribute (tmQuantity)

                attributeID = SetAttribute(
                        abstractAttributeStruct.nameInLiterals,
                        abstractAttributeStruct.identifier,
                        columnID);
                attributeIdentifier = abstractAttributeStruct.identifier;
                xCategory = abstractAttributeStruct.xCategory;
                includeNullCategory = abstractAttributeStruct.includeNullCategory;
                this.attributesCache.Add(abstractAttributeStruct.identifier, abstractAttributeStruct);
                this.attributes.Add(attributeIdentifier, attributeID);
                this.categories.Add(attributeIdentifier, new Dictionary<string, int>());
                this.categoriesOrds.Add(attributeIdentifier, new Dictionary<long, string>());

                #endregion

                #region Categories (tmCategory, tmCategoryEnumValue, tmInterval, tmValue)

                long categoryOrd = 0;
                categories = abstractAttributeStruct.categories;
                //if (categories.dateTimeIntervals != null)
                foreach (DictionaryEntry category in categories.dateTimeIntervals)
                {
                    categoryName = (string)category.Key;
                    //tmCategory
                    categoryOrd++;
                    categoryID = SetCategory(
                        categoryName,
                        attributeID,
                        CategoryTypeEnum.Interval,
                        (xCategory == categoryName),
                        (includeNullCategory == categoryName),
                        categoryOrd,
                        attributeIdentifier);
                    //tmValue, tmInterval
                    foreach (DateTimeIntervalStruct intervalStruct in (DateTimeIntervalStruct[])category.Value)
                    {
                        insertValueInterval(categoryID, intervalStruct);
                    }
                }
                //if (categories.floatIntervals != null)
                foreach (DictionaryEntry category in categories.floatIntervals)
                {
                    categoryName = (string)category.Key;
                    //tmCategory
                    categoryOrd++;
                    categoryID = SetCategory(
                        categoryName,
                        attributeID,
                        CategoryTypeEnum.Interval,
                        (xCategory == categoryName),
                        (includeNullCategory == categoryName),
                        categoryOrd,
                        attributeIdentifier);
                    //tmValue, tmInterval
                    foreach (FloatIntervalStruct intervalStruct in (FloatIntervalStruct[])category.Value)
                    {
                        insertValueInterval(categoryID, intervalStruct);
                    }
                }
                //if (categories.longIntervals != null)
                foreach (DictionaryEntry category in categories.longIntervals)
                {
                    categoryName = (string)category.Key;
                    //tmCategory
                    categoryOrd++;
                    categoryID = SetCategory(
                        categoryName,
                        attributeID,
                        CategoryTypeEnum.Interval,
                        (xCategory == categoryName),
                        (includeNullCategory == categoryName),
                        categoryOrd,
                        attributeIdentifier);
                    //tmValue, tmInterval
                    foreach (LongIntervalStruct intervalStruct in (LongIntervalStruct[])category.Value)
                    {
                        insertValueInterval(categoryID, intervalStruct);
                    }
                }
                //if (categories.enums != null)
                foreach (DictionaryEntry category in categories.enums)
                {
                    categoryName = (string)category.Key;
                    //tmCategory
                    categoryOrd++;
                    categoryID = SetCategory(
                        categoryName,
                        attributeID,
                        CategoryTypeEnum.Enumeration,
                        (xCategory == categoryName),
                        (includeNullCategory == categoryName),
                        categoryOrd,
                        attributeIdentifier);
                    foreach (string enumItem in (string[])category.Value)
                    {
                        //tmValue
                        if (categoryName == includeNullCategory && String.IsNullOrEmpty(enumItem))
                        {
                            enumCategoryValueID = SetValue();
                            continue;
                        }
                        else if (String.IsNullOrEmpty(enumItem))
                        {
                            //DEBUG NOTES: for debugin purposes it can be usevull if this else-if branch is removed (commented)
                            enumCategoryValueID = SetValue();
                            continue;
                        }
                        switch (columnThereforeAlsoAttributeValueSubTypeDBID)
                        {
                            case 1: //long
                                enumCategoryValueID = SetValue(Convert.ToInt64(enumItem));
                                break;
                            case 2: //double
                                enumCategoryValueID = SetValue(Convert.ToDouble(enumItem));
                                break;
                            case 3: //string
                                enumCategoryValueID = SetValue(enumItem);
                                break;
                            case 4: //bool
                                enumCategoryValueID = SetValue(Convert.ToBoolean(enumItem));
                                break;
                            case 5: //date
                                enumCategoryValueID = SetValue(Convert.ToDateTime(enumItem));
                                break;
                            default:
                                throw Ferda.Modules.Exceptions.SwitchCaseNotImplementedError(columnThereforeAlsoAttributeValueSubTypeDBID);
                        }
                        //tmCategoryEnumValue
                        this.SetCategoryEnum(
                            categoryID,
                            enumCategoryValueID);
                    }
                }

                #endregion
            }

            #endregion

            #region CategorialCedent (tdKLCedentD, tdCFCedentD, tdKLLiteralD, tdCFLiteralD)

            int categorialCedentID;
            int categorialLiteralID;

            if (categorialCedents != null)
                foreach (CategorialCedent categorialCedent in categorialCedents)
                {
                    CedentIdentifierAndType cedentIdentifierAndType = new CedentIdentifierAndType(categorialCedent.Cedent.identifier, categorialCedent.CedentType);
                    if (this.categorialPartialCedent.ContainsKey(cedentIdentifierAndType))
                    {
                        categorialCedentID = this.categorialPartialCedent[cedentIdentifierAndType];
                    }
                    else
                    {
                        categorialCedentID = SetCategorialPartialCedent(
                            categorialCedent.CedentType,
                            categorialCedent.Cedent.minLen,
                            categorialCedent.Cedent.maxLen,
                            taskID,
                            taskType);
                        this.categorialPartialCedent.Add(cedentIdentifierAndType, categorialCedentID);

                        if (categorialCedent.Cedent.attributes != null)
                            foreach (AbstractAttributeStruct abstractAttributeStruct in categorialCedent.Cedent.attributes)
                            {
                                categorialLiteralID = SetCategorialLiteralSetting(
                                    categorialCedentID,
                                    this.attributes[abstractAttributeStruct.identifier],
                                    taskType,
                                    abstractAttributeStruct.identifier);
                            }
                    }
                }

            #endregion

            #region BooleanCedent (tdLiteralD)

            int literalID;

            if (booleanCedents != null)
            {
                foreach (BooleanCedent booleanCedent in booleanCedents)
                {
                    if (booleanCedent.Cedent.literalSettings != null)
                        foreach (LiteralSettingStruct literalSettingStruct in booleanCedent.Cedent.literalSettings)
                        {
                            int literalOneCategoryDBID = (literalSettingStruct.atomSetting.category.Length > 0)
                                ? this.categories[literalSettingStruct.atomSetting.abstractAttribute.identifier][literalSettingStruct.atomSetting.category[0]]
                                : 0;
                            int literalEquivalenceClass = 0;
                            try
                            {
                                literalEquivalenceClass = this.equivalenceClasses[literalsAndEquivalenceClasses[literalSettingStruct.identifier]];
                            }
                            catch (KeyNotFoundException) { }
                            literalID = this.SetLiteralSetting(
                                    literalSettingStruct.atomSetting.minLen,
                                    literalSettingStruct.atomSetting.maxLen,
                                    literalSettingStruct.atomSetting.coefficientType,
                                    literalEquivalenceClass,
                                    literalSettingStruct.gaceType,
                                    literalSettingStruct.literalType,
                                    literalOneCategoryDBID,
                                    this.booleanPartialCedents[new CedentIdentifierAndType(booleanCedent.Cedent.identifier, booleanCedent.CedentType)],
                                    this.attributes[literalSettingStruct.atomSetting.abstractAttribute.identifier]);
                            this.literals.Add(literalID, literalSettingStruct.identifier);
                            this.attributeNameInLiterals.Add(literalID, literalSettingStruct.atomSetting.abstractAttribute.nameInLiterals);
                            //abstractAttributes.Add(literalSettingStruct.atomSetting.abstractAttribute);
                        }
                }
            }

            #endregion
        }
        public async Task StartOrchestratorScheduler(
            [OrchestrationTrigger]
            IDurableOrchestrationContext context,
            ILogger log)
        {
            var taskItem = context.GetInput <TaskItem>();

            if (taskItem == null)
            {
                var error = new ProcessResult {
                    Sucess = false, Information = "Error getting task information"
                };
                AddLog(log, error);
                return;
            }
            TaskTypeEnum taskType = (TaskTypeEnum)taskItem.TaskType;

            string prepare  = ActivityFunctionPrepare(taskType);
            string process  = ActivityFunctionProcess(taskType);
            string complete = ActivityFunctionComplete(taskType);


            double secondInAFullDay = 86400;



            //// hvordan tjekker vi at task'en ikke allerde er scheduleret ?
            //// i så fald skal den terminineres.

            var      date            = context.CurrentUtcDateTime.Hour > taskItem.MonitorHour ? context.CurrentUtcDateTime.AddDays(1) : context.CurrentUtcDateTime;
            var      nextTime        = new DateTime(date.Year, date.Month, date.Day, taskItem.MonitorHour, 0, 0);
            var      pollingInterval = nextTime.Subtract(context.CurrentUtcDateTime).TotalSeconds;
            DateTime expiryTime      = new DateTime(3000, 1, 1);

            while (context.CurrentUtcDateTime < expiryTime)
            {
                // Orchestration sleeps until this time.
                var nextCheck = context.CurrentUtcDateTime.AddSeconds(pollingInterval);
                await context.CreateTimer(nextCheck, CancellationToken.None);

                var resultPrepare = await context.CallActivityAsync <ProcessResult>(prepare, taskItem.CustomerId);

                AddLog(log, resultPrepare);

                if (resultPrepare.Sucess)
                {
                    var resultProcess = await context.CallActivityAsync <ProcessResult>(process, taskItem.CustomerId);

                    AddLog(log, resultProcess);

                    if (resultProcess.Sucess)
                    {
                        var resultComplete = await context.CallActivityAsync <ProcessResult>(complete, taskItem.CustomerId);

                        AddLog(log, resultComplete);
                    }
                }
                // her sikres at denne uendelig løkke, ikke medfører at durable storage account fyldes op.
                context.ContinueAsNew(null); // her har man mulighed for at have informationer til næste genneløb
                pollingInterval = secondInAFullDay;
            }
        }
예제 #35
0
 public bool DoesExist(int requestID, TaskTypeEnum type)
 {
     return(DBSet.Any(x => x.RequestID == requestID && x.Finished && x.TaskType == type));
 }
예제 #36
0
        /// <summary>
        /// 获取合适辊台
        /// </summary>
        /// <param name="area"></param>
        /// <param name="tt"></param>
        /// <returns></returns>
        public string GetRightFRT(string area, TaskTypeEnum tt)
        {
            try
            {
                string frt = "";
                if (devices.Exists(c => c.area == area && c.taskType == tt))
                {
                    foreach (DevInfoFRT d in devices.FindAll(c => c.area == area && c.taskType == tt))
                    {
                        if (ADS.mNDCControl.IsRedirectedMax(d.devName, out int t))
                        {
                            continue;
                        }

                        if (!d.isLock && d.isUseful && d._.GoodsStatus != GoodsEnum.辊台满货)
                        {
                            frt = d.devName;

                            if (t == 0)
                            {
                                if (d._.GoodsStatus != GoodsEnum.辊台无货)
                                {
                                    return(frt);
                                }
                            }
                            else
                            {
                                switch (d._.RollerStatus)
                                {
                                case RollerStatusEnum.辊台停止:
                                    if (d._.GoodsStatus == GoodsEnum.辊台无货)
                                    {
                                        return(frt);
                                    }
                                    break;

                                case RollerStatusEnum.辊台1启动:
                                    break;

                                case RollerStatusEnum.辊台2启动:
                                    if (d._.GoodsStatus == GoodsEnum.辊台无货 || d._.GoodsStatus == GoodsEnum.辊台2有货)
                                    {
                                        return(frt);
                                    }
                                    break;

                                case RollerStatusEnum.辊台全启动:
                                    break;
                                }
                            }
                        }
                    }
                }
                if (string.IsNullOrEmpty(frt) && area == "B01")
                {
                    frt = "FRT02";
                }

                return(frt);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #37
0
 /// <summary>
 /// tdKLLiteralD or tdCFLiteralD
 /// </summary>
 /// <returns>ID of new row inserted to database.</returns>
 private int SetCategorialLiteralSetting(int cedentDBID, int attributeDBID, TaskTypeEnum taskType, int attributeIdentifier)
 {
     string tableName;
     string column1Name;
     switch (taskType)
     {
         case TaskTypeEnum.KL:
         case TaskTypeEnum.SDKL:
             tableName = "tdKLLiteralD";
             column1Name = "KLCedentDID";
             break;
         case TaskTypeEnum.CF:
         case TaskTypeEnum.SDCF:
             tableName = "tdCFLiteralD";
             column1Name = "CFCedentDID";
             break;
         default:
             throw Ferda.Modules.Exceptions.SwitchCaseNotImplementedError(taskType);
     }
     string autoIncrementColumn = GetAutoIncrementColumnName(tableName);
     int autoIncrementValue = GetTableAutoIncrementValue(tableName, 1);
     string query = "INSERT INTO " + tableName + " (" + autoIncrementColumn
         + "," + column1Name + ",QuantityID) VALUES "
         + "(" + autoIncrementValue + ","
         + cedentDBID + ","
         + attributeDBID
         + ")";
     categorialLiteral.Add(autoIncrementValue, attributeIdentifier);
     ExecuteInsertQuery(query, tableName);
     return autoIncrementValue;
 }
예제 #38
0
 public int SaveTask(string boxIdentity, TaskTypeEnum taskType)
 {
     string tableName = "taTask";
     string autoIncrementColumn = GetAutoIncrementColumnName(tableName);
     int autoIncrementValue = GetTableAutoIncrementValue(tableName, 1);
     string query = "INSERT INTO " + tableName + " (" + autoIncrementColumn
         + ",Name,TaskSubTypeID,UserID,ReadOnly) VALUES "
         + "(" + autoIncrementValue + ","
         + "'FerdaTask" + boxIdentity + "',"
         + Constants.TaskTypeEnumDictionary[taskType] + ","
         + Constants.UserID + ","
         + Constants.FalseValue
         + ")";
     ExecuteInsertQuery(query, tableName);
     return autoIncrementValue;
 }
예제 #39
0
파일: MailManager.cs 프로젝트: evkap/DVS
		public void SendDataUpdateServiceFailureNotification(TaskTypeEnum taskTypeEnum)
		{
			string serviceName = string.Empty;
			string serviceFileName = string.Empty;

			switch (taskTypeEnum)
			{
				case TaskTypeEnum.AscGov:
					{
						serviceName = "ASC.GOV";
						serviceFileName = "v_Export_All.txt";
						break;
					}
				case TaskTypeEnum.HUDAppraiserContactInfo:
					{
						serviceName = "HUD.GOV";
						serviceFileName = "APRSR-DATA.txt";
						break;
					}
				case TaskTypeEnum.HUDAppraiserLicense:
					{
						serviceName = "HUD.GOV";
						serviceFileName = "APRSR-LIC.txt";
						break;
					}
				default: throw new ArgumentOutOfRangeException("Not supported type: " + taskTypeEnum.ToString());
			}

			DateTime nextAttemptDateTime = DateTime.Now.Date.AddDays(1);

			Dictionary<string, string> replaceDictionary = new Dictionary<string, string>();
			replaceDictionary.Add(Constants.EmailTemplateKeyWords.FailureFileName, serviceFileName);
			replaceDictionary.Add(Constants.EmailTemplateKeyWords.ServiceName, serviceName);
			replaceDictionary.Add(Constants.EmailTemplateKeyWords.NextAttemptDateTime, nextAttemptDateTime.ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture));

			SendMailInternal(EmailTemplateType.DataUpdateFailureNotification, _configManager.DVSAdminEmails, replaceDictionary);
		}
예제 #40
0
	public Task()
	{
		TaskType = TaskTypeEnum.KillEnemy;
		QuestLogDescription = string.Empty;
		CurrentAmount = 0;
	}
        /// <summary>
        /// Creates the Staging Task manually
        /// </summary>
        /// <param name="RelationshipObj"></param>
        /// <param name="TaskType"></param>
        private void RelationshipName_CreateStagingTask(RelationshipNameInfo RelationshipObj, TaskTypeEnum TaskType)
        {
            List <ServerInfo> ActiveServers = ServerInfo.Provider.Get().WhereEquals("ServerSiteID", SiteContext.CurrentSiteID).WhereEquals("ServerEnabled", true).ToList();

            if (IsCustomAdhocRelationshipName(RelationshipObj) && ActiveServers.Count > 0)
            {
                string Data      = "<NewDataSet>" + RelationshipObj.ToXML("CMS_RelationshipName", false) + "</NewDataSet>";
                string TaskTitle = "";
                switch (TaskType)
                {
                case TaskTypeEnum.CreateObject:
                    TaskTitle = "Create";
                    break;

                case TaskTypeEnum.UpdateObject:
                    TaskTitle = "Update";
                    break;

                case TaskTypeEnum.DeleteObject:
                    TaskTitle = "Delete";
                    break;
                }
                StagingTaskInfo Task = new StagingTaskInfo()
                {
                    TaskTitle      = string.Format("{0} Relationship name '{1}'", TaskTitle, RelationshipObj.RelationshipDisplayName),
                    TaskType       = TaskType,
                    TaskObjectType = RelationshipNameInfo.OBJECT_TYPE,
                    TaskObjectID   = RelationshipObj.RelationshipNameId,
                    TaskData       = Data,
                    TaskTime       = DateTime.Now
                };
                StagingTaskInfo.Provider.Set(Task);

                foreach (ServerInfo ServerObj in ActiveServers)
                {
                    // Create synchronization
                    SynchronizationInfo SyncInfo = new SynchronizationInfo()
                    {
                        SynchronizationTaskID   = Task.TaskID,
                        SynchronizationServerID = ServerObj.ServerID
                    };
                    SynchronizationInfo.Provider.Set(SyncInfo);
                }

                TaskGroupInfo TaskGroup = TaskGroupInfoProvider.GetUserTaskGroupInfo(MembershipContext.AuthenticatedUser.UserID);
                if (TaskGroup != null)
                {
                    TaskGroupTaskInfo.Provider.Add(TaskGroup.TaskGroupID, Task.TaskID);
                }
            }
        }
    public override IntegrationProcessResultEnum ProcessInternalTaskAsync(GeneralizedInfo infoObj, TranslationHelper translations, TaskTypeEnum taskType, TaskDataTypeEnum dataType, string siteName, out string errorMessage)
    {
        try
        {
            //Determine if the record exists in Azure Storage
            // Retrieve the storage account from the connection string.
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(SettingsKeyInfoProvider.GetValue("Custom.AzureStorageConnectionString"));

            // Create the table client.
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

            // Create the CloudTable object that represents the "kenticousers" table.
            CloudTable table = tableClient.GetTableReference("kenticousers");

            // Create a retrieve operation that takes a customer entity.
            TableOperation retrieveOperation = TableOperation.Retrieve<KenticoUserEntity>(ValidationHelper.GetString(infoObj["UserGUID"], ""), ValidationHelper.GetString(infoObj["LastName"], ""));

            // Execute the operation.
            TableResult retrievedResult = table.Execute(retrieveOperation);

            // Assign the result to a CustomerEntity object.
            KenticoUserEntity existinguser = (KenticoUserEntity)retrievedResult.Result;

            //Check if the record already exists
            if (existinguser == null)
            {
                // create a new record
                KenticoUserEntity newuser = new KenticoUserEntity(ValidationHelper.GetString(infoObj["UserGUID"], ""), ValidationHelper.GetString(infoObj["LastName"], ""));
                newuser.firstname = ValidationHelper.GetString(infoObj["FirstName"], "");
                newuser.lastname = ValidationHelper.GetString(infoObj["LastName"], "");
                newuser.email = ValidationHelper.GetString(infoObj["Email"], "");

                // Create the Insert TableOperation
                TableOperation insertOperation = TableOperation.Insert(newuser);

                // Execute the operation.
                table.Execute(insertOperation);

                EventLogProvider.LogEvent("I", "CustomIntegrationConnector", "Information", "Record inserted!");
            }
            else
            {
                //update the record
                existinguser.firstname = ValidationHelper.GetString(infoObj["FirstName"], "");
                existinguser.lastname = ValidationHelper.GetString(infoObj["LastName"], "");
                existinguser.email = ValidationHelper.GetString(infoObj["Email"], "");

                // Create the Update TableOperation
                TableOperation updateOperation = TableOperation.Replace(existinguser);

                // Execute the operation.
                table.Execute(updateOperation);

                EventLogProvider.LogEvent("I", "CustomIntegrationConnector", "Information", "Record updated!");
            }

            //Set the error message to null and the response to OK
            errorMessage = null;
            return IntegrationProcessResultEnum.OK;
        }
        catch (Exception ex)
        {
            //There was a problem.
            errorMessage = ex.Message;
            return IntegrationProcessResultEnum.ErrorAndSkip;
        }
    }
예제 #43
0
 /// <summary>
 /// tdKLCedentD or tdCFCedentD
 /// </summary>
 /// <returns>ID of new row inserted to database.</returns>
 private int SetCategorialPartialCedent(CedentEnum cedentType, long minLength, long maxLength, int taskDBID, TaskTypeEnum taskType)
 {
     string tableName;
     switch (taskType)
     {
         case TaskTypeEnum.KL:
         case TaskTypeEnum.SDKL:
             tableName = "tdKLCedentD";
             break;
         case TaskTypeEnum.CF:
         case TaskTypeEnum.SDCF:
             tableName = "tdCFCedentD";
             break;
         default:
             throw Ferda.Modules.Exceptions.SwitchCaseNotImplementedError(taskType);
     }
     string autoIncrementColumn = GetAutoIncrementColumnName(tableName);
     int autoIncrementValue = GetTableAutoIncrementValue(tableName, 1);
     string query = "INSERT INTO " + tableName + " (" + autoIncrementColumn
         + ",TaskID,CedentTypeID,MinLen,MaxLen) VALUES "
         + "(" + autoIncrementValue + ","
         + taskDBID + ","
         + constants.CedentEnumDictionary[cedentType] + ","
         + minLength + ","
         + maxLength
         + ")";
     ExecuteInsertQuery(query, tableName);
     return autoIncrementValue;
 }
 /// <summary>
 /// 新增任務,若新增任務成功回傳 <c>true</c> 否則為 <c>false</c>。
 /// </summary>
 /// <param name="taskType">任務類型。</param>
 /// <param name="data">任務資料。</param>
 /// <param name="bookingTime">預訂時間(選項)。</param>
 /// <returns>若新增任務成功回傳 <c>true</c> 否則為 <c>false</c>。</returns>
 public bool CreateTask(TaskTypeEnum taskType, string data, DateTime?bookingTime = null)
 {
     // 範例程式不實作。
     return(true);
 }
 /// <summary>
 /// Transforms given external object to internal (to TreeNode or GeneralizedInfo).
 /// </summary>
 /// <param name="obj">Object or document to transform</param>
 /// <param name="taskType">Type of task</param>
 /// <param name="dataType">Type of input data</param>
 /// <param name="siteName">Name of site</param>
 public override ICMSObject PrepareInternalObject(object obj, TaskTypeEnum taskType, TaskDataTypeEnum dataType, string siteName)
 {
     // This method is called withing IntegrationHelper.ProcessExternalTask and it provides you with space where you can easily transform
     // external object (possibly some kind of data container) to TreeNode (document) or GeneralizedInfo (object - eg. UserInfo)
     return null;
 }
예제 #46
0
        //private AbstractAttributeStruct GetAttribute(TaskTypeEnum taskType, object taskDescription, string attributeName, CedentEnum cedentType)
        //{
        //    switch (taskType)
        //    {
        //        case TaskTypeEnum.FFT:
        //            break;
        //        case TaskTypeEnum.KL:
        //            /*
        //            Ferda.Modules.Boxes.LISpMinerTasks.KLTask.TaskStruct input = (Ferda.Modules.Boxes.LISpMinerTasks.KLTask.TaskStruct)taskDescription;
        //            if (cedentType == CedentEnum.Antecedent)
        //            {
        //                foreach (CategorialPartialCedentSettingStruct cedent in input.antecedentSetting)
        //                {
        //                    foreach (AbstractAttributeStruct attribute in cedent.attributes)
        //                    {
        //                        if (attribute.nameInLiterals == attributeName)
        //                            return attribute;
        //                    }
        //                }
        //            }
        //            else if (cedentType == CedentEnum.Succedent)
        //            {
        //                foreach (CategorialPartialCedentSettingStruct cedent in input.succedentSetting)
        //                {
        //                    foreach (AbstractAttributeStruct attribute in cedent.attributes)
        //                    {
        //                        if (attribute.nameInLiterals == attributeName)
        //                            return attribute;
        //                    }
        //                }
        //            }
        //             */
        //            break;
        //        case TaskTypeEnum.CF:
        //            Ferda.Modules.Boxes.LISpMinerTasks.CFTask.TaskStruct input1 = (Ferda.Modules.Boxes.LISpMinerTasks.CFTask.TaskStruct)taskDescription;
        //            foreach (CategorialPartialCedentSettingStruct cedent in input1.antecedentSetting)
        //            {
        //                foreach (AbstractAttributeStruct attribute in cedent.attributes)
        //                {
        //                    if (attribute.nameInLiterals == attributeName)
        //                        return attribute;
        //                }
        //            }
        //            break;
        //        case TaskTypeEnum.SDFFT:
        //            break;
        //        case TaskTypeEnum.SDKL:
        //            /*
        //            Ferda.Modules.Boxes.LISpMinerTasks.SDKLTask.TaskStruct input2 = (Ferda.Modules.Boxes.LISpMinerTasks.SDKLTask.TaskStruct)taskDescription;
        //            if (cedentType == CedentEnum.Antecedent)
        //            {
        //                foreach (CategorialPartialCedentSettingStruct cedent in input2.antecedentSetting)
        //                {
        //                    foreach (AbstractAttributeStruct attribute in cedent.attributes)
        //                    {
        //                        if (attribute.nameInLiterals == attributeName)
        //                            return attribute;
        //                    }
        //                }
        //            }
        //            else if (cedentType == CedentEnum.Succedent)
        //            {
        //                foreach (CategorialPartialCedentSettingStruct cedent in input2.succedentSetting)
        //                {
        //                    foreach (AbstractAttributeStruct attribute in cedent.attributes)
        //                    {
        //                        if (attribute.nameInLiterals == attributeName)
        //                            return attribute;
        //                    }
        //                }
        //            }
        //             */
        //            break;
        //        case TaskTypeEnum.SDCF:
        //            Ferda.Modules.Boxes.LISpMinerTasks.SDCFTask.TaskStruct input3 = (Ferda.Modules.Boxes.LISpMinerTasks.SDCFTask.TaskStruct)taskDescription;
        //            foreach (CategorialPartialCedentSettingStruct cedent in input3.antecedentSetting)
        //            {
        //                foreach (AbstractAttributeStruct attribute in cedent.attributes)
        //                {
        //                    if (attribute.nameInLiterals == attributeName)
        //                        return attribute;
        //                }
        //            }
        //            break;
        //        default:
        //            break;
        //    }
        //    return null;
        //}
        public LiteralStruct[] GetCategorialLiterals(TaskTypeEnum taskType, int taskID, object taskDescription)
        {
            string tdLiteralTableName = String.Empty;
            string tdLiteralIDColumn = String.Empty;

            string tdCedentDTableName = String.Empty;
            string tdCedentDIDColumn = String.Empty;
            switch (taskType)
            {
                case TaskTypeEnum.CF:
                case TaskTypeEnum.SDCF:
                    tdLiteralTableName = "tdCFLiteralD";
                    tdLiteralIDColumn = "CFLiteralDID";

                    tdCedentDTableName = "tdCFCedentD";
                    tdCedentDIDColumn = "CFCedentDID";

                    break;

                case TaskTypeEnum.KL:
                case TaskTypeEnum.SDKL:
                    tdLiteralTableName = "tdKLLiteralD";
                    tdLiteralIDColumn = "KLLiteralDID";

                    tdCedentDTableName = "tdKLCedentD";
                    tdCedentDIDColumn = "KLCedentDID";
                    break;

                default:
                    throw new Exception("SwitchBranchNotImplemented");

            }
            List<LiteralStruct> result = new List<LiteralStruct>();
            LiteralStruct literalStruct;
            DataTable literals = ExecuteSelectQuery(
                "SELECT " +
                tdLiteralTableName + "." + tdLiteralIDColumn + ", " +
                tdCedentDTableName + "." + tdCedentDIDColumn + ", " +
                tdLiteralTableName + ".QuantityID, " +
                "tmQuantity.Name, CedentTypeID" +
                " FROM `"
                + tdCedentDTableName + "`, `" + tdLiteralTableName + "`, `tmQuantity` " +
                "WHERE TaskID=" + taskID + " AND " +
                tdCedentDTableName + "." + tdCedentDIDColumn + "=" +
                tdLiteralTableName + "." + tdCedentDIDColumn +
                " AND tmQuantity.QuantityID=" +
                tdLiteralTableName + "." + "QuantityID"
                );

            foreach (DataRow literal in literals.Rows)
            {
                literalStruct = new LiteralStruct();
                literalStruct.cedentType =
                    Constants.CedentEnumDictionaryBackward[
                        Convert.ToInt32(literal["CedentTypeID"])];
                literalStruct.literalIdentifier = CategorialLiteral[Convert.ToInt32(literal[tdLiteralIDColumn])];
                //literalStruct.literalIdentifier = Convert.ToInt32(literal[tdLiteralIDColumn]);
                literalStruct.literalName = literal["Name"].ToString();
                literalStruct.categoriesNames = GetCategorialLiteralCategoriesNames(Convert.ToInt32(literal["QuantityID"]));
                result.Add(literalStruct);
            }
            return result.ToArray();
        }
예제 #47
0
        /// <summary>
        /// 电表抄表
        /// </summary>
        /// <param name="meters">电表集合</param>
        /// <param name="connectId">任务编号</param>
        /// <param name="taskType">任务类型</param>
        /// <returns></returns>
        public List <ReadTaskEntity> WattReadWithOther(List <MeterViewModel> meters, string connectId, TaskTypeEnum taskType)
        {
            var taskWithOther = new List <ReadTaskEntity>();
            var tasks         = meters.Select(item => new ReadTaskEntity
            {
                F_Id          = Common.GuId(),
                F_WorkId      = connectId,
                F_CreatorTime = DateTime.Now,
                F_Factor      = item.F_Factor,
                F_MeterCode   = item.F_MeterCode,
                F_State       = (int)TaskStateEnum.Wait,
                F_MeterType   = MeterTypeEnum.WattMeter.ToString(),
                F_TaskType    = (int)taskType,
            }).ToList();

            taskWithOther.AddRange(tasks);
            foreach (var item in tasks)
            {
                taskWithOther.AddRange(new List <ReadTaskEntity>
                {
                    new ReadTaskEntity        //抄电压
                    {
                        F_Id          = Guid.NewGuid().ToString(),
                        F_Factor      = item.F_Factor,
                        F_CreatorTime = DateTime.Now,
                        F_MeterCode   = item.F_MeterCode,
                        F_MeterType   = item.F_MeterType,
                        F_State       = (int)TaskStateEnum.Wait,
                        F_TaskType    = (int)TaskTypeEnum.ThreeVoltage,
                        F_WorkId      = item.F_Id
                    },
                    new ReadTaskEntity        //抄电流
                    {
                        F_Id          = Guid.NewGuid().ToString(),
                        F_Factor      = item.F_Factor,
                        F_CreatorTime = DateTime.Now,
                        F_MeterCode   = item.F_MeterCode,
                        F_MeterType   = item.F_MeterType,
                        F_State       = (int)TaskStateEnum.Wait,
                        F_TaskType    = (int)TaskTypeEnum.ThreeCurrent,
                        F_WorkId      = item.F_Id
                    },
                    new ReadTaskEntity        //抄运行状态
                    {
                        F_Id          = Guid.NewGuid().ToString(),
                        F_Factor      = item.F_Factor,
                        F_CreatorTime = DateTime.Now,
                        F_MeterCode   = item.F_MeterCode,
                        F_MeterType   = item.F_MeterType,
                        F_State       = (int)TaskStateEnum.Wait,
                        F_TaskType    = (int)TaskTypeEnum.RunningState,
                        F_WorkId      = item.F_Id
                    },
                    new ReadTaskEntity         //抄尖时段电能
                    {
                        F_Id          = Guid.NewGuid().ToString(),
                        F_Factor      = item.F_Factor,
                        F_CreatorTime = DateTime.Now,
                        F_MeterCode   = item.F_MeterCode,
                        F_MeterType   = item.F_MeterType,
                        F_State       = (int)TaskStateEnum.Wait,
                        F_TaskType    = (int)TaskTypeEnum.TipEnergy,
                        F_WorkId      = item.F_Id
                    },
                    new ReadTaskEntity         //抄峰时段电能
                    {
                        F_Id          = Guid.NewGuid().ToString(),
                        F_Factor      = item.F_Factor,
                        F_CreatorTime = DateTime.Now,
                        F_MeterCode   = item.F_MeterCode,
                        F_MeterType   = item.F_MeterType,
                        F_State       = (int)TaskStateEnum.Wait,
                        F_TaskType    = (int)TaskTypeEnum.PeakEnergy,
                        F_WorkId      = item.F_Id
                    },
                    new ReadTaskEntity         //抄平时段电能
                    {
                        F_Id          = Guid.NewGuid().ToString(),
                        F_Factor      = item.F_Factor,
                        F_CreatorTime = DateTime.Now,
                        F_MeterCode   = item.F_MeterCode,
                        F_MeterType   = item.F_MeterType,
                        F_State       = (int)TaskStateEnum.Wait,
                        F_TaskType    = (int)TaskTypeEnum.FlatEnergy,
                        F_WorkId      = item.F_Id
                    },
                    new ReadTaskEntity         //抄谷时段电能
                    {
                        F_Id          = Guid.NewGuid().ToString(),
                        F_Factor      = item.F_Factor,
                        F_CreatorTime = DateTime.Now,
                        F_MeterCode   = item.F_MeterCode,
                        F_MeterType   = item.F_MeterType,
                        F_State       = (int)TaskStateEnum.Wait,
                        F_TaskType    = (int)TaskTypeEnum.ValleyEnergy,
                        F_WorkId      = item.F_Id
                    },
                });
            }
            return(taskWithOther);
        }
예제 #48
0
        public int[][] GetSecondContingecyTable(TaskTypeEnum taskType, int taskID, int hypothesisID, int rowAttributeIdentifier, int columnAttributeIdentifier)
        {
            string tableName = String.Empty;
            string hypothesisColumnName = String.Empty;
            bool kl = false;
            switch (taskType)
            {
                case TaskTypeEnum.KL:
                    return new int[0][];

                case TaskTypeEnum.SDKL:
                    tableName = "tiDKFrequencyI";
                    hypothesisColumnName = "HypothesisDKID";
                    kl = true;
                    break;

                case TaskTypeEnum.CF:
                    return new int[0][];

                case TaskTypeEnum.SDCF:
                    tableName = "tiDCFrequencyI";
                    hypothesisColumnName = "HypothesisDCID";
                    break;

                default:
                    throw Ferda.Modules.Exceptions.SwitchCaseNotImplementedError(taskType);
            }
            DataTable table = ExecuteSelectQuery("SELECT * FROM " + tableName + " WHERE TaskID=" + taskID + " AND " + hypothesisColumnName + "=" + hypothesisID + " AND CedentTypeID=" + constants.CedentEnumDictionary[CedentEnum.SecondSet]);

            AbstractAttributeStruct rowAttribute;
            AbstractAttributeStruct columnAttribute = GetAttributeStruct(columnAttributeIdentifier);
            List<int[]> resultList = new List<int[]>();
            if (kl)
            {
                rowAttribute = GetAttributeStruct(rowAttributeIdentifier);
                for (int i = 0; i < rowAttribute.countOfCategories; i++)
                    resultList.Add(new int[columnAttribute.countOfCategories]);
            }
            else
            {
                resultList.Add(new int[columnAttribute.countOfCategories]);
            }

            int[][] result = resultList.ToArray();
            foreach (DataRow row in table.Rows)
            {
                if (kl)
                    result[Convert.ToInt32(row["Row"])][Convert.ToInt32(row["Col"])] = Convert.ToInt32(row["Frequency"]);
                else
                    result[0][Convert.ToInt32(row["Col"])] = Convert.ToInt32(row["Frequency"]);
            }
            return result;
        }