| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System.Threading.Tasks;
- using Abp.Dependency;
- using Abp.Runtime.Caching;
- using IwbZero.ToolCommon.StringModel;
- using WeEngine.Enum;
- using WeEngine.Message;
- using WeEngine.Packages;
- using WeEngine.Strategy.Eval;
- using WeEngine.Strategy.Runner;
- namespace WeEngine
- {
- public class PackageRunner : ISingletonDependency
- {
- public PackageRunner(IocManager iocManager, ICacheManager cacheManager, IMessageSender weMessageSender)
- {
- IocManager = iocManager;
- CacheManager = cacheManager;
- WeMessageSender = weMessageSender;
- }
- private ICacheManager CacheManager { get; }
- private IocManager IocManager { get; }
- private IMessageSender WeMessageSender { get; }
- /// <summary>
- /// 根据运行编号操作
- /// </summary>
- /// <param name="runningId"></param>
- /// <param name="operationType"></param>
- /// <returns></returns>
- public bool Run(string runningId, OperationType operationType)
- {
- var package = (PackageNode)CacheManager.GetCache(EngineCacheName.RunningPackage).GetOrDefault(runningId);
- return Run(package, operationType);
- }
- /// <summary>
- /// 运行方案包
- /// </summary>
- /// <param name="package"></param>
- /// <param name="operationType"></param>
- /// <returns></returns>
- public bool Run(PackageNode package, OperationType operationType)
- {
- if (!package.ModuleHasLoad)
- {
- var modeType = package.EngineType.IsEmpty() ? "Evolution" : package.EngineType;
- var runner = IocManager.IocContainer.Resolve<IRunnerManager>($"{modeType}Runner");
- var eval = IocManager.IocContainer.Resolve<IEvalManager>($"{modeType}Eval");
- runner.Instance.PackageInfo = package;
- package.RunnerManager = runner;
- package.EvalManager = eval;
- package.MessageSender = WeMessageSender;
- }
- bool flag;
- using (Task<bool> t = new Task<bool>(() => package.RunnerManager.Instance.Run(package, operationType), TaskCreationOptions.LongRunning))
- {
- t.Start();
- flag = t.Result;
- }
- //var flag= package.RunnerManager.Instance.Run(package, operationType);
- CacheManager.GetCache(EngineCacheName.RunningPackage).Set(package.RunningId, package);
- return flag;
- }
- /// <summary>
- /// 运行方案包
- /// </summary>
- /// <param name="package"></param>
- /// <returns></returns>
- public void ReRun(PackageNode package)
- {
- if (!package.ModuleHasLoad)
- {
- var modeType = package.EngineType.IsEmpty() ? "Evolution" : package.EngineType;
- var runner = IocManager.IocContainer.Resolve<IRunnerManager>($"{modeType}Runner");
- var eval = IocManager.IocContainer.Resolve<IEvalManager>($"{modeType}Eval");
- runner.Instance.PackageInfo = package;
- package.RunnerManager = runner;
- package.EvalManager = eval;
- package.MessageSender = WeMessageSender;
- }
- CacheManager.GetCache(EngineCacheName.RunningPackage).Set(package.RunningId, package);
- }
- }
- }
|