Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events “对事件作出反应”;“创建节点”;与MuleStudio合作的Drupal_Events_Drupal_Drupal 7_Mule_Mule Studio - Fatal编程技术网

Events “对事件作出反应”;“创建节点”;与MuleStudio合作的Drupal

Events “对事件作出反应”;“创建节点”;与MuleStudio合作的Drupal,events,drupal,drupal-7,mule,mule-studio,Events,Drupal,Drupal 7,Mule,Mule Studio,我想构建一个流程,当在Drupal中创建一个节点(一篇文章)时,该节点的标题将作为消息发布到Facebook。将消息发布到Facebook没有问题,但我不知道如何在Drupal安装中创建新内容。有什么建议吗?从纯Mule的角度来看,在不改变Drupal的情况下,您可以轮询Drupal连接器的索引节点操作 奈德 类型 标题 然后,您必须以某种方式在持久对象存储中持久化一个标记,如上次修改的日期或最后的页码,以便在下次轮询时读取它,以便知道哪些节点已被处理或从哪个页面开始。如果您使用的是Mule

我想构建一个流程,当在Drupal中创建一个节点(一篇文章)时,该节点的标题将作为消息发布到Facebook。将消息发布到Facebook没有问题,但我不知道如何在Drupal安装中创建新内容。有什么建议吗?

从纯Mule的角度来看,在不改变Drupal的情况下,您可以轮询Drupal连接器的索引节点操作


奈德
类型
标题
然后,您必须以某种方式在持久对象存储中持久化一个标记,如上次修改的日期或最后的页码,以便在下次轮询时读取它,以便知道哪些节点已被处理或从哪个页面开始。如果您使用的是Mule 3.5。。。还有一个新的“水印”功能用于特定类型的功能。这里有一些关于水印的信息:


然而,更好的轮询解决方案是使用消息队列,例如ActiveMQ或RabbitMQ,Drupal可以通过Stomp向其发布消息,Mule可以通过JMS入站端点或AMQP入站端点获取消息,具体取决于您使用的消息。这样,消息被推送而不是拉送,但确实需要Drupal定制。

从Drupal方面来说,您可以编写一个简单的实现,例如


这也是一个很好的观点。我已经用一个流完成了这项工作,该流对所有节点进行索引,将ID保存在一个变量中,然后再次调用自身。然后,流将实际有效负载与变量进行比较,并查找新的ID。如果有新节点,流将调用另一个流来处理数据。我编写了一个带有建议的hook_node_insert的模块,在这个hook中,我执行一个php cURL execute,并使用参数调用localhost:port?title=$title&nid=$nid。因此Mule将此信息作为入站属性获取。这是一个非常好的主意,但我接受了另一个答案,因为我只想用Mule的能力来解决这个问题。
<poll frequency="60000">
    <drupal:index-nodes startPage="1" pagesize="10">
        <drupal:fields>
            <drupal:field>nid</drupal:field>
            <drupal:field>type</drupal:field>
            <drupal:field>title</drupal:field>
        </drupal:fields>
    </drupal:index-nodes>
</poll>
function MYMODULE_node_insert($node) {
  if ($node->type == 'article') {
    push_article($node->title);
  }
}