我们在很短的时间内从大型机接收到两个不同的文件。我们无法预测文件的到达顺序。这些文件应由两个不同的工作流程选择。但它应该以相互排斥的方式触发。换句话说,如果一个工作流程正在运行,则其他工作流程必须等待以前的工作流程。
答案 0 :(得分: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