使用MuleStudio对Drupal中的“创建节点”事件做出反应

时间:2013-08-16 15:42:19

标签: events drupal drupal-7 mule mule-studio

我想构建一个Flow,当在Drupal中创建Node(文章)时,Node的标题将作为Message发布到Facebook。将消息发布到Facebook是没有问题的,但我不知道如何在Drupal安装中获得创建新内容的事件。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

从纯Mule的角度来看,没有对Drupal的更改,你可以轮询Drupal连接器http://mulesoft.github.io/drupal-connector/mule/drupal-config.html#index-nodes的索引节点操作

<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>

然后,您必须以某种方式在持久对象存储中保留诸如最后修改日期或最后页码之类的标记,以便在下次轮询时读取它,以便您知道哪些节点已被处理或哪个页面到从...开始。如果您正在使用Mule 3.5 ...那么就会有针对该特定类型功能的新“水印”功能。关于水印的一些信息:https://www.mulesoft.org/jira/browse/MULE-6861

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

答案 1 :(得分:1)

从Drupal方面你可以写一个简单的custom module并实现hook_node_insert(),例如

function MYMODULE_node_insert($node) {
  if ($node->type == 'article') {
    push_article($node->title);
  }
}