我有一个beanshell脚本,我希望它能自动化。 我需要创建cronjob并将我的beanshell代码添加到它。 也许有人这样想? 有谁知道怎么做? 或者如何将我的脚本与cronjob匹配?
答案 0 :(得分:2)
答案实际上是在Cronjob scripting文档中给出的。
简而言之,您将使用动态脚本来创建cronjob而不是使用缓慢的老式方式。
使用了三个新对象(引自doc):
- 脚本 - 存储脚本内容的项目类型(单独的部署表)
- ScriptingJob - 一个新的ServicelayerJob项,其中还包含了scriptURI(因此,存储的脚本可以是 在运行时从不同位置(classpath,db等)发现。
- ScriptingJobPerformable - 分配给每个ScriptingJob实例的spring bean;它实现了通常的perform()方法(比如 对于任何其他cronjob)。这就是"脚本化的地方" cronjob逻辑是 执行
第一步 - 将您的脚本实例保存在数据库中。对于此示例,我使用了http://www.beanshell.org/manual/quickstart.html
中的代码注意:您可以使用Groovy,BeanShell广告JavaScript
创建脚本
INSERT_UPDATE Script; code[unique=true];content;scriptType(code)
;myBshScript;"foo = ""Foo"";
four = (2 + 2)*2/2;
print( foo + "" = "" + four ); // print() is a BeanShell command
// Do a loop
for (i=0; i<5; i++)
print(i);
// Pop up a frame with a button in it
button = new JButton( ""My Button"" );
frame = new JFrame( ""My Frame"" );
frame.getContentPane().add( button, ""Center"" );
frame.pack();
frame.setVisible(true);";BEANSHELL
请勿忘记在脚本中使用其他
"
(Impex限制)转义"
。
第二步 - 创建一个使用以前创建的脚本的ScriptingJob
INSERT_UPDATE ScriptingJob; code[unique=true];scriptURI
;myBshDynamicJob;model://myBshScript
model://myBshScript
用于检索存储在数据库中的脚本
第三步 - 创建CronJob
INSERT_UPDATE CronJob; code[unique=true];job(code);singleExecutable;sessionLanguage(isocode)
;myBshDynamicCronJob;myBshDynamicJob;true;en
可选步骤 - 为CronJob创建触发器
INSERT_UPDATE Trigger;cronjob(code)[unique=true];cronExpression
;myBshDynamicCronJob;0 0 0/1 1/1 * ? *
每小时执行一次cronjob。
通过脚本执行CronJob
在hac脚本编制选项卡中,选择Groovy并在提交模式下运行它。
def dynamicCJ = cronJobService.getCronJob("myBshDynamicCronJob")
cronJobService.performCronJob(dynamicCJ,true)
运行脚本后,您应该显示
在控制台中
INFO [hybrisHTTP27] (myBshDynamicCronJob) [ScriptingJobPerformable] Foo = 4
0
1
2
3
4
答案 1 :(得分:0)
在Hybris中,转到HMC&gt;系统&gt; CronJobs&GT;搜索您创建的cronjob或创建一个新的cronjob&gt;时间表标签&gt;触发&GT;创建触发器。
在此“触发器”选项卡窗口中,您可以安排间隔,例如。每日,每周等。您也可以设置开始时间和频率。
您也可以通过impex执行此触发设置,如下所示:
INSERT_UPDATE Trigger;cronJob(code)[unique=true];second;minute;hour;day;month;year;relative;active;maxAcceptableDelay
;CartRemovalJob;0;5;4;-1;-1;-1;false;true;-1
有关更多详细信息,请查看this,以防您访问Hybris Wiki。
答案 2 :(得分:0)
如果您可以访问hybris wiki,here,您可以找到如何创建和执行cronjob。
为了执行bean shell,在cronjob&#34;执行&#34;方法你应该这样做:
SimpleScriptContent content = new SimpleScriptContent("beanshell", "here your beanshell script code as string");
ScriptExecutable script = scriptingLanguagesService.getExecutableByContent(content);
ScriptExecutionResult result = script.execute();
...
这里是导入部分:
import de.hybris.platform.scripting.engine.content.impl.SimpleScriptContent;
import de.hybris.platform.scripting.engine.ScriptExecutionResult;
import de.hybris.platform.scripting.engine.ScriptExecutable;
您应该使用注释访问scriptingLanguagesService:
@Autowired
ScriptingLanguagesService scriptingLanguagesService;
答案 3 :(得分:0)
我已经尝试了以下针对groovy脚本的步骤。您可以为beanshell尝试相同的操作。
您必须创建一个实例
脚本-脚本内容要存储的项目类型。
ScriptingJob -一个新的ServicelayerJob项,其中还包含scriptURI
CronJob -这是执行“脚本化” cronjob逻辑的地方
1。创建脚本
脚本代码: HelloScript
脚本引擎类型: beanshell
内容: log.info("Hello");
2。创建脚本作业
再次从HMC / Backoffice查找ScriptinJobs并创建它的新实例。在这里,您必须像这样定义Code
和ScriptURI
代码: HelloScriptJob
ScriptURI: model://HelloScript
您可以在下一步中访问此作业以创建CronJob
3。创建一个CronJob
在HMC / BackOffice中,创建cronJob的实例。在
中选择上面创建的作业(HelloScriptJob)
Job definition
下拉菜单并保存更改。现在您可以计划/运行此cronJob。