Beispiel #1
0
        public WorklistService(string userAccount = null)
        {
            IDbFactory dbFactory = DbContextSelector.getInstance().getDbFactory(DbContextSelector.DbName.Workflow);

            _actLog   = new ActivityHistoryRepository(dbFactory);
            _repo     = new WMRepository(dbFactory);
            _provider = new ProcInstProvider(userAccount);
            _account  = userAccount.FQNWithK2Label();
        }
        public string TakeAction()
        {
            _procInstProvider = new ProcInstProvider(WorkflowInstance.CurrentUser);
            string message = Invalid();

            if (message != null)
            {
                //return JsonConvert.SerializeObject(new ResponseText(){ Message = message,Show = true});
                throw new Exception(message);
            }

            if (CurrentActivity().CurrAction.FormDataProcessing.IsAddNewRequestHeader)
            {
                string invalideMsg = repository.ExecSingle <string>(string.Format(
                                                                        @"SELECT TOP(1) TITLE FROM [BPMDATA].[PROCESS_VALIDATOR] WHERE REQUEST_CODE = '{0}' AND REQUESTOR = {1}",
                                                                        REQ_CODE, WorkflowInstance.Requestor.Id));
                if (!string.IsNullOrEmpty(invalideMsg))
                {
                    return(JsonConvert.SerializeObject(new ResponseText()
                    {
                        Message = invalideMsg, Show = true
                    }));
                }

                if (!_procInstProvider.CanStartWorkFlow(WorkflowInstance.CurrentUser, getFullProccessName()))
                {
                    throw new Exception(String.Format("{0} has no privilege to start work flow {1}", WorkflowInstance.CurrentUser, getFullProccessName()));
                }
            }

            AddNewRequestHeader();
            EditRequestHeader();
            _activityHistory = RecordActivityHistory();
            SaveAttachments();
            //UpdateLastActivity();
            TakeFormAction();

            unitOfWork.commit();

            if (!IsSaveDraft())
            {
                processWorkFlow(); /* skip out process instance */
            }

            RecordTransactionHistory(_activityHistory);
            SendMail();

            return(JsonConvert.SerializeObject(new ResponseText()
            {
                Message = (!string.IsNullOrEmpty(WorkflowInstance.Message) ?
                           WorkflowInstance.Message.Replace("@FOLIO", RequestHeader.Title) :
                           string.Format("Your request number is {0}", RequestHeader.Title)),
                Show = (!string.IsNullOrEmpty(WorkflowInstance.Message)) // custom message is empty then hide message
            }));
        }
        public void LoadData()
        {
            //Create workflow instance
            CreateWorkflowInstance();
            _procInstProvider = new ProcInstProvider(WorkflowInstance.CurrentUser);
            //Assign serail no to the instance
            var serialNo = WorkflowInstance.SerialNo;

            if (String.IsNullOrWhiteSpace(serialNo))
            {
                throw new Exception("No serial can be found");
            }

            if (serialNo.EndsWith("_99999"))
            {
                if (requestHeaderRepository.Editable(RequestHeader.Id, GetRequestCode(), WorkflowInstance.CurrentUser))
                {
                    WorkflowInstance.Activity = FORM_EDIT;
                }
                else
                {
                    WorkflowInstance.Activity = FORM_VIEW;
                }
            }
            else if (serialNo.EndsWith("_00000"))
            {
                WorkflowInstance.Activity = FORM_DRAFT;
            }
            else
            {
                WorklistItem = _procInstProvider.OpenWorklistItem(serialNo);
                string activityName = WorklistItem.ActivityName;// ActivityInstanceDestination.Name;
                WorkflowInstance.Actions    = GetActionList(activityName);
                WorkflowInstance.ViewConfig = GetViewConfig(activityName);
                WorkflowInstance.Activity   = activityName;
            }

            WorkflowInstance.SerialNo = serialNo;

            //Load data to the instance
            LoadWorkflowInstance();
        }
Beispiel #4
0
 public WorkflowEngine(string currentUser)
 {
     _provider = new ProcInstProvider(currentUser);
 }
Beispiel #5
0
 public RoleRepository(IDbFactory dbFactory) : base(dbFactory)
 {
     server = new ProcInstProvider("");
 }