Beispiel #1
0
 public void ActionExecute(ExecutingContext executeContext)
 {
     if (executeContext.Instance.State == WorkflowInstanceState.Reject || executeContext.Instance.State == WorkflowInstanceState.Kill)
     {
         CommandBus.Dispatch <string>(new DeletePending(),
                                      executeContext.Instance.InstanceID);
     }
     else
     {
         var current = executeContext.To;
         if (current.NodeType == WorkflowNodeCategory.Decision)
         {
             DecisionJump(executeContext);
         }
         else
         {
             if (!executeContext.Result && !String.IsNullOrEmpty(executeContext.From.Cooperation))
             {
                 CooperationPending.Execute(executeContext);
             }
             else
             {
                 string instanceID = executeContext.Instance.InstanceID;
                 if (current.NodeType == WorkflowNodeCategory.End)
                 {
                     CommandBus.Dispatch <string>(new DeletePending(), instanceID);
                 }
                 else
                 {
                     AssignToPendingUser(executeContext, current);
                 }
             }
         }
     }
 }
 public override void OnExecuting(ExecutingContext args)
 {
     if (args.Args.FirstOrDefault() != null)
     {
         args.Args[0] = args.Args[0].ToString() + "Hello";
     }
 }
Beispiel #3
0
 public void OnSubscribeExecuting(ExecutingContext context)
 {
     _logger.LogInformation(
         $"^^^^^^^^^^^^^^^^^^^^^^^^^{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}###订阅收到消息:{context.DeliverMessage.Headers["cap-msg-name"]}^^^^^^^^^^^^^^^^^^^^^^^^^^");
     _logger.LogInformation(
         $"^^^^^^^^^^^^^^^^^^^^^^^^^^开始处理订阅的消息:{context.DeliverMessage.Headers["cap-corr-id"]}^^^^^^^^^^^^^^^^^^^^^^^^^^");
 }
Beispiel #4
0
        public static string Cooperation(WorkflowContext context, ExecutingContext executeContext)
        {
            string           resultTo        = String.Empty;
            Node             current         = context.Current;
            AbstractWorkflow workflowService = WorkflowGlobalServiceProvider.Resolve <AbstractWorkflow>();

            IWorkflowCooperationService workflowCooperationService = workflowService.NodeService.WorkflowCooperationService;
            IStrategyService            strategyService            = (IStrategyService)Utils.CreateInstance(current.Assistant);
            string instanceID = context.Instance.InstanceID;

            workflowService.NodeService.WorkflowCooperationService.Persistent(new WorkflowCooperation
            {
                NodeID       = current.NID,
                InstanceID   = context.Instance.InstanceID,
                TransitionID = context.TransitionID,
                CreateTime   = DateTime.Now
            });

            IList <WorkflowCooperation> records = workflowCooperationService.Query(instanceID).Where(e => e.NodeID == current.NID).ToList();

            executeContext.Result = strategyService.Check(records);
            if (executeContext.Result)
            {
                IWorkflowCooperationDecision workflowCooperationDecision = (IWorkflowCooperationDecision)Utils.CreateInstance(current.Cooperation);
                resultTo = workflowCooperationDecision.Execute(records);
                workflowService.NodeService.WorkflowCooperationService.Delete(instanceID, current.NID);
            }
            else
            {
                workflowService.Actions.ForEach(pluin => pluin.ActionExecute(executeContext));
            }
            return(resultTo);
        }
        public void OnProcess(ExecutingContext executeContext)
        {
            if (executeContext.Instance.Current.NodeType == WorkflowNodeCategory.Decision)
            {
                DecisionJump(executeContext);
            }
            else
            {
                //写入审批记录
                WriteRecord(executeContext);
                string instanceID = executeContext.Instance.InstanceID;
                var    current    = GetCurrentNode(instanceID);
                if (current.Name == "结束")
                {
                    pendingService.Delete(p => p.INSTANCEID == instanceID);
                }
                else
                {
                    //流程跳转|流程撤销(重新指派人审批) 仅限演示
                    List <Group> items    = current.Groups;
                    List <User>  userList = GetUsersByGroup(items);
                    foreach (User user in userList)
                    {
                        WritePending(user.IDENTIFICATION.ToString(), executeContext);
                    }


                    string NID = executeContext.Instance.Current.NID;
                    pendingService.Delete(pending => pending.NODEID == NID && pending.INSTANCEID == instanceID);
                }
            }
        }
Beispiel #6
0
        public void ActionExecute(ExecutingContext executeContext)
        {
            string cateCode   = (String)executeContext.Data.CateCode;
            string instanceID = (String)executeContext.Instance.InstanceID;

            FormService.Execute(cateCode, instanceID);
        }
Beispiel #7
0
        object IAutoIdentityService.GetAutoIdentityValue(string fullTableName)
        {
            IDataBaseService dataBaseService = ExecutingContext.GetService <IDataBaseService>(ServiceName.ADWDB);

            IDataManager dataManager = EntityManager.FromDataBaseService(ServiceName.ADWDB);

            if (DataBaseType == DBMS.AzureStorage)
            {
                TableId tableId = dataManager.GetEntity <TableId>(fullTableName);

                if (tableId != null)
                {
                    tableId.NextId++;
                }
                else
                {
                    IEntityManager em = dataManager as IEntityManager;

                    tableId = em.CreateInstance <TableId>();

                    tableId.TableName = fullTableName;
                    tableId.NextId    = 1;
                }

                dataManager.SaveTransactional();

                return(tableId.NextId);
            }
            else
            {
                return(dataManager.GetNextId(fullTableName));
            }
        }
Beispiel #8
0
        byte[] IOffice.ExportExcel(string fileName)
        {
            var svc = ExecutingContext.GetService <IProductionService>("ProductionService");

            var ds = svc.LoadAllProducts();

            byte[] bytes = null;

            //if (fileName.EndsWith(".xls")) {

            var tempFileName = Context.MapPath(@"~\" + fileName);

            Aspectize.ExcelHelper.SaveToFile(tempFileName, ds);

            bytes = File.ReadAllBytes(tempFileName);

            File.Delete(tempFileName);

            //} else {

            //    var xlSvc = ExecutingContext.GetService<IAspectizeExcel>("AspectizeExcel");

            //    bytes = xlSvc.ToExcel(ds, null);
            //}

            ExecutingContext.SetHttpDownloadFileName(fileName);

            return(bytes);
        }
        private void Invoke(Node to, ExecutingContext executeContext, WorkflowContext context)
        {
            string instanceID = context.Instance.InstanceID;

            workflowService.InstanceService.Jump(context.Current.ID, to.ID, instanceID, new WorkflowProcess()
            {
                RelationshipID = executeContext.From.NID,
                CreateTime     = DateTime.Now,
                ActorID        = context.ActorID,
                Origin         = executeContext.From.ID,
                Destination    = executeContext.To.ID,
                TransitionID   = context.TransitionID,
                InstanceID     = executeContext.Instance.InstanceID,
                NodeType       = executeContext.From.NodeType,
                Direction      = WorkflowOpertaion.Back
            }, workflowService.ProcessService);

            workflowService.Actions.ForEach(pluin => pluin.ActionExecute(executeContext));

            if (to.NodeType == WorkflowNodeCategory.Decision)
            {
                Jump(new WorkflowContext()
                {
                    Instance     = WorkflowInstance.GetInstance(instanceID),
                    TransitionID = context.TransitionID,
                    Data         = context.Data,
                    Message      = "系统流转",
                    ActorID      = context.ActorID,
                    Current      = to
                });
            }
        }
Beispiel #10
0
        DataSet ILoadDataService.UploadAttachment(UploadedFile[] uploadedFiles, Guid workItemId)
        {
            IDataManager dm = EntityManager.FromDataBaseService("MyDataService");

            IEntityManager em = dm as IEntityManager;

            var fileService = ExecutingContext.GetService <IFileService>("MyFileService");

            var workItem = dm.GetEntity <WorkItem>(workItemId);

            foreach (UploadedFile uploadedFile in uploadedFiles)
            {
                var attachment = em.CreateInstance <Attachment>();

                string pathFile = string.Format(@"{0:N}/{1:N}", workItemId, attachment.Id);

                attachment.FileName   = uploadedFile.Name;
                attachment.FileLength = uploadedFile.ContentLength;

                em.AssociateInstance <WorkItemAttachment>(workItem, attachment);

                fileService.Write(pathFile, uploadedFile.Stream);
            }

            dm.SaveTransactional();

            return(dm.Data);
        }
Beispiel #11
0
        void IInscriptionService.ResetPassword(string email)
        {
            IDataManager dm = EntityManager.FromDataBaseService(ServiceName.MyDataService);

            List <User> users = dm.GetEntities <User>(new QueryCriteria(User.Fields.Email, ComparisonOperator.Equal, email.ToLower().Trim()));

            if (users.Count == 1)
            {
                User user = users[0];

                if (user.Status != EnumUserStatus.Blocked)
                {
                    user.Status           = EnumUserStatus.Pending;
                    user.VerificationCode = Guid.NewGuid();

                    var mailService = ExecutingContext.GetService <IAspectizeSMTPService>(ServiceName.MyMailService);

                    string subject = "Reset your password";

                    string applicationLink = string.Format(@"{0}{1}/[email protected]&code={2}", ExecutingContext.CurrentHostUrl, ExecutingContext.CurrentApplicationName, user.VerificationCode);

                    string body = string.Format(@"Click on the following link to fill a new password: <a href='{0}' target='_blank'>New password</a>", applicationLink);

                    mailService.SendMailSimple(false, email, subject, body);

                    dm.SaveTransactional();
                }
            }
        }
Beispiel #12
0
        /// <summary>
        /// 写待办信息
        /// </summary>
        /// <param name="actorID">参与者</param>
        /// <param name="executeContext"></param>
        public void WritePending(string actorID, ExecutingContext executeContext)
        {
            var      node       = GetCurrentNode(executeContext.Instance.InstanceID);
            string   cateCode   = (String)executeContext.Data.CateCode;
            string   instanceID = (String)executeContext.Instance.InstanceID;
            Category model      = new CategoryQueryService().Query()
                                  .FirstOrDefault(cate => cate.NID == cateCode);
            string json = (String)executeContext.Data.Json;

            Pending entry = new Pending
            {
                NID            = Guid.NewGuid().ToString(),
                ActorID        = actorID,
                InstanceID     = instanceID,
                NodeID         = node.NID,
                Url            = model.Url,
                CreateDateTime = DateTime.Now,
                NodeName       = node.Name,
                CateCode       = cateCode,
                CateName       = model.Name,
                Title          = Parse(json, model.Expression)
            };

            CommandBus.Dispatch <Pending>(new CreatePending(), entry);
        }
Beispiel #13
0
 public void ActionExecute(ExecutingContext executeContext)
 {
     if (executeContext.Instance.Current.NodeType != WorkflowNodeCategory.Decision)
     {
         //写入审批记录
         WriteRecord(executeContext);
     }
 }
Beispiel #14
0
        Guid IAdminService.UploadLogoFile(Stream data, Dictionary <string, object> info)
        {
            IFileService fileService = ExecutingContext.GetService <IFileService>(AdventureWorksFileService);

            fileService.Write("Logo", data);

            return(Guid.NewGuid());
        }
Beispiel #15
0
        void ILoadDataService.BuildDataDemo()
        {
            //string adwCnxString = @"Data Source=NICOW8\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=True";

            //IDataManager dmSQL = EntityManager.FromConnectionString(adwCnxString, DBMS.SQLServer2005);

            //IEntityManager emSql = dmSQL as IEntityManager;

            //dmSQL.LoadAssociated<SalesReason, SalesOrderHeaderSalesReason>();

            //foreach (SalesReason salesReason in emSql.GetAllInstances<SalesReason>())
            //{
            //    //salesReason.data.SetAdded();

            //    foreach (SalesOrderHeaderSalesReason sohsr in salesReason.GetRelationsInstances<SalesOrderHeader, SalesOrderHeaderSalesReason>())
            //    {
            //        sohsr.data.SetAdded();
            //    }
            //}

            //IDataManager dm = EntityManager.FromDataSetAndBaseService(emSql.Data, ServiceName.ADWDB);

            //dm.SaveTransactional();


            IDataManager dm = EntityManager.FromDataBaseService(ServiceName.ADWDB);

            var relations = new List <IRoleRelationQuery>();

            relations.Add(new RoleRelationQuery <Category, CategorySubcategory>());
            relations.Add(new RoleRelationQuery <Subcategory, ProductSubcategory>());
            relations.Add(new RoleRelationQuery <Product, ProductProductPhoto>());

            dm.LoadEntitiesGraph <Category>(relations);

            relations = new List <IRoleRelationQuery>();

            relations.Add(new RoleRelationQuery <Employee, EmployeeManager>());
            relations.Add(new RoleRelationQuery <Employee, EmployeeContact>());

            dm.LoadEntitiesGraph <Employee>(relations);

            relations = new List <IRoleRelationQuery>();

            relations.Add(new RoleRelationQuery <SalesPerson, ContactSalesPerson>());
            //relations.Add(new RoleRelationQuery<SalesPerson, SalesOrderHeaderSalesPerson>());
            //relations.Add(new RoleRelationQuery<SalesOrderHeader, SalesOrderHeaderSalesReason>());

            dm.LoadEntitiesGraphFields <SalesPerson>(EntityLoadOption.AllFields, relations);

            dm.LoadEntities <Department>();

            IFileService fs = ExecutingContext.GetService <IFileService>(ServiceName.ADWFileService);

            var data = DataSetHelper.BinarySave(dm.Data);

            fs.Write("DataDemo2", data);
        }
Beispiel #16
0
        public void ActionExecute(ExecutingContext executingContext)
        {
            IList <IWorkflowAction> actions = GetWorkflowActions(executingContext.To);

            foreach (IWorkflowAction action in actions)
            {
                action.ActionExecute(executingContext);
            }
        }
        public override void OnExecuting(ExecutingContext input)
        {
            List <object> oList = new List <object>();

            foreach (string s in input.Args)
            {
                oList.Add(s.Replace("!", "").Replace("#", ""));
            }
            input.Args = oList.ToArray();
        }
Beispiel #18
0
 /// <summary>
 /// 写入审批记录
 /// </summary>
 /// <param name="executeContext"></param>
 public void WriteRecord(ExecutingContext executeContext)
 {
     //写入审批记录
     recordService.Insert(new Record()
     {
         INSTANCEID = executeContext.Instance.InstanceID,
         NODENAME   = executeContext.From.Name,
         MESSAGE    = executeContext.Data.Message
     });
 }
Beispiel #19
0
        public void ActionExecute(ExecutingContext executingContext)
        {
            var current = executingContext.To;

            if (current.NodeType != WorkflowNodeCategory.Decision)
            {
                IWorkflowNodeService workflowNodeService = WorkflowGlobalServiceProvider.Resolve <IWorkflowNodeService>();
                workflowNodeService.Execute(current);
            }
        }
Beispiel #20
0
 /// <summary>
 /// 写待办信息
 /// </summary>
 /// <param name="actorID">参与者</param>
 /// <param name="executeContext"></param>
 public void WritePending(string actorID, ExecutingContext executeContext)
 {
     pendingService.Insert(new Pending()
     {
         ACTORID     = actorID,
         INSTANCEID  = executeContext.Instance.InstanceID,
         NODEID      = GetCurrentNode(executeContext.Instance.InstanceID).NID,
         APPELLATION = executeContext.Data.Url
     });
 }
Beispiel #21
0
        public void Init()
        {
            Mock <MethodInfo> moqmethodInfo = new Mock <MethodInfo>();
            var args = new object[] { "12345!!##,,11dasd" };

            moqmethodInfo.Setup(o => o.Name).Returns("Test_ExecutedContext");

            _executedContext = new ExecutedContext(moqmethodInfo.Object, args, It.IsAny <object>());
            _executing       = new ExecutingContext(moqmethodInfo.Object, args);
        }
Beispiel #22
0
        public void OnCompleted(ExecutingContext executeContext)
        {
            //以下代码仅用于演示
            //流程结束(在完成事件中可以做业务操作)
            ApplyService applyService = new ApplyService();
            Apply        model        = applyService.GetInstanceByInstanceID(executeContext.Instance.InstanceID);

            model.STATUS = 8;
            applyService.Persistent(model);
            new PendingService().Delete(executeContext.Instance.InstanceID);
        }
Beispiel #23
0
 /// <summary>
 /// 写待办信息
 /// </summary>
 /// <param name="actorID">参与者</param>
 /// <param name="executeContext"></param>
 public void WritePending(string actorID, ExecutingContext executeContext)
 {
     pendingService.Insert(new Pending()
     {
         ACTORID     = actorID,
         ACTION      = executeContext.Operation.ToString(),
         INSTANCEID  = executeContext.Instance.InstanceID,
         NODEID      = GetCurrentNode(executeContext.Instance.InstanceID).NID,
         APPELLATION = string.Format("<a href=\"javascript:;\" onclick=\"parent.window.document.getElementById('frmContent').src='../FileApply/FileApply/{0}'\">你有待办任务。</a>", executeContext.Data.bussinessID)
     });
 }
Beispiel #24
0
        //-------------------------------------------------------------------------------------------------------------------------------
        public bool GetDataSetExport(string keyExport)
        {
            AspectizeUser  aspectizeUser = ExecutingContext.CurrentUser;
            IEntityManager em            = EntityManager.FromDataSet(DataSetHelper.Create());

            if (aspectizeUser.IsAuthenticated)
            {
                int nTimosSessionId = (int)aspectizeUser[CUserTimosWebApp.c_champSessionId];

                ITimosServiceForAspectize serviceClientAspectize = (ITimosServiceForAspectize)C2iFactory.GetNewObject(typeof(ITimosServiceForAspectize));
                CResultAErreur            result = serviceClientAspectize.GetSession(nTimosSessionId);
                if (!result)
                {
                    throw new SmartException(1100, "Votre session a expiré, veuillez vous reconnecter");
                }

                try
                {
                    result = serviceClientAspectize.GetDataSetExport(nTimosSessionId, keyExport);
                    if (!result)
                    {
                        throw new SmartException(1010, "Erreur GetDataSetExport(nTimosSessionId = " + nTimosSessionId + ", keyExport = " + keyExport + ")" +
                                                 Environment.NewLine +
                                                 result.MessageErreur);
                    }

                    if (result && result.Data != null)
                    {
                        DataSet ds = result.Data as DataSet;
                        if (ds != null && ds.Tables.Count > 0)
                        {
                            var fs = ExecutingContext.GetService <IFileService>("TimosFileService");

                            string       relativePath = keyExport + ".json";
                            string       json         = JsonConvert.SerializeObject(ds, Formatting.None);
                            MemoryStream stream       = new MemoryStream(Encoding.ASCII.GetBytes(json));
                            fs.Write(relativePath, stream);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new SmartException(1010,
                                             "Erreur GetExportsForUser(nTimosSessionId = " + nTimosSessionId + ", keyExport = " + keyExport + ")" +
                                             Environment.NewLine +
                                             ex.Message);
                }
            }
            else
            {
                throw new SmartException(1100, "Votre session a expiré, veuillez vous reconnecter");
            }
            return(true);
        }
Beispiel #25
0
        void IInitializable.Initialize(Dictionary <string, object> parameters)
        {
            if (dsDemo == null)
            {
                IFileService fs = ExecutingContext.GetService <IFileService>(ServiceName.ADWFileService);

                var dataDemo = fs.Read("DataDemo2");

                dsDemo = DataSetHelper.BinaryLoad(dataDemo);
            }
        }
Beispiel #26
0
        /// <summary>
        /// 多条件跳转
        /// </summary>
        /// <param name="executeContext">执行上下文</param>
        private void DecisionJump(ExecutingContext executeContext)
        {
            string instanceID = executeContext.Instance.InstanceID;
            string NID        = executeContext.From.NID;
            Dictionary <string, object> deleteArg = new Dictionary <string, object>()
            {
                { "instanceID", instanceID },
                { "nodeID", NID }
            };

            CommandBus.Dispatch <Dictionary <string, Object> >(new DeletePending(), deleteArg);
        }
        public void Init()
        {
            Mock <IMethodCallMessage>   moqCallMessage   = new Mock <IMethodCallMessage>();
            Mock <IMethodReturnMessage> moqReturnMessage = new Mock <IMethodReturnMessage>();

            moqCallMessage.Setup(o => o.Args).Returns(new object[] { "12345!!##,,11dasd" });
            moqCallMessage.Setup(o => o.MethodName).Returns("Test_ExecutedContext");
            moqReturnMessage.Setup(o => o.ReturnValue).Returns(It.IsAny <object>);

            _executedContext = new ExecutedContext(moqReturnMessage.Object);
            _executing       = new ExecutingContext(moqCallMessage.Object);
        }
 public void ActionExecute(ExecutingContext executeContext)
 {
     if (executeContext.Instance.Current.NodeType != WorkflowNodeCategory.Decision)
     {
         //写入审批记录
         recordService.Insert(new Record()
         {
             INSTANCEID = executeContext.Instance.InstanceID,
             NODENAME   = executeContext.From.Name,
             MESSAGE    = executeContext.Data.Message
         });
     }
 }
Beispiel #29
0
        DataSet ILoadDataService.LoadDataDemo()
        {
            if (dsDemo == null)
            {
                IFileService fs = ExecutingContext.GetService <IFileService>(ServiceName.ADWFileService);

                var dataDemo = fs.Read("DataDemo2");

                dsDemo = DataSetHelper.BinaryLoad(dataDemo);
            }

            return(dsDemo);
        }
        public void ActionExecute(ExecutingContext executeContext)
        {
            var current = executeContext.To;

            if (executeContext.Instance.State != WorkflowInstanceState.Kill && current.NodeType != WorkflowNodeCategory.Decision)
            {
                string      instanceID = executeContext.Instance.InstanceID;
                List <User> userList   = bridgeService.GetCarbonCopies(current, (String)executeContext.Data.Carbon);
                foreach (User user in userList)
                {
                    WriteCarbon(user.ID, current.NID, instanceID);
                }
            }
        }