Flowable-服务-消息任务

✨✨✨ 最好用的Flowable流程设计器


定义

Mq 任务不是 BPMN 2.0 规范定义的官方任务,在 Flowable 中,Mq 任务是作为一种特殊的服务
任务来实现的,主要做Mq消息发送。

图形标记

由于 Mq 任务不是 BPMN 2.0 规范的“官方”任务,因此没有提供其专用图标,
而是复用了服务任务的图标:
在这里插入图片描述

XML内容

Mq 任务在 Flowable 中定义为一个专用的服务任务,这个服务任务的 type 属性设置为 mq。
Mq 任务的 XML 表示格式如下:

<serviceTask id="Mq消息" name="自动发送短信" flowable:type="mq" />

以上在流程定义的服务任务上定义 Mq 类型即可,集成Rabbitmq来实现。

集成Rabbitmq

MqTask面前支持Rabbitmq的消息发送

引入pom包
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
  </dependency>
配置rabbitmq
spring.rabbitmq.host=主机
spring.rabbitmq.enable=true
spring.rabbitmq.port=端口
spring.rabbitmq.username=用户名
spring.rabbitmq.password=密码
spring.rabbitmq.virtual-host=virtual-host
spring.rabbitmq.Ssl.enabled=true
spring.rabbitmq.Ssl.verify-hostname: false

操作界面

在这里插入图片描述

视频地址:

消息任务

演示demo

Rest任务

本文中内容和案例出自贺波老师的书《深入Activiti流程引擎:核心原理与高阶实战》,书中的介绍更全面、详细,推荐给大家。
深入Activiti流程引擎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,您的问题是关于实现UCOS中避免中断处理函数和网络发送任务读写发送标志的竞态条件。下面是一个可能的解决方案: 1. 定义一个全局变量,例如sendFlag,用于表示是否可以发送数据。初始化为0。 2. 在中断处理函数中,检查中断是否是SINT_STAT_SENBUF_FREE,并设置sendFlag为1。 3. 在网络发送任务中,使用一个while循环不断检查sendFlag是否为1,如果为1则可以发送数据,否则等待。 4. 在网络发送任务中,在发送数据前将sendFlag设置为0,表示当前不能发送数据。在发送数据完成后再将sendFlag设置为1,表示可以继续发送数据。 5. 为了避免竞态条件,需要在修改sendFlag时使用UCOS提供的信号量进行同步。 以下是伪代码示例: ```c // 定义全局变量sendFlag和信号量sendSem int sendFlag = 0; OS_SEM sendSem; // 中断处理函数 void interruptHandler() { if (isSINT_STAT_SENBUF_FREE()) { sendFlag = 1; OSSemPost(&sendSem); // 发送信号量通知网络发送任务可以发送数据 } } // 网络发送任务 void sendTask() { while (1) { // 等待信号量 OSSemPend(&sendSem, 0, OS_OPT_PEND_BLOCKING, NULL); // 检查sendFlag,如果为0则等待 while (sendFlag == 0) { OSTimeDly(1); } // 发送数据 sendData(); // 发送完成后将sendFlag设置为0 sendFlag = 0; } } ``` 这样可以保证中断处理函数和网络发送任务之间不会发生竞态条件,从而避免数据发送的问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学生05101

flowable

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值