我正在创建一个 Activiti Controller ,它可以监听消息并根据需要 fork 进程。
我一直在尝试使用java:
Process p = Runtime.getRuntime().exec("java -jar ...");
因为当我运行普通的 java 可执行 jar 时它工作得很好,但是在运行导出的 Activiti 项目的情况下,调用似乎会挂起,直到 Activiti Controller 完成为止。
Controller :
while(1){
print "listening"
recv message
print "executing"
exec process
print "done"
}
收到消息后,所有打印都会显示,包括返回到循环顶部。但直到我强行关闭应用程序,或完全删除 while 循环,该进程才真正运行。
当 Controller 代码完成时,可以在命令行中看到整个 Activiti jar 已完成。
** 这不仅仅是保存输出并在最后显示它,我知道这一点是因为工作流程将消息传递到我可以监视 Activiti 的其他服务。
** 我尝试使用 runnable 和 thread 来代替,将 exec 放入另一个类中,并表现出相同的行为。
最佳答案
确保您正在从进程中读取 stdout 和 stderr。
关于java - Java代码中的Activiti工作流调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6741132/