0

我希望这个问题不要太开放,但基本上我需要创建一个可以管理流程的程序。将完成的处理将包含许多需要很长时间才能完成的步骤(生成报告,并通过电子邮件发送等)。

用于管理流程的方法签名如下所示:

    int StartProcess(string inputData)
    {
        return Process.Start();
    }

    bool Pause(int processId)
    {
        return false;
    }

    bool ResumeProcess(int processId)
    {
        return false;
    }

    string GetProcessStatus(int processId)
    {
        return "running";
    }

我不能完全理解的部分是我将如何管理进程的状态(多个进程需要 top 能够同时运行)。

最好的方法是将状态信息存储在数据库中,然后在流程中的每个步骤完成时更新状态字段?是否需要数据库表?

是否有任何免费的 3rd 方库可以让我实现这样的东西?我认为这是一个相当普遍的问题。

像 K2 blackpearl 或其他没有花哨用户界面的工作流应用程序......

4

1 回答 1

1

这一切都取决于您的要求。

如果您需要管理长时间运行的进程,或者可以在计算机重新启动后仍然存在的进程,那么显然您需要将进程和状态信息存储在数据库中。

您还需要定义进程暂停时会发生什么。它是立即暂停,还是先完成当前步骤?如果它立即停止,它是否存储它的状态,以便如果它仅在重新启动后恢复,它可以从它停止的地方继续?ETC....

基本上,您可以说每个进程都将在自己的线程上运行,因此您的进程管理器应该管理这些线程,并为进程提供一种统一的方式来存储它们的状态。

总而言之,如果我们不了解您的要求,我们就不能多说。

于 2013-02-01T10:36:30.827 回答