我有几个可调度的HTTP标注,并设置为每小时运行一次。在应用程序交换机上部署应用程序并让salesforce用户下载以进行测试后,工作似乎没有执行。
我可以看到作业被安排相应地运行,但数据库似乎永远不会改变。有什么理由可以发生这种情况,或者我的代码中存在缺陷的可能性很大吗?
我认为它可能是权限,但我不确定(它是我部署的第一个应用程序)。
答案 0 :(得分:2)
检查最终用户的组织是否已将您的端点添加到设置中的“远程站点设置”。通过端点我的意思是被调用的地址(或仅仅是域)。
如果课程安排得当(我认为这是一个手动操作,而不仅仅是安装后神奇地发生的事情......除非你使用了安装后的脚本?)你还可以检查设置 - > Apex Jobs并检查是否有任何错误。如果我是对的,由于远程站点设置,将不允许出现关于标注的错误。如果没有 - 你仍然有机会看到会让你思考的东西。例如,批处理作业已成功执行,但有0次迭代 - >问题
最后但并非最不重要 - 您可以随时尝试调试日志:)在安装程序中启用它们(或打开开发人员控制台),手动触发计划类execute()
并观察结果?如何手动开火?这样粘贴到“执行匿名”:
MySchedulableClass sched = new MySchedubulableClass();
sched.execute(null);
或者 - 因为你知道预定班级里面有什么 - 只需要实验。
请注意,如果您可能正在执行的更新以某种方式违反了客户端的验证规则 - 是的,数据库将保持不变。但在这种情况下,您仍然可以在Setup中看到失败 - > Apex Jobs。