Example #1
0
        /// <summary>
        /// 创建流程返回WorkflowContext对象
        /// </summary>
        /// <param name="page">页面对象</param>
        /// <param name="startup">流程发起参数</param>
        /// <returns></returns>
        internal static WorkflowContext CreateProcess(Page page, WFStartupParameter startup)
        {
            var    bizContext = ConvertToBizContext(startup);
            string result     = ExecuteMethod(AppSettingInfo.CONST_ExecuteMethod_CreateProcess, AppSettingInfo.CONST_ExecuteMode_Zero, AppSettingInfo.CONST_WorkflowMethodVersion, bizContext);

            SDKHelper.ShowProcess(page, result);
            return(JsonConvert.DeserializeObject <WorkflowContext>(result));
        }
Example #2
0
        /// <summary>
        /// 将发起参数WFStartupParameter转换为BizContext
        /// </summary>
        /// <param name="startup"></param>
        /// <returns>BizContext</returns>
        private static BizContext ConvertToBizContext(WFStartupParameter startup)
        {
            BizContext bizContext = new BizContext();

            bizContext.FormParams          = startup.FormParams;
            bizContext.DynamicRoleUserList = startup.DynamicRoleUserList;
            bizContext.FlowCode            = startup.FlowCode;
            bizContext.ProcessMobileURL    = startup.ProcessMobileURL;
            bizContext.ProcessTitle        = startup.ProcessTitle;
            bizContext.ProcessURL          = startup.ProcessURL;
            bizContext.CurrentUser         = startup.CurrentUser;
            return(bizContext);
        }
        protected void StartProcess(string groupType)
        {
            Dictionary <string, object> formParams = new Dictionary <string, object>();
            var    c_System   = StaticResource.Instance.SystemList.Where(x => x.GroupType == groupType).FirstOrDefault();
            string ProcessKey = c_System.Configuration.Element("ProcessCode").Value + "-HB";
            //string ProcessKey = "YY_ZBGK-FDCHZ";

            //系统2014年7月月报

            B_SystemBatch batch = B_SystemBatchOperator.Instance.GetSystemBatch(Guid.Parse(BusinessID));

            string FinYear  = batch.FinYear.ToString() + "年";
            string FinMonth = batch.FinMonth.ToString("D2");
            string _Title   = c_System.SystemName + FinYear + FinMonth + "汇总月度报告";

            formParams.Add("ReportName", _Title);
            formParams.Add("ProcessKey", ProcessKey);

            Common.ScheduleService.Log.Instance.Info(c_System.SystemName + "合并流程服务,合并流程启动, 上报年:" + FinYear + ",上报月:" + FinMonth);

            Dictionary <string, string> Dic = new Dictionary <string, string>();

            Dic["ReportName"] = _Title;
            Dic["ProcessKey"] = ProcessKey;
            WorkflowContext wfc = null;

            try
            {
                Common.ScheduleService.Log.Instance.Info(c_System.SystemName + "合并流程启动开始!");
                var dynamicRoleUserList = JsonUser.GetDynamicRoleUserList(ProcessKey);
                var starup = new BPF.Workflow.Client.WFStartupParameter()
                {
                    FlowCode    = ProcessKey,
                    BusinessID  = this.BusinessID,
                    CurrentUser = new UserInfo()
                    {
                        UserCode = "$VirtualUserCode$" + this.CurrentUser
                    },
                    FormParams          = formParams,
                    DynamicRoleUserList = dynamicRoleUserList,
                };

                string opiniontext = string.Empty;

                //重新在批次表中,获取数据
                BatchRptList = JsonConvert.DeserializeObject <List <V_SubReport> >(batch.SubReport);
                List <BPF.Workflow.Object.ProcessLog> _list = new List <ProcessLog>();
                if (BatchRptList.Count > 0)
                {
                    BatchRptList.ForEach(BR =>
                    {
                        //B_MonthlyReport bm = B_MonthlyreportOperator.Instance.GetMonthlyreport(BR.ReportID);
                        _list.AddRange(BPF.Workflow.Client.WFClientSDK.GetProcessLogList(BR.ReportID.ToString()));
                    });
                }
                batch.Opinions = JsonConvert.SerializeObject(_list);


                WorkflowContext workflow = WFClientSDK.CreateProcess(null, starup);
                Common.ScheduleService.Log.Instance.Info(c_System.SystemName + "项目系统合并流程启动中!");

                BizContext bizContext = new BizContext();
                bizContext.NodeInstanceList     = workflow.NodeInstanceList;
                bizContext.ProcessRunningNodeID = workflow.ProcessInstance.RunningNodeID;
                bizContext.BusinessID           = BusinessID;
                bizContext.FlowCode             = ProcessKey;
                bizContext.ApprovalContent      = c_System.SystemName + "各区域数据已经汇总完成,请领导审批";
                // bizContext.CurrentUser = new UserInfo() { UserCode = "$VirtualUserCode$项目汇总服务" };
                bizContext.CurrentUser = new UserInfo()
                {
                    UserCode = "$VirtualUserCode$" + this.CurrentUser
                };
                bizContext.ProcessURL       = "/BusinessReport/TargetApprove.aspx?ProType=Batch";
                bizContext.FormParams       = formParams;
                bizContext.ExtensionCommond = new Dictionary <string, string>();
                bizContext.ExtensionCommond.Add("RejectNode", Guid.Empty.ToString());
                bizContext.DynamicRoleUserList = dynamicRoleUserList;

                wfc = WFClientSDK.ExecuteMethod("SubmitProcess", bizContext);

                if (wfc.StatusCode != 0)
                {
                    throw  new Exception(wfc.StatusMessage + "; BusinessID = " + BusinessID);
                }

                //提交操作状态为1
                OperationType = 1;

                Common.ScheduleService.Log.Instance.Info(c_System.SystemName + "合并流程启动结束!");
            }
            catch (Exception ex)
            {
                Common.ScheduleService.Log.Instance.Error(c_System.SystemName + "合并流程启动失败!,错误信息:" + ex.ToString());
                batch = null;
            }


            //将批次的审批状态改变

            ExceptionHelper.TrueThrow(batch == null, string.Format("cannot find the report data which id={0}", BusinessID));
            batch.WFBatchStatus = "Progress";

            //跟新后面两个大老板的状态
            //var AP = ProcessResponse.GetProcess(batch.ID.ToString(), null);
            //List<NavigatActivity> APlist = AP.Navigat;
            //string Json = Newtonsoft.Json.JsonConvert.SerializeObject(APlist);
            //batch.ReportApprove = Json;
            //获取流程导航
            List <NavigatActivity1> listna = GetProcessIntance(wfc);

            if (listna.Count > 0)
            {
                batch.ReportApprove = JsonConvert.SerializeObject(listna);
            }
            //batch.Description = GetDescription(c_System.ID, batch.FinYear, batch.FinMonth);
            //修改批次数据
            B_SystemBatchOperator.Instance.UpdateSystemBatch(batch);
        }
Example #4
0
 /// <summary>
 /// 创建流程返回WorkflowContext对象
 /// </summary>
 /// <param name="page">页面</param>
 /// <param name="startup">发起流程的参数</param>
 /// <returns>流程信息</returns>
 public static WorkflowContext CreateProcess(Page page, WFStartupParameter startup)
 {
     return(WFClientProcess.CreateProcess(page, startup));
 }