【问题标题】:Suggestion/Recommendation engine for processes流程建议/推荐引擎
【发布时间】:2012-10-16 23:21:51
【问题描述】:

我有一些表格,其中包含多个作业、依赖项和经过的时间。该引擎的目的是,当您插入作业名称时,它会为您提供有关检查哪些流程以使其更快的建议。

例如,给定下一个表:

jobs +----+-------------------------+------------+-----+ | id | job_name | parent_job |type | +----+-------------------------+------------+-----+ | 1 | delete_everything_box | |b | | 2 | delete_everything | 2 |j | | 3 | another_job | |j | | 4 | dependant_box | |b | | 5 | dependant_job_1 | 4 |j | | 6 | dependant_job_2 | 4 |j | +----+-------------------------+------------+-----+

Job dependant_box 可能有一个依赖关系——甚至是几个——,在另一个表中描述:

dependencies +--------+-------------------------+------+ | job_id | condition_job | type | +--------+-------------------------+------+ | 4 | delete_everything_box | b | +--------+-------------------------+------+

然后,您有一个表,其中存储了每个经过的时间 (A):

timings +--------+----------------------+---------------------+----------+-----------------+ | job_id | start_time | end_time | status | elapsed_time | +--------+----------------------+---------------------+----------+-----------------+ | 1 | 2012/09/19 02:57:35 | 2012/09/20 02:59:38 | success | 86523 | | 2 | 2012/09/19 02:57:36 | 2012/09/20 02:59:37 | success | 86521 | | 3 | 2012/09/19 02:57:36 | 2012/09/19 02:59:37 | success | 121 | | 4 | 2012/09/20 02:59:39 | 2012/09/20 03:05:02 | success | 323 | | 5 | 2012/09/20 02:59:40 | 2012/09/20 03:01:01 | success | 81 | | 6 | 2012/09/20 02:59:40 | 2012/09/20 03:05:01 | success | 321 | +--------+----------------------+---------------------+----------+-----------------+

因此,假设您输入了一个作业名称,在本例中为“delete_everything_box”。从 A 中,您可以推断 *delete_everything* 是罪魁祸首。但还有另一种情况(B):

timings +--------+----------------------+---------------------+----------+-----------------+ | job_id | start_time | end_time | status | elapsed_time | +--------+----------------------+---------------------+----------+-----------------+ | 1 | 2012/09/19 02:57:35 | 2012/09/20 02:59:38 | success | 86523 | | 2 | 2012/09/19 02:57:36 | 2012/09/20 02:59:37 | success | 86521 | | 3 | 2012/09/19 02:57:36 | 2012/09/19 02:59:37 | success | 121 | | 4 | 2012/09/19 02:57:35 | 2012/09/20 03:05:02 | success | 86847 | | 5 | 2012/09/20 02:59:39 | 2012/09/20 03:01:01 | success | 82 | | 6 | 2012/09/20 02:59:39 | 2012/09/20 03:05:01 | success | 322 | +--------+----------------------+---------------------+----------+-----------------+

如果你在 B 中输入名字dependant_box,它会告诉你*delete_everything* 是罪魁祸首。这是因为由于它有依赖关系,它会等到所有依赖关系都满足才开始运行。也可能发生多个作业被链接起来,因此您必须检查所有作业,或者至少检查经过时间较长的 5 个。

因此,有了给定的信息,它应该显示 10 个要优化的候选者,这些候选者将被输入到引擎中。也可能发生某些作业无法修复,因此不应显示它们。此外,有些工作可能需要更长的时间或被链接,但权重是基于经过的时间。

表存储在oracle中,语言应该是java。

你有什么建议?我们正在讨论为团队开发一种自动化工具来检查耗时较长的工作。如果您能指出我的算法、库等,将不胜感激。

我忘了说:b 表示包含 1 个或多个作业 (j) 的框。 j 是单个作业条目。

【问题讨论】:

    标签: java algorithm oracle autosuggest recommendation-engine


    【解决方案1】:

    有一些很棒的 Java 开源工具可以使用您提到的功能;看看这两个:

    1. Drools Planner
    2. Quartz Scheduler

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 2015-07-30
      • 2019-09-25
      • 2011-02-11
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      相关资源
      最近更新 更多