我们在短时间内从大型机接收到两个不同的文件。我们无法预测文件的到达顺序。这些文件应由两个不同的工作流程选择。但它应该以互斥方式触发。换句话说,如果一个工作流正在运行,那么另一个工作流必须等待前一个工作流。
问问题
24 次
1 回答
0
这可以通过在公共位置设置一些标志来实现。并且每个作业都应该访问该位置,如果设置了该标志,则等待该标志被取消设置。
基于上述陈述,在执行任何一个工作流之前,我已经在特定位置的 unix 服务器中创建了一个文件。如果该文件存在,任何工作流都会在特定位置看到该文件,然后它会等到该文件被先前开始的先前作业删除。
下面创建文件并等待删除文件是unix脚本。可以在“预处理”选项卡中的工作流的第一项工作中定义。
#!/bin/bash
while true
do
files=$(ls /u/users/lock 2> /dev/null | wc -l)
if [ "$files" != "0" ]
then
echo "Other <workFlow name> is running wait for 10 second"
sleep 10
else
echo "<workFlow name > is not running so <current workflow name> is starting"
touch /u/users/lock
exit 0
fi
done
在下面的工作流程结束时删除文件是 unix 脚本。此脚本必须在进程选项卡的最后一个作业中定义。
#!/bin/bash
echo "<current workFlow name> is finshed so releasing the lock"
files=$(ls /u/users/lock 2> /dev/null | wc -l)
if [ "$files" != "0" ]
then
rm /u/users/lock
fi
于 2018-05-22T22:32:13.083 回答