Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        static public string getXmlTaskURL(TaskDefinitionIdsManager taskIdsManager, TaskDefinitionId taskDefinitionId)
        {
            MGDataCollection mgDataTab = MGDataCollection.Instance;

            string taskFileName = taskIdsManager.GetXmlId(taskDefinitionId);

            if (taskFileName == null)
            {
                return(null);
            }
            string defaultTagList = taskIdsManager.GetDefaultTagList(taskDefinitionId);


            StringBuilder response = new StringBuilder();

            response.Append("<");
            response.Append(ConstInterface.MG_TAG_TASKURL);
            response.Append(" xmlId=\"");
            response.Append(taskFileName);
            response.Append("\" ");

            response.Append("tagList");
            response.Append("=\"");
            response.Append(defaultTagList);
            response.Append("\">");

            response.Append("</");
            response.Append(ConstInterface.MG_TAG_TASKURL);
            response.Append(">");

            return(response.ToString());
        }
Пример #2
0
        ///<summary> get executionRightIdx </summary>
        ///<param name="taskDefinitionId">!!.</param>
        ///<returns>!!.</returns>
        internal int GetExecutionRight(TaskDefinitionId taskDefinitionId)
        {
            Debug.Assert(IsOfflineTask(taskDefinitionId));

            TaskDefinitionIdInfo TaskDefinitionIdInfo = _TaskDefinitionIdsCache[taskDefinitionId];

            return(TaskDefinitionIdInfo.ExecutionRightIdx);
        }
Пример #3
0
        public TaskDefinitionId TaskCalledByMenu(int menuId, TaskBase mainProg)
        {
            //fixed bug#:431559, the menu need to be take from menuCtlIndex main program.
            ApplicationMenus applicationMenus = getApplicationMenus(mainProg);
            MenuEntryProgram menuEntry        = applicationMenus.menuByUid(menuId) as MenuEntryProgram;

            TaskDefinitionId taskDefinitionId = new TaskDefinitionId(menuEntry.CtlIndex, menuEntry.ProgramIsn, 0, true);

            return(taskDefinitionId);
        }
Пример #4
0
        /// <summary>
        /// add task definition id
        /// </summary>
        /// <param name="taskDefinitionId"></param>
        /// <param name="xmlId"></param>
        /// <param name="defaultTagList"></param>
        /// <param name="executionRightIdx"></param>
        internal void AddTaskDefinitionId(TaskDefinitionId taskDefinitionId, string xmlId, string defaultTagList, int executionRightIdx)
        {
            lock (_TaskDefinitionIdsCache)
            {
                TaskDefinitionIdInfo taskDefinitionIdInfo = new TaskDefinitionIdInfo(xmlId, defaultTagList, executionRightIdx);
                _TaskDefinitionIdsCache.Add(taskDefinitionId, taskDefinitionIdInfo);

                // get the task's file from server to client
                ApplicationSourcesManager.GetInstance().ReadSource(xmlId, false, false);
            }
        }
Пример #5
0
 /// <summary>
 /// get the CommandsProcessor to use for executing the defined task
 /// </summary>
 /// <param name="taskDefinitionId"></param>
 /// <returns></returns>
 internal static CommandsProcessorBase GetCommandsProcessor(TaskDefinitionId taskDefinitionId)
 {
     if (ClientManager.Instance.LocalManager.ApplicationDefinitions.TaskDefinitionIdsManager.IsOfflineTask(taskDefinitionId))
     {
         return(LocalCommandsProcessor.GetInstance());
     }
     else
     {
         return(RemoteCommandsProcessor.GetInstance());
     }
 }
Пример #6
0
 /// <summary>
 /// get the file name
 /// </summary>
 /// <param name="taskDefinitionId"></param>
 /// <returns></returns>
 internal string GetXmlId(TaskDefinitionId taskDefinitionId)
 {
     if (_TaskDefinitionIdsCache.ContainsKey(taskDefinitionId))
     {
         TaskDefinitionIdInfo TaskDefinitionIdInfo = _TaskDefinitionIdsCache[taskDefinitionId];
         return(TaskDefinitionIdInfo.XmlId);
     }
     else
     {
         return(null);
     }
 }
Пример #7
0
        /// <summary> returns TaskDefinitionId of a MainProgram of cltIdx</summary>
        /// <param name="ctlIdx"></param>
        /// <returns></returns>
        internal TaskDefinitionId GetMainPrgTaskDefinitionIdByCtlIdx(int ctlIdx)
        {
            TaskDefinitionId taskDefinitionId = null;

            foreach (TaskDefinitionId taskDefinitionKey in _TaskDefinitionIdsCache.Keys)
            {
                if (taskDefinitionKey.CtlIndex == ctlIdx && taskDefinitionKey.IsMainProgram())
                {
                    taskDefinitionId = taskDefinitionKey;
                    break;
                }
            }

            return(taskDefinitionId);
        }
Пример #8
0
        /// <summary>
        /// CTOR
        /// </summary>
        /// <param name="taskDefinitionId"></param>
        /// <param name="command"></param>
        public LocalRunTimeCommandSelectProgram(TaskDefinitionId taskDefinitionId, IClientCommand command)
            : base(taskDefinitionId)
        {
            ExecOperCommand cmd = command as ExecOperCommand;

            Debug.Assert(cmd != null);

            Task   task = Manager.MGDataTable.GetTaskByID(cmd.TaskTag) as Task;
            MgForm form = task.getForm() as MgForm;

            mgControl = form.CtrlTab.getCtrl(cmd.DitIdx) as MgControl;

            CallingTaskTag    = cmd.TaskTag;
            PathParentTaskTag = CallingTaskTag;

            ForceModal = true;
        }
Пример #9
0
        /// <summary>
        /// Create an open task command from a menu command
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        internal LocalRunTimeCommandBase CreateMenuExecuteOperationCommand(MenuCommand command)
        {
            // Get the relevant menu entry
            // QCR #283731. Use MenuComp on command for the relevant Ctl.
            Task             mainProg         = MGDataCollection.Instance.GetMainProgByCtlIdx(command.MenuComp);
            ApplicationMenus applicationMenus = Manager.MenuManager.getApplicationMenus(mainProg);
            MenuEntryProgram menuEntry        = applicationMenus.menuByUid(command.MenuUid) as MenuEntryProgram;

            TaskDefinitionId taskDefinitionId = new TaskDefinitionId(menuEntry.CtlIndex, menuEntry.ProgramIsn, 0, true);

            ArgumentsList argList = GetCommandArgumentList(command, menuEntry, mainProg);

            return(new LocalRunTimeCommandOpenTask(taskDefinitionId)
            {
                ArgList = argList, CallingTaskTag = command.TaskTag, PathParentTaskTag = command.TaskTag
            });
        }
Пример #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        private LocalRunTimeCommandBase CreateExecuteOperaion(ExecOperCommand command)
        {
            if (command.Operation != null)
            {
                if (command.Operation.IsLocalCall)
                {
                    string calcCallingTaskTag = "";
                    string pathParentTaskTag  = command.Operation.getTaskTag(); // PathParentTask will be a task containing Call operation.

                    // Call with a destination
                    if (!String.IsNullOrEmpty(command.Operation.GetSubformControlName()))
                    {
                        return(new LocalRunTimeCommandCallWithDestination(command.Operation.CalledTaskDefinitionId)
                        {
                            CallingTaskTag = pathParentTaskTag,
                            PathParentTaskTag = pathParentTaskTag,
                            SubformCtrlName = command.Operation.GetSubformControlName(),
                            ArgList = command.Operation.GetArgList(),
                        });
                    }
                    else
                    {
                        // pathParentTask must be ContextTask of PathParent Task.
                        Task pathParentTask = MGDataCollection.Instance.GetTaskByID(pathParentTaskTag) as Task;
                        calcCallingTaskTag = pathParentTask.ContextTask.getTaskTag();
                        return(new LocalRunTimeCommandOpenTask(command.Operation.CalledTaskDefinitionId)
                        {
                            ArgList = command.Operation.GetArgList(),
                            ReturnValueField = command.Operation.GetReturnValueField(),
                            CallingTaskTag = calcCallingTaskTag,
                            PathParentTaskTag = pathParentTaskTag
                        });
                    }
                }
            }
            else if (command.DitIdx != Int32.MinValue)
            {
                TaskDefinitionId taskDefinitionId = GetTaskIdFromCommandCtrlProp(command);

                return(new LocalRunTimeCommandSelectProgram(taskDefinitionId, command));
            }

            throw new NotImplementedException();
        }
Пример #11
0
        ///<summary>
        ///  Check whether the task can be executed or not.
        ///  Currently this method check whether user is authorized to execute the task or not.
        ///</summary>
        ///<param name="taskDefinitionId">!!.</param>
        ///<returns>true - if task can be executed.</returns>
        internal bool CanExecuteTask(TaskDefinitionId taskDefinitionId)
        {
            bool canExecute = true;

            if (taskDefinitionId.IsProgram) // Rights shouldn't be checked for SubTasks.
            {
                // Get the task's execution right and if it is not available then get GlobalExecution rights from MP.
                int executionRightIdx = GetExecutionRight(taskDefinitionId);
                if (executionRightIdx <= 0)
                {
                    TaskDefinitionId mainPrgTaskDefinitionId = GetMainPrgTaskDefinitionIdByCtlIdx(taskDefinitionId.CtlIndex);
                    executionRightIdx = GetExecutionRight(mainPrgTaskDefinitionId);
                }

                if (executionRightIdx > 0)
                {
                    canExecute = ClientManager.Instance.getUserRights().getRight(taskDefinitionId.CtlIndex, executionRightIdx);
                }
            }

            return(canExecute);
        }
Пример #12
0
 /// <summary>
 /// checks if a task, identified by taskId, is an off-line task, by checking if it exists in the task IDs cache
 /// </summary>
 /// <param name="taskId"></param>
 /// <returns></returns>
 internal bool IsOfflineTask(TaskDefinitionId taskId)
 {
     return(_TaskDefinitionIdsCache.ContainsKey(taskId));
 }
Пример #13
0
 public LocalRunTimeCommandOpenTask(TaskDefinitionId taskDefinitionId)
 {
     this.TaskDefinitionId = taskDefinitionId;
     ForceModal            = false;
     SubformDitIdx         = Int32.MinValue;
 }
Пример #14
0
 /// <summary>
 /// callback to internal handler, to get the TaskDefinitionID
 /// </summary>
 /// <param name="taskDefinitionId"></param>
 void SetTaskDefinitionId(TaskDefinitionId taskDefinitionId)
 {
     this.taskDefinitionId = taskDefinitionId;
 }
Пример #15
0
 /// <summary>
 /// CTOR
 /// </summary>
 /// <param name="taskDefinitionId"></param>
 internal LocalRunTimeCommandCallWithDestination(TaskDefinitionId taskDefinitionId) : base(taskDefinitionId)
 {
 }
Пример #16
0
        /// <summary>
        /// get the default tag list
        /// </summary>
        /// <param name="taskDefinitionId"></param>
        /// <returns></returns>
        internal string GetDefaultTagList(TaskDefinitionId taskDefinitionId)
        {
            TaskDefinitionIdInfo TaskDefinitionIdInfo = _TaskDefinitionIdsCache[taskDefinitionId];

            return(TaskDefinitionIdInfo.DefaultTagList);
        }
Пример #17
0
 /// <summary>
 /// Delegate method for the startup sequence sax parser see: <see cref="ParseStartupProgram"/> above.
 /// </summary>
 /// <param name="taskId">The task identifier created by the sax handler.</param>
 /// <param name="taskUrl">Ignored</param>
 /// <param name="defaultTags">Ignored</param>
 void HandleTaskDefinitionId(TaskDefinitionId taskId)
 {
     startupProgram = taskId;
 }