EOS Low-Code Platform 8 EOS Low-Code Platform 8
  • 8.3.2 (opens new window)
  • 8.3.1 (opens new window)
  • 8.3LA1 (opens new window)
  • 8.2GA (opens new window)
产品简介
学习指南
更新说明
安装与集成
初见EOS
低代码开发手册
专业代码开发手册
专题场景实战
公共服务框架
应用运行治理
升级手册
常见问题
  • 投票竞选
  • 1.场景介绍
  • 2.效果展示
  • 3.实现思路
  • 4.操作步骤
  • 4.1、数据初始化并创建实体
  • 4.2、生成页面
  • 4.3、流程开发
  • 4.4、逻辑流开发及调用
  • 4.5、自定义站内信模版并配置使用

# 投票竞选

# 1.场景介绍

竞选人发起投票流程,由所在机构人员投票,支持率大于60%则当选,投票结束后发送站内信通知竞选结果。

# 2.效果展示

image-20240123135534887

# 3.实现思路

使用按钮提交参数,从相关数据里获取提交参数的值,判断投票结果并发送站内信通知。

# 4.操作步骤

本示例使用EOS8.3.2 express版+Mysql5.7进行开发

# 4.1、数据初始化并创建实体

初始化脚本如下:

drop table if exists Vote;
    create table Vote (
        id varchar(255) not null,
        name varchar(255) comment '竞选人姓名',
        result varchar(255) comment '竞选结果',
        position varchar(255) comment '竞选岗位',
        primary key (id)
    ) comment='投票';

image-20240123135534887

# 4.2、生成页面

在实体上右键-生成页面,然后在生成的页面里调整"竞选结果"的控件状态为隐藏 image-20240123135534887

# 4.3、流程开发

新建投票流程,如下图: image-20240123135534887

# 4.3.1 发起投票环节设置

参与者"从参与者列表获得",添加具体的某一个员工 image-20240123135534887

表单状态为"新增" image-20240123135534887

# 4.3.2 投票环节设置

参与者"从参与者列表获得",添加具体的某一个机构 image-20240123135534887

操作权限中提交按钮参数设置: 首先复制一个提交按钮,修改两个提交按钮名称分别为支持、反对, 添加提交按钮参数: 支持 touresult 值为1 反对 touresult 值为0 image-20240123135534887

启动多工作项,多工作项创建策略为"按操作员个数创建工作项" image-20240123135534887

# 4.3.3 通知投票结果环节设置

参与者为流程启动者;消息通知后续定义站内信模板后再配置

# 4.4、逻辑流开发及调用

# 4.4.1 逻辑流开发

在服务-流程事件上右键新建服务,如下图: image-20240123135534887

双击逻辑流空白处,定义变量及参数,如下图: image-20240123135534887

脚本图元中代码编写,实现从相关数据获取投票结果并计算结果 image-20240123135534887

代码如下:

//从相关数据获取投票结果
List<Map<String,Object>> result = context.relative

int agree = 0;
int disagree = 0;
for(Map<String,Object>  map: result){
  Object vote = map.get("touresult");
  if(Objects.isNull(vote)){
      continue;  
  }
  if(vote.toString().equals("1")){
       agree = agree+1; 
  }else if(vote.toString().equals("0")){
        disagree = disagree +1
  }
}
//支持率大于60%即当选
int total = agree+disagree;
if(agree/total >= 0.6){
     context.result = "当选" 
}else{
      context.result = "未当选"
}

赋值图元设置:

image-20240123135534887

调用运算逻辑updateEntityByTemplate,更新投票结果,设置如下: image-20240123135534887

调用运算逻辑setRelativeData,更新投票结果,设置如下: image-20240123135534887

# 4.4.2 逻辑流调用

双击"投票"的人工活动图元,在引擎事件Tab页新增调用,如下图:

注意!本示例基于express版进行开发,调用方式为同步,事件动作类型选逻辑流。若使用微服务版,因为存在跨应用调用,调用方式必须为EOS服务,事件动作类型为异步。

image-20240123135534887

image-20240123135534887

其中,id值为__bfp_entity/id ;relative值为__task_submit_data-manualActivity1,为相关数据中的提交按钮对象,如下图;

processinstid值使用内置变量,为thisProcessInst/processInstID image-20240123135534887

# 4.5、自定义站内信模版并配置使用

# 4.5.1 自定义站内信模板

在AFCenter-流程中心-业务配置-消息配置-模板配置中新建模板,类型选"站内信",点击下一步,编辑消息模板。 在模版中增加竞选结果,值选择业务数据中的"竞选结果",如下图: image-20240123135534887

# 4.5.1 使用站内信模板

双击"通知投票结果"的人工活动图元,在消息通知Tab页配置站内信模板。如下图: image-20240123135534887

至此,此demo开发完毕。

← 表单选择的多参与者共同当某个活动的审批人 删除AFCenter里的业务应用 →