zoukankan      html  css  js  c++  java
  • WF 多次提交问题

    公司做了个审批的WF,现在遇到个问题,每当审批用户点击按钮两次那么工作流就被执行了两次,即使我们做了很多限制用户连续点击按钮,但是当多用户同时访问时,用户单击按钮N久后WF才提交,但是在等待的这个过程中,用户又一次打开当前这个链接,又单击了审批这个按钮,那么这种情况工作流就被重复执行了,网上看了好多资料都没提到这块,在此请教各位哪位大虾了.

    下面是我工作流执行代码:

    这段代码是写在Application里面的

    protected static string connectionString = ConfigurationManager.ConnectionStrings["CHAS.REPAIR"].ConnectionString;
            protected void Application_Start(object sender, EventArgs e)
            {
                WorkflowRuntime workflowRuntime = new WorkflowRuntime();
                SqlTrackingService sqlTs = new SqlTrackingService(connectionString);

                SqlWorkflowPersistenceService persistService = new SqlWorkflowPersistenceService(connectionString);

                workflowRuntime.AddService(sqlTs);
                workflowRuntime.AddService(persistService);

                ExternalDataExchangeService dataServer = new ExternalDataExchangeService();
                workflowRuntime.AddService(dataServer);

                dataServer.AddService(new CHAS.REPAIR.BLL.InterFace.RepairHandler());

                workflowRuntime.StartRuntime();
                Application.Add("WorkflowRuntime", workflowRuntime);
            }

    下面这段代码就是按钮单击所执行的代码了

    private void RunWorkFlow(RepairFlows rf)
            {
               
                WorkflowRuntime wr = this.Application["WorkflowRuntime"] as WorkflowRuntime;

                //關聯workflw業務類
                ExternalDataExchangeService dataService = wr.GetService(typeof(ExternalDataExchangeService)) as ExternalDataExchangeService;
                RepairHandler wfRepair = dataService.GetService(typeof(RepairHandler)) as RepairHandler;
                wfRepair.UpRepair += new EventHandler<UpRepairEventArgs>(UpRepairEventArgs);
                WorkflowInstance instance = wr.GetWorkflow(rf.WorkFlowGuid);
                instance.Load();
                wfRepair.RepairEvent(rf.WorkFlowGuid, rf);
                if (rf.ApprovalResults == 1)
                {
                    while (!instance.TryUnload())
                    {
                        System.Threading.Thread.Sleep(500);
                    }
                }
            }

  • 相关阅读:
    流的概念(转自本站progor)
    Centos7安装OpenLDAP
    python发送post请求
    小计安装部署滴滴开源kafkamanager工具
    VSCode集成Cmder控制台输入中文乱码
    在win10的pycharm使用wsl中的python进行开发
    《Python数据科学手册》学习笔记及书评
    VSCode小说插件ReadNovel根据内容查找页码
    《TensorFlow实战Google深度学习框架(第二版)》学习笔记及书评
    Cmder启动WSL中的Ubuntu出现复制粘贴异常
  • 原文地址:https://www.cnblogs.com/AeroJin/p/2009170.html
Copyright © 2011-2022 走看看