//scheduler job
Task IJob.Execute(IJobExecutionContext context)
{
SchedularMethodsController obj = new SchedularMethodsController();
var T = Task.Run(() => obj.AchFileGenerator(DateTime.Now));\
T.Wait();
return T;
}
public void AchFileGenerator(DateTime Dt)
{
ChoNACHAConfiguration config = new ChoNACHAConfiguration();
config.DestinationBankRoutingNumber = "999999999";
config.OriginatingCompanyId = "7999999999";
config.DestinationBankName = ("PNC Bank").ToUpper();
config.OriginatingCompanyName = ("automatecondominium").ToUpper();
config.ReferenceCode = ("mgmt").ToUpper();
config.BlockingFactor = 10;
var unitowners = Achbll.GetUnitOwnerPaymentList(Dt).ToList();
var FileName = "ACH_" + ((DateTime.Now.ToString()).Replace(" ", "_").Replace(":", "_")) + ".txt";
var backpath = "CondoDocuments\\DocumentLibrary\\" + FileName;
var path = HttpRuntime.AppDomainAppPath + backpath;
using (var fs = System.IO.File.Create(path))
{
fs.Close();
fs.Dispose();
}
try
{
using (var nachaWriter = new ChoNACHAWriter(path, config))
{
using (var bw2 = nachaWriter.CreateBatch(200, "PPD", "DIR DEBIT", DateTime.Now, DateTime.Now.AddDays(1), null, null, '1', null, null))
{
foreach (var owner in unitowners)
{
if (!string.IsNullOrEmpty(owner.AccountNo) && !string.IsNullOrEmpty(owner.BankRoutingCode))
{
var UA = Cipher.decrypt(owner.AccountNo);
var BR = Cipher.decrypt(owner.BankRoutingCode);
var Name = owner.UnitOwnerName.Split(' ');
if (Name.Length > 1)
{
using (var entry = bw2.CreateDebitEntryDetail(27, BR.ToString(), UA.ToString(), 779, " 18H00A " + owner.UnitNo.ToString(), (Name[1] + ", " + Name[0]).ToUpper().ToString()))
{
//entry.CheckDigit = '0';
}
}
else
{
using (var entry = bw2.CreateDebitEntryDetail(27, BR.ToString(), UA.ToString(), 779, " 18H00B " + owner.UnitNo.ToString(), (Name[0]).ToUpper().ToString()))
{
//entry.CheckDigit = '0';
}
}
}
}
}
}
}
catch (Exception ex)
{
}
}
protected void Application_Start()
{
Invoker ob = new Invoker();
ob.StartScheduling();
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
public async void StartScheduling()
{
// construct a scheduler factory
NameValueCollection props = new NameValueCollection
{
{ "quartz.serializer.type", "binary" }
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
IScheduler scheduler = await factory.GetScheduler();
await scheduler.Start();
IJobDetail job = JobBuilder.Create<ExecutableJobs>()
.WithIdentity("myJob", "group1") // name "myJob", group "group1"
.Build();
var start = DateTime.Now.AddMinutes(1);
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger3", "group1")
//.StartAt(start) // if a start time is not given (if this line were omitted), "now" is implied
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(1).
RepeatForever())
.ForJob(job)
.Build();
await scheduler.ScheduleJob(job, trigger);
}
我得到的例外是:-
1)异常信息**************************************************************************************************异常类型:System.TypeInitializationException类型名称:ChoETL.choappSettings消息:“ChoETL.choappSettings”的类型初始化程序引发异常。数据:system.collections.listdictionaryinternal targetsite:
StackTrace信息***************************************************************************在choetl.choappSettings.getValue(字符串键,字符串defaultValue,Boolean saveDefaultValue)在choetl.choetl.choetl.choetl.choetlframework.getConfigValue(字符串键,字符串defaultValue)在
2)异常信息
StackTrace Information*********************************************************************************************在system.configurationmanager.openexeconfigurationimpl(ConfigurationFileMap,Boolean isMachine,ConfigurationUserLevel,String exePath,Boolean预加载)在system.configuration.configurationmanager
似乎是ChoETL库中的bug。将修复并在下一个版本上发布。
同时,请按照以下方式解决此问题
public void AchFileGenerator(DateTime Dt)
{
//Set this flag to fix the issue
ChoETLFrxBootstrap.IsSandboxEnvironment = true;
ChoNACHAConfiguration config = new ChoNACHAConfiguration();
config.DestinationBankRoutingNumber = "999999999";
config.OriginatingCompanyId = "7999999999";
.....
}
更新:
我希望使用Quartz调度器,以便应用程序的服务器部分使用调度器创建一个作业并将其存储在JDBCStore中,而UI部分(前端)使用调度器的另一个实例(指向相同的数据库模式)为该作业添加触发器。我以为UI知道作业和组的名称就足够了,因为添加触发器类似于: 不幸的是,这会为job类抛出异常。如有任何帮助,我们将不胜感激。谢谢你。
这是我第一次存储作业,并使用crontrigger使用下面的代码对作业进行调度。 详细信息存储在表中--、&
24.2. 使用OpenSymphony Quartz 调度器 Quartz使用Trigger, Job以及JobDetail等对象来进行各种类型的任务调度。关于Quartz的基本概念,请参阅http://www.opensymphony.com/quartz。为了让基于Spring的应用程序方便使用,Spring提供了一些类来简化uartz的用法。 24.2.1. 使用JobDetailBean
我们有一个.NET项目,它检查远程计算机上是否存在一个文件。我们需要对一个部门内的多台远程计算机(数千台)执行此操作,每台计算机每天都在预定义的时间执行。执行时间是在数据库中指定的,它经常变化,每台远程计算机的执行时间都是不同的(有些可能是相同的)。为了实现这一点,我们计划使用Quartz调度器。由于我们是石英的新手,我们想知道如何实现这一点。在高层,我们需要这些- 调度程序应该在每天的特定时间启
我使用CalendarTriggerImpl每3天触发我的作业。我的开始时间是2012-12-10 15:00:00,结束时间是2013-12-10。但是当我在2012-12-11 11:00:00执行我的计划程序时,作业会执行。如何解决这个问题。我没有使用cron触发器,因为它会在每个月重置。所以请帮助我在2012-12-10 15:00:00、2012-12-13 15:00:00、2012-
我正在寻找最好的解决方案,以创建一个java web应用程序,以生成Excel/PDF格式的报告。类似于Google Adwords的东西,用户可以创建日程报告,并在以后生成报告时下载。 我正在考虑开发一个java应用程序,在其中用户记录,选择一个预先定义的报告,并提供输入参数(如报告日期等),这个请求将被排队或保存为Quarts作业(首选持久队列)。一个作业将监视队列/作业并执行该作业,生成报告