Database 4D数据库功能能否从unix shell脚本(Mac)启动?

Database 4D数据库功能能否从unix shell脚本(Mac)启动?,database,macos,shell,4d-database,Database,Macos,Shell,4d Database,我们有一个4D数据库中的大型数据集。最近,我们需要自动执行某些任务以导出、导入或处理数据,这需要4D和unix shell(bash和zsh)之间的某种连接。 每当4D函数必须使用指令调用shell命令或shell脚本时,我们都做得很好。但我在做相反的事情时遇到了困难,从shell脚本启动4D函数。在线文档没有给我任何关于如何做到这一点的建议 如何在特定日期+时间运行4D功能?4D本身似乎没有提供一种安排行动的方法。OSX提供了一种非常好的方式,可以在将来的任何时间(每周或每月)启动命令。我只是

我们有一个4D数据库中的大型数据集。最近,我们需要自动执行某些任务以导出、导入或处理数据,这需要4D和unix shell(bash和zsh)之间的某种连接。 每当4D函数必须使用指令调用shell命令或shell脚本时,我们都做得很好。但我在做相反的事情时遇到了困难,从shell脚本启动4D函数。在线文档没有给我任何关于如何做到这一点的建议


如何在特定日期+时间运行4D功能?4D本身似乎没有提供一种安排行动的方法。OSX提供了一种非常好的方式,可以在将来的任何时间(每周或每月)启动命令。我只是不太了解4D,不知道如何从shell脚本调用4D函数。如果是MySQL或PostgreSQL,那么我没有问题,因为我可以调用MySQLpgsql客户机,它可以在没有GUI的情况下工作。我可以用4D做类似的事情吗

有几种方法可以在4D中实现这一点。我通常的做法是在4D中使用web服务器。然后,我将使用我喜欢的任何调度器(cron、windows调度器等)通过GET或POST触发该服务。这确实需要从4D获得一些web服务器许可

这使您能够灵活地在给定时间或从外部进程触发事件。假设您的数据已清理完毕,现在可以导入了,您不必等到下次导入时,它可能会被触发

或者,您可以创建一个4D方法,该方法在自己的流程中运行。您在数据库启动时启动进程,然后它将无限期地循环,检查是否需要触发您想要的任何操作

查看新进程延迟进程While…End While命令。根据需要,您可以启动新进程在服务器或客户端上运行

基本上,启动时方法调用新进程来运行“调度程序”方法。在该方法中,您有一个While(一些真正的条件)循环来检查它是否应该运行。然后它会休眠(延迟进程)一段时间,这样它就不会占用资源,再次醒来并运行循环


如果您希望能够以编程方式停止此操作,则可以使用设置进程变量从外部设置调度程序进程中的变量值。然后让循环检查该值,看看它是否应该退出。

有几种方法可以在4D中实现这一点。我通常的做法是在4D中使用web服务器。然后,我将使用我喜欢的任何调度器(cron、windows调度器等)通过GET或POST触发该服务。这确实需要从4D获得一些web服务器许可

这使您能够灵活地在给定时间或从外部进程触发事件。假设您的数据已清理完毕,现在可以导入了,您不必等到下次导入时,它可能会被触发

或者,您可以创建一个4D方法,该方法在自己的流程中运行。您在数据库启动时启动进程,然后它将无限期地循环,检查是否需要触发您想要的任何操作

查看新进程延迟进程While…End While命令。根据需要,您可以启动新进程在服务器或客户端上运行

基本上,启动时方法调用新进程来运行“调度程序”方法。在该方法中,您有一个While(一些真正的条件)循环来检查它是否应该运行。然后它会休眠(延迟进程)一段时间,这样它就不会占用资源,再次醒来并运行循环


如果您希望能够以编程方式停止此操作,则可以使用设置进程变量从外部设置调度程序进程中的变量值。然后让循环检查该值,看它是否应该退出。

要回答您的问题,如果您想从shell在Mac上调用4D,您应该使用Pluggers(cfr)和osascript的插件。

要回答您的问题,如果您想从shell在Mac上调用4D,您应该使用Pluggers(cfr)的插件还有osascript。

我喜欢你建议的web服务器方式。这是我喜欢的解决方案。我自己也不会想到这个解决方案。不幸的是,我们没有web服务器(单次连接每年额外花费900美元)。因此,要走的路将是循环方法,尽管这是我喜欢避免的方式。感谢Joshua提出的非常有用的建议!我喜欢你建议的web服务器方式。这是我喜欢的解决方案。我自己也不会想到这个解决方案。不幸的是,我们没有web服务器(单次连接每年额外花费900美元)。因此,要走的路将是循环方法,尽管这是我喜欢避免的方式。感谢Joshua提出的非常有用的建议!