internal void DoTask(bool autoRun = false) { this._callerType = NHExt.Runtime.Session.CallerTypeEnum.Reflect; NHExt.Runtime.Proxy.ProxyContext ctx = new NHExt.Runtime.Proxy.ProxyContext(); ctx.ProxyGuid = this._guid; NHExt.Runtime.Logger.LoggerInstance.RuntimeLogger.Info("系统调度任务,使用线程调度服务"); NHExt.Runtime.Proxy.TaskThreadPool.ThreadPool.AddThreadItem((state) => { NHExt.Runtime.Proxy.ProxyContext pCtx = state as NHExt.Runtime.Proxy.ProxyContext; this.DoCommon(pCtx); }, ctx , autoRun); }
public override NHExt.Runtime.Model.WCFCallDTO DoWCF(NHExt.Runtime.Proxy.ProxyContext ctx) { string xml = string.Empty; NHExt.Runtime.Model.WCFCallDTO callDTO = new NHExt.Runtime.Model.WCFCallDTO(); try { this._callerType = NHExt.Runtime.Session.CallerTypeEnum.WCF; var obj = this.TypeConvert(this.DoCommon(ctx)); if (obj != null) { xml = NHExt.Runtime.Serialize.XmlSerialize.Serialize(obj); }else{ xml = string.Empty; } callDTO.Success = true; } catch(Exception ex){ xml = ex.Message; } callDTO.Result = xml; return callDTO; }
public override object Do(NHExt.Runtime.Proxy.ProxyContext ctx) { this._callerType = NHExt.Runtime.Session.CallerTypeEnum.Reflect; var obj = this.TypeConvert(this.DoCommon(ctx)); return obj; }
public virtual object Do() { NHExt.Runtime.Logger.LoggerHelper.Info("开始创建服务工厂"); AbstractInvoker invoker = InvokerFactory.BuildInvoker(this); NHExt.Runtime.Logger.LoggerHelper.Info("创建服务工厂完成"); ProxyContext ctx = new ProxyContext(this.Ctx); //如果缓存中没有存来源单据页面的话则需要重bpproxy里面去取 NHExt.Runtime.Logger.LoggerHelper.Info("开始调用服务"); this.CallerType = invoker.CallerType; ctx.ProxyGuid = this.Guid; if (string.IsNullOrEmpty(this.Ctx.RemoteIP)) { ctx.RemoteIP = this.RemoteIP; } if (string.IsNullOrEmpty(this.Ctx.SourcePage)) { ctx.SourcePage = this.SourcePage; } //反射调用的话直接赋值就好了 if (invoker is ReflectInvoker) { ctx.ParamList = this.ParamList; } else {//远程调用的话因为涉及到WCF序列化所以先要在本地将对象序列化成xml if (ctx.ParamList == null) { ctx.ParamList = new List<object>(); } foreach (object obj in this.ParamList) { ctx.ParamList.Add(NHExt.Runtime.Serialize.XmlSerialize.Serialize(obj)); } //调用远程WCF的话必须进行数据权限过滤 ctx.IsDataAuth = true; } invoker.Ctx = ctx; invoker.Ctx.UseReadDB = this.UseReadDB; //只有第一层服务才能够用线程来解决 if (this.IsTask) { NHExt.Runtime.Logger.LoggerHelper.Info("系统调度任务,使用线程调度服务"); NHExt.Runtime.Proxy.TaskThreadPool.ThreadPool.AddThreadItem((state) => { AbstractInvoker invokerObj = state as AbstractInvoker; invokerObj.InvokeProxy(); }, invoker, this.AutoRun); return null; } else { object obj = invoker.InvokeProxy(); NHExt.Runtime.Logger.LoggerHelper.Info("调用服务成功"); return obj; } }
public ProxyInvoker() { this.CallerType = Session.CallerTypeEnum.None; this.ParamList = new List<object>(); }