Replace Prolog-术语替换,工作流图中的术语更改

Replace Prolog-术语替换,工作流图中的术语更改,replace,prolog,Replace,Prolog,在这个链接中,我相信已经找到了一个解决我必须解决的问题的好方法,但是由于我的序言非常糟糕,我想首先问一下,我的想法是否可能 我想根据一组规则变换工作流/图形的某些部分。图基本上由序列A->b和拆分/连接组成,它们是并行的或有条件的,即工作流中并行运行的两个步骤或根据条件选择单个分支。条件本身在这一级别上并不重要并行拆分-A和b-并行连接等。现在图通常有节点和边,通过使用术语的形式,我想去除边缘 此外,每个节点都有一个partner属性,指定谁将执行它 我将尝试给出一个我想要实现的简单示例: 一个

在这个链接中,我相信已经找到了一个解决我必须解决的问题的好方法,但是由于我的序言非常糟糕,我想首先问一下,我的想法是否可能

我想根据一组规则变换工作流/图形的某些部分。图基本上由序列A->b和拆分/连接组成,它们是并行的或有条件的,即工作流中并行运行的两个步骤或根据条件选择单个分支。条件本身在这一级别上并不重要并行拆分-A和b-并行连接等。现在图通常有节点和边,通过使用术语的形式,我想去除边缘

此外,每个节点都有一个partner属性,指定谁将执行它

我将尝试给出一个我想要实现的简单示例:

一个称为A的节点,由合作伙伴X执行,与一个称为B的节点连接,由合作伙伴Y执行

A_X -> B_Y
seq((A,X),(B,Y))
如果我检测到像这样的模式,即与不同的合作伙伴按顺序执行两个步骤,我希望将其替换为:

A_X -> Send_(X-Y) -> Receive_(Y-X) - B_Y // send step from X to Y and a receive step at Y waiting for something from X

seq((A,X), seq(send(X-Y), seq(receive(Y-X), B)))
如果有人能给我一些建议或帮助我想出一个解决方案,我将非常感谢

图基本上由序列A->b和拆分/联接组成,它们是并行的或有条件的,即工作流中并行运行的两个步骤,或者根据条件选择单个分支


这听起来很像是一场灾难。Ivan Bratko在第13章中介绍了这些图的Prolog算法。即使你的图表不是真正的和/或图表,你也可以根据你的任务调整其中一些算法。

我已经把你的问题读了好几遍,发现很难理解。可能演示文稿中有一种不恰当的表示法,因此我建议花点时间尝试发明一种更具描述性但更简洁的表示法。该示例最后用一个术语seka,X,seqsendX-Y,seqreceiveY-X,B重写了seqA,X,B,Y。如果这确实是您需要作为重写规则实现的模式,我可以提供帮助。然而,这显然不是一种简化,所以我担心这些规则的终止。@hardmath,我知道这不是一种简化。基本上,我在一个工作流中有两个活动,以最简单的顺序形式,即seqactivityA、PA、activityB、PB,其中activityName、Partner name是显而易见的,只有一些ID和Partner是远程环境中的执行Partner。当我现在发现那个爸爸=PB,也就是说,这些步骤不是在同一个合作伙伴上执行的,那么我需要做的是向合作伙伴a添加一个发送活动,并向合作伙伴B添加一个相应的接收活动。如果您真的想帮助我,请给我发一封电子邮件以交换一些IM联系信息。@mardmath,因为我没有空间了,该规则应在嵌套序列项结束时终止。我正在尝试以tInputWOrkflow、OutputWorkflow、Partner的形式编写谓词,因此示例可以是tseqacta、x、seqactb、y、actc、y、O、y。现在因为有acta,x,然后是actb,y,所以伙伴是不同的x=y、 因此,我想将这些发送和接收活动添加到嵌套的术语中。