工作流

工作流

6
评论

【源码下载】一款使用环信实现的开源灵魂社交APP(含服务器) 猿匹配 开源

beyond 发表了文章 • 1335 次浏览 • 2019-07-01 10:48 • 来自相关话题

#前言
近期,环信热心开发者-穿裤衩闯天下使用环信IM开发了一款实时聊天应用,包含简单的服务器端,现在正式开源给小伙伴们。感兴趣的同学可以一起搞一下哦,详细介绍请往下看。






  上代码
服务器:VMServer
客户端:VMMatch
 
 #VMMatch
猿匹配 —— 国内首个程序猿非严肃婚恋交友应用,让我们一言不合就来场匹配吧
 
#介绍#
首先说下中文名:为什么叫这个名字呢,因为这是一个程序猿(媛)之间匹配交流的应用啊其实这是一个使用环信 IM 开发的一款开源聊天项目,涵盖了时下流行的一些聊天元素,同时已将 IM 功能封装为单独库,可以直接引用,方便使用
项目还处在初期阶段,还有许多功能需要实现,有兴趣的可以一起来
项目资源均来自于互联网,如果有侵权请联系我
 
 #下载体验
猿匹配 小米商店 审核中
猿匹配 Google Play
 
  #项目截图

























  
 #开发环境
项目基本属于在最新的Android开发环境下开发,使用Java8的一些新特性,比如Lambda表达式,
然后项目已经适配Android6.x以上的动态权限适配,以及7.x的文件选择,和8.x的通知提醒等;
· Mac OS 10.14.4
· Android Studio 3.3.2
  #项目模块儿
本项目包含两部分:
一部分是项目主模块app,这部分主要包含了项目的业务逻辑,比如匹配、信息修改、设置等
另一部分是封装成library的vmim,这是为了方便大家引用到自己的项目中做的一步封装,不用再去复杂的复制代码和资源等,
只需要将vmim以module导入到自己的项目中就行了,具体使用方式参见项目app模块儿;
 
  #功能与 TODO
IM部分功能
· [x] 链接监听
· [x] 登录注册
· [x] 会话功能
      。[x] 置顶
      。[x] 标为未读
      。[x] 删除与清空
      。[x] 草稿功能
· [x] 消息功能
      。[x] 下拉加载更多
      。[x] 消息复制(仅文字类消息)
      。[x] 消息删除
      。[x] 文本+Emoji消息收发
      。[x] 大表情消息收发
      。[x] 图片消息
        ~[x] 查看大图
        ~[ ] 保存图片
      。[x] 语音消息
        ~[x] 语音录制
        ~[x] 语音播放(可暂停,波形待优化)
        ~[x] 听筒和扬声器播放切换
      。[x] 语音实时通话功能
      。[x] 视频实时通话功能
      。[x] 通话过程中的娱乐消息收发
        ~[x] 骰子
        ~[x] 石头剪刀布
        ~[x] 大表情
      。[x] 昵称头像处理(通过回调实现)
App部分功能
· [x] 登录注册(包括业务逻辑和 IM 逻辑)
· [x] 匹配
      。[x] 提交匹配信息
      。[x] 拉取匹配信息
· [x] 聊天(这里直接加载 IM 模块儿)
· [x] 我的
      。[x] 个人信息展示
      。[x] 上传头像
      。[x] 设置昵称
      。[x] 设置签名
· [x] 设置
      。[x] 个人信息设置
      。[x] 通知提醒
      。[x] 聊天
      。[ ] 隐私(随业务部分一起完善)
      。[ ] 通用(随业务部分一起完善)
      。[ ] 帮助反馈(随业务部分一起完善)
      。[x] 关于
      。[x] 退出
· [ ] 社区
      。[ ] 发布
      。[ ] 评论
      。[ ] 收藏
      。[ ] 关注
发布功能
· [x] 多渠道打包
· [x] 签名配置
· [x] 开发与线上环境配置
· [x] 敏感信息保护
 
  #配置运行
1.首先复制config.default.gradle到config.gradle
2.配置下config.gradle环信appkey以及bugly统计Id
3.正式打包需要配置下签名信息,同时将签名文件放置在项目根目录
 
  #参与贡献
如果你有什么好的想法,或者好的实现,可以通过下边的步骤参与进来,让我们一起把这个项目做得更好,欢迎参与
1.Fork本仓库
2.新建feature_xxx分支 (单独创建一个实现你自己想法的分支)
3.提交代码
4.新建Pull Request
5.等待我们的Review & Merge
 
 #关联项目
服务器端由nodejs实现,地址见这里 VMServer
 
  #VMServer
是为Android开源项目VMMatch项目(中文名猿匹配)实现的服务端
 
  #简介
这个项目包含两部分
· 根目录:服务逻辑及API接口实现
· client目录:前端界面,和服务器端代码端放置在同一仓库下(暂未实现)
 
 #使用
简单介绍下运行环境及部署方法
1.安装nodejs开发时使用的是v10.16.0版本
2.需要安装mongodb并启动,开发使用版本4.0.10
3.下载项目到服务器,可以下载压缩包,或者用git clone命令
4.复制config_default.js到config.js,可根据自己需要修改配置文件
5.安装依赖npm install
6.全局安装pm2npm install pm2 -g 
7.运行 vmshell.sh
 




扫码备注【开源项目】邀你加入环信开源社群
 
转载自https://blog.melove.net/develop-open-source-im-match-and-server/ 
  查看全部
#前言
近期,环信热心开发者-穿裤衩闯天下使用环信IM开发了一款实时聊天应用,包含简单的服务器端,现在正式开源给小伙伴们。感兴趣的同学可以一起搞一下哦,详细介绍请往下看。

猿匹配_logo_副本.png


  上代码
服务器:VMServer
客户端:VMMatch
 
 #VMMatch
猿匹配 —— 国内首个程序猿非严肃婚恋交友应用,让我们一言不合就来场匹配吧
 
#介绍#
首先说下中文名:为什么叫这个名字呢,因为这是一个程序猿(媛)之间匹配交流的应用啊其实这是一个使用环信 IM 开发的一款开源聊天项目,涵盖了时下流行的一些聊天元素,同时已将 IM 功能封装为单独库,可以直接引用,方便使用
项目还处在初期阶段,还有许多功能需要实现,有兴趣的可以一起来
项目资源均来自于互联网,如果有侵权请联系我
 
 #下载体验
猿匹配 小米商店 审核中
猿匹配 Google Play
 
  #项目截图

1.png

2.png

3.png

4.png

5.png

6.png

  
 #开发环境
项目基本属于在最新的Android开发环境下开发,使用Java8的一些新特性,比如Lambda表达式,
然后项目已经适配Android6.x以上的动态权限适配,以及7.x的文件选择,和8.x的通知提醒等;
· Mac OS 10.14.4
· Android Studio 3.3.2
  #项目模块儿
本项目包含两部分:
一部分是项目主模块app,这部分主要包含了项目的业务逻辑,比如匹配、信息修改、设置等
另一部分是封装成library的vmim,这是为了方便大家引用到自己的项目中做的一步封装,不用再去复杂的复制代码和资源等,
只需要将vmim以module导入到自己的项目中就行了,具体使用方式参见项目app模块儿;
 
  #功能与 TODO
IM部分功能
· [x] 链接监听
· [x] 登录注册
· [x] 会话功能
      。[x] 置顶
      。[x] 标为未读
      。[x] 删除与清空
      。[x] 草稿功能
· [x] 消息功能
      。[x] 下拉加载更多
      。[x] 消息复制(仅文字类消息)
      。[x] 消息删除
      。[x] 文本+Emoji消息收发
      。[x] 大表情消息收发
      。[x] 图片消息
        ~[x] 查看大图
        ~[ ] 保存图片
      。[x] 语音消息
        ~[x] 语音录制
        ~[x] 语音播放(可暂停,波形待优化)
        ~[x] 听筒和扬声器播放切换
      。[x] 语音实时通话功能
      。[x] 视频实时通话功能
      。[x] 通话过程中的娱乐消息收发
        ~[x] 骰子
        ~[x] 石头剪刀布
        ~[x] 大表情
      。[x] 昵称头像处理(通过回调实现)
App部分功能
· [x] 登录注册(包括业务逻辑和 IM 逻辑)
· [x] 匹配
      。[x] 提交匹配信息
      。[x] 拉取匹配信息
· [x] 聊天(这里直接加载 IM 模块儿)
· [x] 我的
      。[x] 个人信息展示
      。[x] 上传头像
      。[x] 设置昵称
      。[x] 设置签名
· [x] 设置
      。[x] 个人信息设置
      。[x] 通知提醒
      。[x] 聊天
      。[ ] 隐私(随业务部分一起完善)
      。[ ] 通用(随业务部分一起完善)
      。[ ] 帮助反馈(随业务部分一起完善)
      。[x] 关于
      。[x] 退出
· [ ] 社区
      。[ ] 发布
      。[ ] 评论
      。[ ] 收藏
      。[ ] 关注
发布功能
· [x] 多渠道打包
· [x] 签名配置
· [x] 开发与线上环境配置
· [x] 敏感信息保护
 
  #配置运行
1.首先复制config.default.gradle到config.gradle
2.配置下config.gradle环信appkey以及bugly统计Id
3.正式打包需要配置下签名信息,同时将签名文件放置在项目根目录
 
  #参与贡献
如果你有什么好的想法,或者好的实现,可以通过下边的步骤参与进来,让我们一起把这个项目做得更好,欢迎参与
1.Fork本仓库
2.新建feature_xxx分支 (单独创建一个实现你自己想法的分支)
3.提交代码
4.新建Pull Request
5.等待我们的Review & Merge
 
 #关联项目
服务器端由nodejs实现,地址见这里 VMServer
 
  #VMServer
是为Android开源项目VMMatch项目(中文名猿匹配)实现的服务端
 
  #简介
这个项目包含两部分
· 根目录:服务逻辑及API接口实现
· client目录:前端界面,和服务器端代码端放置在同一仓库下(暂未实现)
 
 #使用
简单介绍下运行环境及部署方法
1.安装nodejs开发时使用的是v10.16.0版本
2.需要安装mongodb并启动,开发使用版本4.0.10
3.下载项目到服务器,可以下载压缩包,或者用git clone命令
4.复制config_default.js到config.js,可根据自己需要修改配置文件
5.安装依赖
npm install

6.全局安装pm2
npm install pm2 -g
 
7.运行 vmshell.sh
 
环信冬冬_副本.jpg

扫码备注【开源项目】邀你加入环信开源社群
 
转载自https://blog.melove.net/develop-open-source-im-match-and-server/ 
 
4
评论

在微信小程序里实现聊天室 聊天室 小程序

Tolazy 发表了文章 • 2928 次浏览 • 2019-04-19 17:49 • 来自相关话题

第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
下载环信 小程序demo+sdkgit clone https://github.com/easemob/webim-weixin-xcx创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明



集成
登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改


在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用


修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室


然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉然后在roomlist.wxml 修改对应的 变量绑定名称





demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面


Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了





就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx 查看全部
第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
  1. 下载环信 小程序demo+sdk
    git clone https://github.com/easemob/webim-weixin-xcx
  2. 创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明
    ml.png

集成
  1. 登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改
    login.png
  2. 在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用
    tz.png
  3. 修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室
    getroom.png
    然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉
  4. 然后在roomlist.wxml 修改对应的 变量绑定名称
    listui.png
    list.png
  5. demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面
    joinrom.png
    Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧
  6. 到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了
    send.png
    chat.png
    就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx

13
回复

收集基于环信SDK开发的开源项目 开源项目

xiaoyan2015 回复了问题 • 13 人关注 • 16629 次浏览 • 2019-03-14 13:52 • 来自相关话题

4
评论

【开源项目】全国首个开源直播小程序源码

beyond 发表了文章 • 41754 次浏览 • 2018-07-20 17:30 • 来自相关话题

今天你看直播了吗?拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 





作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载


小程序直播demo_2018-06-21.zip







直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 




2、导入源码:将附件的源码解压直接导入 







环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]




填写对相关信息进行注册





注册成功后进行登录




注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用




输入应用名称等信息
 





创建成功后点击应用进入





需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量




3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Tokencurl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'返回格式{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址curl -X POST -H "Authorization: Bearer [管理员Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"成功返回格式:{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户





点击注册IM用户





填写用户信息





创建用户的过程同样也可以通过REST API形式进行curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'
注:应用必须为开放注册





将注册的用户添加为主播curl -X POST -H "Authorization: [管理员Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'返回结果示例:{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播





点击新建房间





填写房间信息




创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件





修改appkey为自己应用的appkey





打开pages/live/index.js修改房间默认拉流地址及直播间房间号





四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:curl -X GET -H "Authorization: Bearer [用户Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]
响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。 查看全部
今天你看直播了吗?
拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 
微信图片_20180725162426.jpg


作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载



预览图.jpg

直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 
Catch9A07(07-20-17-38-30).jpg

2、导入源码:将附件的源码解压直接导入 


Catch1C69(07-20-17-38-30).jpg


环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]
1.png

填写对相关信息进行注册

2.png

注册成功后进行登录
3.png

注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用
4.png

输入应用名称等信息
 

5.png

创建成功后点击应用进入

6.png

需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量
7.png

3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Token
curl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'
返回格式
{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址
curl -X POST -H "Authorization: Bearer [管理员Token]"  " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"
成功返回格式:
{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户

8.png

点击注册IM用户

9.png

填写用户信息

10.png

创建用户的过程同样也可以通过REST API形式进行
curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'

注:应用必须为开放注册

11.png

将注册的用户添加为主播
curl -X POST -H "Authorization: [管理员Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'
返回结果示例:
{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播

12.png

点击新建房间

13.png

填写房间信息
14.png

创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件

15.png

修改appkey为自己应用的appkey

16.png

打开pages/live/index.js修改房间默认拉流地址及直播间房间号

17.png

四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:
curl -X GET -H "Authorization: Bearer  [用户Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]

响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:
curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"
响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。
19
评论

【新手快速入门】集成环信常见问题+解决方案汇总

dujiepeng 发表了文章 • 22900 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
0
评论

IT部门信息化正确打开方式 工作流

涵涵有小虎牙 发表了文章 • 610 次浏览 • 2018-11-30 10:41 • 来自相关话题

面对大数据时代企业纷纷开始了信息化建设,成立IT部门。对一家企业来说信息是至关重要,如果你问老板每天最想看到得是什么,那一定是数据信息。

一个公司其核心是业务平台,如何提高公司的营业额就要提高业务平台的管理模式,资源不清晰、信息孤岛等这都是旧模式的弊端,信息化的目的是要使企业充分开发和有效利用信息资源,把握机会,做出正确决策,增进企业运行效率,最终提高企业的竞争力水平。其重要性体现在以下方面:

1、有效地降低企业成本

信息技术应用范围涉及整个企业的经济活动,可以有效地、大幅度地降低企业的费用。

2、促进组织结构优化,提高快速反应能力

而在信息技术的支持下,企业可以简化企业组织生产经营的方式,减少中间环节和中间管理人员,从而建立起精良、敏捷、具有创新精神的“扁平”型组织结构。

3、加快产品和技术的创新

现代信息技术与制造的结合所形成的各种企业信息技术,如计算机辅助设计、计算机辅助制造、计算机辅助工艺编制、柔性制造系统、敏捷制造、计算机集成制造系统等,实现了企业开发、设计、制造、营销及管理的高度集成化,极大地增强了企业生产的柔性、敏捷性和适应性。

4、提高企业的市场把握能力

信息技术的应用缩短了企业与消费者的距离,企业与供应商及客户建立起高效、快速的联系,从而提高了企业把握市场和消费者的能力,使企业能迅速根据消费者的需求变化有针对地进行研究与开发话动,及时改变和调整经营战略,不断向市场提供质量更好、品种更多、更适合消费者需求的产品和服务;

5、促进企业提高管理水平

企业信息化不只是计算机硬件本身,更为重要的是与管理的有机结合。即在信息化过程中引进的不仅是信息技术,而更多的是通过转变传统的管理观念,把先进的管理理念、企业管理制度和方法引入到管理流程中,进行管理创新。

6、提升企业人力资源素质

企业信息化,可以加速知识在企业中的传播,使企业领导至全体员工知识水平、信息意识与信息利用能力提高,提升了企业人力资源的素质及企业文化的环境。

7、提高企业决策的科学性、正确性

信息技术改变了企业获取信息、收集信息和传递信息的方式,使管理者对企业内部和外部信息的掌握更加完备、及时和准确。

面对企业信息化如此多的优势,许多IT部门却对信息化一筹莫展。信息化建设需要的是技术和流程,流程是不缺的而IT部门是企业一个边缘化的部门,不可能像软件公司那样有完整的团队,开发难度非常大。

还有就是借助快速开发平台,百度理解是:以某种编程语言或者某几种编程语言为基础,开发出来的一个软件,而这软件不是一个最终的软件产品,它是一个二次开发软件框架,用户可以在这个产品上进行各种各样的软件产品的开发,并且在这个产品上进行开发的时候,不需要像以往的编程方式那样编写大量的代码,而是只需要进行一些简单的配置,或者是写极少量的代码便可以完成一个业务系统的开发工作。比如力软快速开发平台的框架是被反复使用的,有着较高的安全性,它又是一套源码可以直接进行二次开发,所开发的系统有自主产权。

快速开发平台的性质非常适合IT部门,快速开发平台提供的基础框架技术恰恰是IT部门所欠缺的,一般框架已经实现大部分技术要求,而IT部门所要做的就是实现业务要求了。 查看全部


面对大数据时代企业纷纷开始了信息化建设,成立IT部门。对一家企业来说信息是至关重要,如果你问老板每天最想看到得是什么,那一定是数据信息。

一个公司其核心是业务平台,如何提高公司的营业额就要提高业务平台的管理模式,资源不清晰、信息孤岛等这都是旧模式的弊端,信息化的目的是要使企业充分开发和有效利用信息资源,把握机会,做出正确决策,增进企业运行效率,最终提高企业的竞争力水平。其重要性体现在以下方面:

1、有效地降低企业成本

信息技术应用范围涉及整个企业的经济活动,可以有效地、大幅度地降低企业的费用。

2、促进组织结构优化,提高快速反应能力

而在信息技术的支持下,企业可以简化企业组织生产经营的方式,减少中间环节和中间管理人员,从而建立起精良、敏捷、具有创新精神的“扁平”型组织结构。

3、加快产品和技术的创新

现代信息技术与制造的结合所形成的各种企业信息技术,如计算机辅助设计、计算机辅助制造、计算机辅助工艺编制、柔性制造系统、敏捷制造、计算机集成制造系统等,实现了企业开发、设计、制造、营销及管理的高度集成化,极大地增强了企业生产的柔性、敏捷性和适应性。

4、提高企业的市场把握能力

信息技术的应用缩短了企业与消费者的距离,企业与供应商及客户建立起高效、快速的联系,从而提高了企业把握市场和消费者的能力,使企业能迅速根据消费者的需求变化有针对地进行研究与开发话动,及时改变和调整经营战略,不断向市场提供质量更好、品种更多、更适合消费者需求的产品和服务;

5、促进企业提高管理水平

企业信息化不只是计算机硬件本身,更为重要的是与管理的有机结合。即在信息化过程中引进的不仅是信息技术,而更多的是通过转变传统的管理观念,把先进的管理理念、企业管理制度和方法引入到管理流程中,进行管理创新。

6、提升企业人力资源素质

企业信息化,可以加速知识在企业中的传播,使企业领导至全体员工知识水平、信息意识与信息利用能力提高,提升了企业人力资源的素质及企业文化的环境。

7、提高企业决策的科学性、正确性

信息技术改变了企业获取信息、收集信息和传递信息的方式,使管理者对企业内部和外部信息的掌握更加完备、及时和准确。

面对企业信息化如此多的优势,许多IT部门却对信息化一筹莫展。信息化建设需要的是技术和流程,流程是不缺的而IT部门是企业一个边缘化的部门,不可能像软件公司那样有完整的团队,开发难度非常大。

还有就是借助快速开发平台,百度理解是:以某种编程语言或者某几种编程语言为基础,开发出来的一个软件,而这软件不是一个最终的软件产品,它是一个二次开发软件框架,用户可以在这个产品上进行各种各样的软件产品的开发,并且在这个产品上进行开发的时候,不需要像以往的编程方式那样编写大量的代码,而是只需要进行一些简单的配置,或者是写极少量的代码便可以完成一个业务系统的开发工作。比如力软快速开发平台的框架是被反复使用的,有着较高的安全性,它又是一套源码可以直接进行二次开发,所开发的系统有自主产权。

快速开发平台的性质非常适合IT部门,快速开发平台提供的基础框架技术恰恰是IT部门所欠缺的,一般框架已经实现大部分技术要求,而IT部门所要做的就是实现业务要求了。
2
评论

关乎企业成败:软件应用系统选择要慎重 工作流

涵涵有小虎牙 发表了文章 • 568 次浏览 • 2018-11-27 11:46 • 来自相关话题

进入互联网时代以来,企业的信息化建设也逐步进入了繁荣期,但是面对市场上纷繁多样的应用软件,选择便显得很重要了。

在企业市场的争夺中,软件开发的商场竞争也在不断升级,无数的软件公司倒下,又有更多年轻的公司崛起。

面对市场上参差不齐的开发公司,选择时必须要小心谨慎,因为如果不慎选择了不规范的外包公司或者技术能力有限的公司,不仅会让资金打水漂,更有可能打乱产品上线规划,造成公司的严重损失,所以说软件开发必须要筛选正规的软件公司,避免后期的使用风险。

那么具体来说风险会有哪些呢?
1. 产品质量问题

产品质量是一个老生常谈的问题,不仅仅是软件开发,其他产品莫不如此,相信被劣质产品坑过朋友不在少数,个中滋味恐怕只有自己能体会了。

而在软件开发行业,不规范的开发团队技术水平一定不会高到哪里去,开发流程简陋,虽然价格上有优势,但团队内部可能流程混乱,一人身兼数职,没有一个严格的项目管控流程,后期的使用过程中出现问题,想解决都找不到门路。这是因为不规范的开发团队,公司管理上也会出现一定的问题,留不住高技术人才,所以通常不具备开发高技术含量软件的实力。而且在项目实施的过程中很可能会出现为了节省成本导致实际的的交付结果与前期需求不符的情况,推延工期,甚至影响甲方产品上线规划,造成更大的资源损失。
2.安全隐患

企业信息安全是一个很严肃的问题,不成熟的技术软件在多变的互联网环境下很难保持稳定,产品bug很多,交付上线之后需要花费很长的时间去调试,严重影响到用户体验,而这种体验的而可怕之处在于会有导致平台用户的流失的风险,因为目前那么多的市场应用已经让用户挑花眼,体验不佳,哪怕是加载不够流畅都可能会导致用户放弃使用,得不偿失。

以公司主要产品learun为例,这是一个敏捷开发框架,主要帮助用户快速开发OA、ERP、CRM、移动app、电商后台等应用系统,仅前期开发就占据了十几名.net程序员半年多的时间,后期的测试等项目加在一起,足足一年的时间才完成1.0版本,但是后期的客户交付就很少出现问题,反馈最多的是让增加一些比较个性化的拓展功能,到现在为止9年时间,已经成功升级至7.0版本,口碑及使用者数量也在稳步提升,所以软件开发做好基本功是非常重要的。
3.售后问题

这个可能使用过的人最有感触,试想一下,一个不规范的开发团队,连技术都很难保证,服务也不可能好到哪里去,通常这类公司只能提供一次性售后服务,且不说这个售后是否便捷,售后不及时甚至推脱售后的也常有出现,最终买卖双方形成拉锯,既耽误开发时间,又耽误用户的业务进展。 查看全部

进入互联网时代以来,企业的信息化建设也逐步进入了繁荣期,但是面对市场上纷繁多样的应用软件,选择便显得很重要了。

在企业市场的争夺中,软件开发的商场竞争也在不断升级,无数的软件公司倒下,又有更多年轻的公司崛起。

面对市场上参差不齐的开发公司,选择时必须要小心谨慎,因为如果不慎选择了不规范的外包公司或者技术能力有限的公司,不仅会让资金打水漂,更有可能打乱产品上线规划,造成公司的严重损失,所以说软件开发必须要筛选正规的软件公司,避免后期的使用风险。

那么具体来说风险会有哪些呢?
1. 产品质量问题

产品质量是一个老生常谈的问题,不仅仅是软件开发,其他产品莫不如此,相信被劣质产品坑过朋友不在少数,个中滋味恐怕只有自己能体会了。

而在软件开发行业,不规范的开发团队技术水平一定不会高到哪里去,开发流程简陋,虽然价格上有优势,但团队内部可能流程混乱,一人身兼数职,没有一个严格的项目管控流程,后期的使用过程中出现问题,想解决都找不到门路。这是因为不规范的开发团队,公司管理上也会出现一定的问题,留不住高技术人才,所以通常不具备开发高技术含量软件的实力。而且在项目实施的过程中很可能会出现为了节省成本导致实际的的交付结果与前期需求不符的情况,推延工期,甚至影响甲方产品上线规划,造成更大的资源损失。
2.安全隐患

企业信息安全是一个很严肃的问题,不成熟的技术软件在多变的互联网环境下很难保持稳定,产品bug很多,交付上线之后需要花费很长的时间去调试,严重影响到用户体验,而这种体验的而可怕之处在于会有导致平台用户的流失的风险,因为目前那么多的市场应用已经让用户挑花眼,体验不佳,哪怕是加载不够流畅都可能会导致用户放弃使用,得不偿失。

以公司主要产品learun为例,这是一个敏捷开发框架,主要帮助用户快速开发OA、ERP、CRM、移动app、电商后台等应用系统,仅前期开发就占据了十几名.net程序员半年多的时间,后期的测试等项目加在一起,足足一年的时间才完成1.0版本,但是后期的客户交付就很少出现问题,反馈最多的是让增加一些比较个性化的拓展功能,到现在为止9年时间,已经成功升级至7.0版本,口碑及使用者数量也在稳步提升,所以软件开发做好基本功是非常重要的。
3.售后问题

这个可能使用过的人最有感触,试想一下,一个不规范的开发团队,连技术都很难保证,服务也不可能好到哪里去,通常这类公司只能提供一次性售后服务,且不说这个售后是否便捷,售后不及时甚至推脱售后的也常有出现,最终买卖双方形成拉锯,既耽误开发时间,又耽误用户的业务进展。
1
评论

asp.net强大后台:learun混合工作流框架规范 工作流

涵涵有小虎牙 发表了文章 • 605 次浏览 • 2018-11-22 15:29 • 来自相关话题

以前,我们对标准工作流进行过简单梳理,今天,我们再来看一下混合工作流。

了解混合工作流,我们必须要先分清角色、内容、流程之间的关系——即角色与内容是挂在流程节点上的功能点。在实际操作中,我们需要将流程节点控制好,再将不同的角色,以及对应的操作内容挂靠上去即可,这样一来是可以方便理清关系,另外也可以使系统更有层次。
控制好非标准流程节点,可以由以下几个方面着手。

1.如果流程配置者有配置SQL的能力,那么将数据库流程配置权限开放,让配置者自行配置,这样的开发工作压力会小一些。

2.画流程图的方式。一个流程的执行可以通过流程图来表现,对于产品经理来说是再熟悉不过了。通过流程图的基本逻辑,可以将流程中遇到的各种情况可视化的展示出来,条理清晰而且操作简单。缺点即开发难度过大,一般小团队难以胜任。

3.通过一一配置功能来进行配置,这种方式虽然表面上看起来十分的繁琐,但是相对于前两种来说开发难度小,且对于配置者的能力要求不高。

具体来说,要单独配置每一项功能的流程,先确定流程的主流程有几个节点,如果碰到判断的节点选择是,碰到并发流程或执行的节点选择最长的一个流程。确定之后,将所有节点的内容操作与角色配置出来,然后再配置该节点是否进行判断,是否进行或操作,是否进行与操作。

如果有判断操作时,则分出一个子流程,再将子流程按照上述方式进行配置,最终归于主流程的某一个节点。如果有与操作时,要确定配置与操作的分支节点时是要配置在单个节点还是多个节点。

单个节点的话则需满足这两个节点才往下进行,多个节点时则将这几个节点作为一个小流程单独按照上述方式进行配置再合并至主流程,看是否满足与行为。

如果有或操作判断时,同样要确定在哪个节点的或操作至哪个节点可以进行另外的节点流转。

以上这些情况对于开发团队来说也是一个巨大的考验,因为不同的工作流程代表着不同权限的操作,不同状态的流转,而可定制化的流程则代表着其中的变化无穷,对于服务器的压力,数据库的冗余情况都不容乐观。

那么,如何设计高效的混合工作流呢?

设计一个后台压力小,操作简单的高效混合工作流,可以有两种方式。

第一:将非标准工作流拆分成多个标准工作流。

第二:开辟独立与配置权限之外的工作流角色模块。

1. 将混合工作流拆分成多个标准工作流

一个非标准工作流固然麻烦,可是在大多数的情况下,其可以拆分为几个标准工作流。比如,某个非标准工作流可以线性拆分为多个分支流程,并发流程与执行、并发流程或执行。

将其每一个组合到一起,即可形成完整的工作流,那么我们就可以在系统中提供组合模板,让配置者可以进行选择,组合到一起形成一个非标准工作流。

如果是非线性的,比如可能为分支套分支,并发套并发的情况,我们可以将每一种情况都拆分成一个工作流,然后将生产端入口保持统一,每一步的不同操作可以进入不同的工作流,最终流转的出口保持一致即可。有点类似于开发中设计模式的工厂模式。

2. 开辟独立与配置权限之外的工作流角色模块

一般来说,我们在配置工作流角色的时候,都是使用类似权限控制的角色,比如到这个节点角色为库管,另一个节点角色为商管。其实换个角度想想,再说设计工作流的时候,完全可以设计一个独立于权限之外只配置工作流的角色。

比如“分支节点角色1号”“流程角色1号”“并发或角色2号”,然后再通过穷举法,将所需要用到的使用流程都列出来,把角色放置于节点上。

这样,一个活的需要配置的流程就变成了一个个的死流程。

再将这些角色赋予权限角色。再定义一些规则:比如若没有配置此节点的角色则此节点默认通过,将某个工作流角色配置两个权限角色则为或操作/与操作。这样也就解决了上述的问题。
工作流可以说是后台系统中比较复杂的一部分。即便某些系统中一开始没有工作流,随着系统功能的增加,也不可避免会用到工作流,所以提前了解下工作流的设计方法,对于产品来说很有帮助,在开始设计的阶段也可以考虑将内容设计进去以免后期维护成本过大。

官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm 查看全部


以前,我们对标准工作流进行过简单梳理,今天,我们再来看一下混合工作流。

了解混合工作流,我们必须要先分清角色、内容、流程之间的关系——即角色与内容是挂在流程节点上的功能点。在实际操作中,我们需要将流程节点控制好,再将不同的角色,以及对应的操作内容挂靠上去即可,这样一来是可以方便理清关系,另外也可以使系统更有层次。
控制好非标准流程节点,可以由以下几个方面着手。

1.如果流程配置者有配置SQL的能力,那么将数据库流程配置权限开放,让配置者自行配置,这样的开发工作压力会小一些。

2.画流程图的方式。一个流程的执行可以通过流程图来表现,对于产品经理来说是再熟悉不过了。通过流程图的基本逻辑,可以将流程中遇到的各种情况可视化的展示出来,条理清晰而且操作简单。缺点即开发难度过大,一般小团队难以胜任。

3.通过一一配置功能来进行配置,这种方式虽然表面上看起来十分的繁琐,但是相对于前两种来说开发难度小,且对于配置者的能力要求不高。

具体来说,要单独配置每一项功能的流程,先确定流程的主流程有几个节点,如果碰到判断的节点选择是,碰到并发流程或执行的节点选择最长的一个流程。确定之后,将所有节点的内容操作与角色配置出来,然后再配置该节点是否进行判断,是否进行或操作,是否进行与操作。

如果有判断操作时,则分出一个子流程,再将子流程按照上述方式进行配置,最终归于主流程的某一个节点。如果有与操作时,要确定配置与操作的分支节点时是要配置在单个节点还是多个节点。

单个节点的话则需满足这两个节点才往下进行,多个节点时则将这几个节点作为一个小流程单独按照上述方式进行配置再合并至主流程,看是否满足与行为。

如果有或操作判断时,同样要确定在哪个节点的或操作至哪个节点可以进行另外的节点流转。

以上这些情况对于开发团队来说也是一个巨大的考验,因为不同的工作流程代表着不同权限的操作,不同状态的流转,而可定制化的流程则代表着其中的变化无穷,对于服务器的压力,数据库的冗余情况都不容乐观。

那么,如何设计高效的混合工作流呢?

设计一个后台压力小,操作简单的高效混合工作流,可以有两种方式。

第一:将非标准工作流拆分成多个标准工作流。

第二:开辟独立与配置权限之外的工作流角色模块。

1. 将混合工作流拆分成多个标准工作流

一个非标准工作流固然麻烦,可是在大多数的情况下,其可以拆分为几个标准工作流。比如,某个非标准工作流可以线性拆分为多个分支流程,并发流程与执行、并发流程或执行。

将其每一个组合到一起,即可形成完整的工作流,那么我们就可以在系统中提供组合模板,让配置者可以进行选择,组合到一起形成一个非标准工作流。

如果是非线性的,比如可能为分支套分支,并发套并发的情况,我们可以将每一种情况都拆分成一个工作流,然后将生产端入口保持统一,每一步的不同操作可以进入不同的工作流,最终流转的出口保持一致即可。有点类似于开发中设计模式的工厂模式。

2. 开辟独立与配置权限之外的工作流角色模块

一般来说,我们在配置工作流角色的时候,都是使用类似权限控制的角色,比如到这个节点角色为库管,另一个节点角色为商管。其实换个角度想想,再说设计工作流的时候,完全可以设计一个独立于权限之外只配置工作流的角色。

比如“分支节点角色1号”“流程角色1号”“并发或角色2号”,然后再通过穷举法,将所需要用到的使用流程都列出来,把角色放置于节点上。

这样,一个活的需要配置的流程就变成了一个个的死流程。

再将这些角色赋予权限角色。再定义一些规则:比如若没有配置此节点的角色则此节点默认通过,将某个工作流角色配置两个权限角色则为或操作/与操作。这样也就解决了上述的问题。
工作流可以说是后台系统中比较复杂的一部分。即便某些系统中一开始没有工作流,随着系统功能的增加,也不可避免会用到工作流,所以提前了解下工作流的设计方法,对于产品来说很有帮助,在开始设计的阶段也可以考虑将内容设计进去以免后期维护成本过大。

官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm
1
评论

企业内部应用的核心与灵魂:工作流管理系统 工作流

涵涵有小虎牙 发表了文章 • 569 次浏览 • 2018-11-20 20:59 • 来自相关话题

工作流是企业内部系统的核心和灵魂,而审批则是工作流中的最基础的应用场景。在公司管理和运转中引入审批工作流,替代原本的纸质申请和审批,以期提高公司的运转效率公司管理制度规范化系统留档,便于追溯环保。
总结了在企业在实际业务中需求,根据客户反馈,构建出一套敏捷开发框架--learun。Learun可以保证在团队的开发过程中高效协作,同时覆盖OA工作流、ERP、CRM、HRM、MIS、BI、移动APP、电商后台等多项应用系统的配置,大幅节省开发成本,提升开发效率。更详细的可以在网站www.learun.cn体验。

一. 角色

在一个公司中,每个人都会有自己的岗位职责和层级之分,不同的岗位和层级定位不一样,需要完成的任务也不一样。在审批流程中,我们只抽象划分为两类:

角色1:发起人

审批的发起人需要完成的主要是事务性、操作性的工作,同时也是一个审批流程的Owner,是最关心审批进展的人。因此在发起人的角度,在创建完审批事项后,还需要完善相关信息、催促审批人及时审批、处理驳回修改意见、重新提交等。发起人角度设计的要点总结如下:

兼容统一发起入口和业务场景触发常用的审批事项要方便找到有统一汇总的审批管理页面

角色2:审批人

审批人在流程中需要完成的主要是决策性的工作,因此在审批人的视角,内容和操作都应该尽量精简:

只看到最重要的信息,避免信息过多影响判断只进行必要操作,不能有过多选择或过多输入,影响决策效率统一的页面进行审批操作和管理需要有审批历史,以便追溯

二. 内容

1. 提炼最小集合

根据审批事项的不同,需要流转的内容也是不同的。对于审批流程的设计来说,需要在实际业务中提炼出最核心的内容,一则可以减轻发起人的工作负担(发起一个审批要填一堆的资料相信没人会开心),二则可以提高决策的准确性和效率。

例如一个请假审批流程,核心就是请假时间、事由和请假类型;而一个立项投决的审批,则需要重点展示立项会的表决结果,同时还需要把会议记录做为附件带上,以便在必要时可以查看,在交互上,这里同样需要注意内容的归类、收纳。

设计要点总结如下:

内容尽可能精炼有些内容是必要的,但系统可以自行获取就不要让发起人再输入一遍预置常用的内容,用选择的方式替代输入的方式,同时也提高了内容的规范性

2. 查看和修改

在审批的过程中,有时候需要让不同的审批人查看不同的内容,且限定有些人有修改权限而有些人只有只读权限,这都会在后面的“权限”里总结。

三. 流程

1. 自主选定审批人流程

这是一种比较轻量、灵活的审批流程形式,适用于公司规模不大、流程没有标准化的情况。要点是发起人发起一个审批事项并提交时,需要自行选择下一个环节的审批人。而下一个环节的审批人审批通过后,可以选择继续流转到再下一个人去审批,或者结束这个流程。

2. 串行流程

串行流程就是每一个审批环节的人审批通过后,才会进入到下一个环节。每个环节的驳回,可以根据业务需要,设计成驳回到发起人、驳回到上一个环节或驳回到指定环节重新审批,或兼而有之,做为选项供审批人选择。
3. 并行流程

并行流程是一个审批环节需要几个人或角色审批通过才算通过,可以有以下两种方式:

任意一个人审批通过即进入下一环节必须所有人审批通过才进入下一环节

上述第一个方式比较好理解,第二个方式和串行流程容易混淆,即同样是要多个人审批,到底是一个接一个、还是同时通过才算通过?到底用哪种方式,区别是审批人是不是同一个级别,并行的方式其实类似于同级别的会签,而串行方式适合有上下层级关系的情况。

并行流程的驳回则相对简单,一般是设计成有一个人驳回则该环节即算驳回。
4. 条件触发流程

条件触发流程在审批工作流中也比较常见,设计上就是某个审批环节要由谁/或哪个角色审批,需要取决于条件判断。例如金额低于1万元由财务总监审批通过后即结束,金额在1万元以上则由副总裁审批通过后即结束。
5. 混合流程

混合流程顾名思义就是混合了以上几种流程,还是以上述金额审批为例,我们修改成:金额低于1万元的,由财务审批通过后即结束;金额在1万元到10万元的,需要先由财务审批,之后交由副总裁审批通过后即结束;金额高于10万元的,需要由董事长和总裁一同审批通过后才结束。
四. 动作

1. 通过

通过动作由审批人操作,是否需要输入通过原因、通过原因是否必填需要根据实际业务情况决定。要点总结如下:

简单申请不需要填写通过原因,或者原因选填通过原因需要填的话,可用于反馈或激励发起人的情况

2. 驳回修改

驳回修改动作由审批人操作,和通过不同,为了让发起人知道如何修改,驳回原因一般需要设定成必填项,否则发起人或上一个审批环节的人不知道为何被驳回、以及要如何修改。

驳回修改可根据业务需要,在以下逻辑中选择:

驳回到发起人驳回上一环节驳回到选定的之前的某个审批环节

3. 重新提交

重新提交由发起人操作,和驳回修改是一一对应的。设计上要注意,审批人审批重新提交的内容时,需要附带上一次驳回修改的原因。

4. 取消

取消动作可选,一般来说是发起人取消,而不是审批人取消,原因如下:

审批人只关心一个审批事务过来后,判断并决策是通过还是驳回取消和驳回含义容易混淆,区分不开

在设计上,我们还可以做到发起人是否可取消可由配置项进行配置。

五. 权限

权限的控制贯穿在审批流程的方方面面,上述的角色、内容、流程和动作都会涉及到权限的控制。权限体系的设计是一个大工程,在审批流程中,采用基于角色的访问控制体系(RBAC)是一个不错的选择:

“基于角色的访问控制体系,包括用户、角色、目标、操作、许可权五个基本数据元素,每个角色至少具备一个权限,每个用户至少扮演一个角色,可以对完全不同的角色分配完全相同的访问权限,用户和角色是多对多的关系。”

设计要点总结如下:

操作和许可权内容,可区分为功能权限和数据权限什么人可以发起什么审批,由功能权限控制什么人/角色在整个审批流程中可见什么数据,由数据权限控制什么人/角色可以审批什么环节,由独立的审批配置控制,下一节会进行阐述

关于权限可以参考笔者另一个篇文章:面向中小企业SaaS的权限管理系统

六. 配置和扩展性

审批工作流的配置灵活度和开发复杂度成反比,具体要灵活到什么程度,需要由业务需求决定。一般针对公司开发的中后台系统,灵活性相对较少,而面向多个公司的商业化的系统,则灵活性要求大大提高。配置的灵活性体现在以下方面:

审批流程的类型可修改具体的审批环节可增删改各个环节审批人/角色可配置审批相关的权限可变更

七. 效率

工作流的核心目标是提高企业运行效率,如果线上审批流程效率还不如原来的纸质操作,那这个流程的设计就是失败的,也失去了意义。因此,在完成整个审批流程的设计之后,我们还需要花大精力对流程的效率进行审视和优化。对于审批流程效率的提升,总结的经验点如下:

审批的操作尽可能精简,且操作含义明确只要求输入必要的表单待审批事项及时通知到审批人审批进展及时通知发起人发起人可选择主动催促审批人做好下一步操作的引导

总结

审批流程是中后台工作流的基础应用,我们在设计的过程中,把握的核心要点是“提高效率,规范管理”,在设计过程中要时时回头审视,以免脱离了这个最重要的目标。

免费演示地址:http://www.learun.cn/Home/VerificationForm 查看全部

工作流是企业内部系统的核心和灵魂,而审批则是工作流中的最基础的应用场景。在公司管理和运转中引入审批工作流,替代原本的纸质申请和审批,以期提高公司的运转效率公司管理制度规范化系统留档,便于追溯环保。
总结了在企业在实际业务中需求,根据客户反馈,构建出一套敏捷开发框架--learun。Learun可以保证在团队的开发过程中高效协作,同时覆盖OA工作流、ERP、CRM、HRM、MIS、BI、移动APP、电商后台等多项应用系统的配置,大幅节省开发成本,提升开发效率。更详细的可以在网站www.learun.cn体验。

一. 角色

在一个公司中,每个人都会有自己的岗位职责和层级之分,不同的岗位和层级定位不一样,需要完成的任务也不一样。在审批流程中,我们只抽象划分为两类:

角色1:发起人

审批的发起人需要完成的主要是事务性、操作性的工作,同时也是一个审批流程的Owner,是最关心审批进展的人。因此在发起人的角度,在创建完审批事项后,还需要完善相关信息、催促审批人及时审批、处理驳回修改意见、重新提交等。发起人角度设计的要点总结如下:

兼容统一发起入口和业务场景触发常用的审批事项要方便找到有统一汇总的审批管理页面

角色2:审批人

审批人在流程中需要完成的主要是决策性的工作,因此在审批人的视角,内容和操作都应该尽量精简:

只看到最重要的信息,避免信息过多影响判断只进行必要操作,不能有过多选择或过多输入,影响决策效率统一的页面进行审批操作和管理需要有审批历史,以便追溯

二. 内容

1. 提炼最小集合

根据审批事项的不同,需要流转的内容也是不同的。对于审批流程的设计来说,需要在实际业务中提炼出最核心的内容,一则可以减轻发起人的工作负担(发起一个审批要填一堆的资料相信没人会开心),二则可以提高决策的准确性和效率。

例如一个请假审批流程,核心就是请假时间、事由和请假类型;而一个立项投决的审批,则需要重点展示立项会的表决结果,同时还需要把会议记录做为附件带上,以便在必要时可以查看,在交互上,这里同样需要注意内容的归类、收纳。

设计要点总结如下:

内容尽可能精炼有些内容是必要的,但系统可以自行获取就不要让发起人再输入一遍预置常用的内容,用选择的方式替代输入的方式,同时也提高了内容的规范性

2. 查看和修改

在审批的过程中,有时候需要让不同的审批人查看不同的内容,且限定有些人有修改权限而有些人只有只读权限,这都会在后面的“权限”里总结。

三. 流程

1. 自主选定审批人流程

这是一种比较轻量、灵活的审批流程形式,适用于公司规模不大、流程没有标准化的情况。要点是发起人发起一个审批事项并提交时,需要自行选择下一个环节的审批人。而下一个环节的审批人审批通过后,可以选择继续流转到再下一个人去审批,或者结束这个流程。

2. 串行流程

串行流程就是每一个审批环节的人审批通过后,才会进入到下一个环节。每个环节的驳回,可以根据业务需要,设计成驳回到发起人、驳回到上一个环节或驳回到指定环节重新审批,或兼而有之,做为选项供审批人选择。
3. 并行流程

并行流程是一个审批环节需要几个人或角色审批通过才算通过,可以有以下两种方式:

任意一个人审批通过即进入下一环节必须所有人审批通过才进入下一环节

上述第一个方式比较好理解,第二个方式和串行流程容易混淆,即同样是要多个人审批,到底是一个接一个、还是同时通过才算通过?到底用哪种方式,区别是审批人是不是同一个级别,并行的方式其实类似于同级别的会签,而串行方式适合有上下层级关系的情况。

并行流程的驳回则相对简单,一般是设计成有一个人驳回则该环节即算驳回。
4. 条件触发流程

条件触发流程在审批工作流中也比较常见,设计上就是某个审批环节要由谁/或哪个角色审批,需要取决于条件判断。例如金额低于1万元由财务总监审批通过后即结束,金额在1万元以上则由副总裁审批通过后即结束。
5. 混合流程

混合流程顾名思义就是混合了以上几种流程,还是以上述金额审批为例,我们修改成:金额低于1万元的,由财务审批通过后即结束;金额在1万元到10万元的,需要先由财务审批,之后交由副总裁审批通过后即结束;金额高于10万元的,需要由董事长和总裁一同审批通过后才结束。
四. 动作

1. 通过

通过动作由审批人操作,是否需要输入通过原因、通过原因是否必填需要根据实际业务情况决定。要点总结如下:

简单申请不需要填写通过原因,或者原因选填通过原因需要填的话,可用于反馈或激励发起人的情况

2. 驳回修改

驳回修改动作由审批人操作,和通过不同,为了让发起人知道如何修改,驳回原因一般需要设定成必填项,否则发起人或上一个审批环节的人不知道为何被驳回、以及要如何修改。

驳回修改可根据业务需要,在以下逻辑中选择:

驳回到发起人驳回上一环节驳回到选定的之前的某个审批环节

3. 重新提交

重新提交由发起人操作,和驳回修改是一一对应的。设计上要注意,审批人审批重新提交的内容时,需要附带上一次驳回修改的原因。

4. 取消

取消动作可选,一般来说是发起人取消,而不是审批人取消,原因如下:

审批人只关心一个审批事务过来后,判断并决策是通过还是驳回取消和驳回含义容易混淆,区分不开

在设计上,我们还可以做到发起人是否可取消可由配置项进行配置。

五. 权限

权限的控制贯穿在审批流程的方方面面,上述的角色、内容、流程和动作都会涉及到权限的控制。权限体系的设计是一个大工程,在审批流程中,采用基于角色的访问控制体系(RBAC)是一个不错的选择:

“基于角色的访问控制体系,包括用户、角色、目标、操作、许可权五个基本数据元素,每个角色至少具备一个权限,每个用户至少扮演一个角色,可以对完全不同的角色分配完全相同的访问权限,用户和角色是多对多的关系。”

设计要点总结如下:

操作和许可权内容,可区分为功能权限和数据权限什么人可以发起什么审批,由功能权限控制什么人/角色在整个审批流程中可见什么数据,由数据权限控制什么人/角色可以审批什么环节,由独立的审批配置控制,下一节会进行阐述

关于权限可以参考笔者另一个篇文章:面向中小企业SaaS的权限管理系统

六. 配置和扩展性

审批工作流的配置灵活度和开发复杂度成反比,具体要灵活到什么程度,需要由业务需求决定。一般针对公司开发的中后台系统,灵活性相对较少,而面向多个公司的商业化的系统,则灵活性要求大大提高。配置的灵活性体现在以下方面:

审批流程的类型可修改具体的审批环节可增删改各个环节审批人/角色可配置审批相关的权限可变更

七. 效率

工作流的核心目标是提高企业运行效率,如果线上审批流程效率还不如原来的纸质操作,那这个流程的设计就是失败的,也失去了意义。因此,在完成整个审批流程的设计之后,我们还需要花大精力对流程的效率进行审视和优化。对于审批流程效率的提升,总结的经验点如下:

审批的操作尽可能精简,且操作含义明确只要求输入必要的表单待审批事项及时通知到审批人审批进展及时通知发起人发起人可选择主动催促审批人做好下一步操作的引导

总结

审批流程是中后台工作流的基础应用,我们在设计的过程中,把握的核心要点是“提高效率,规范管理”,在设计过程中要时时回头审视,以免脱离了这个最重要的目标。

免费演示地址:http://www.learun.cn/Home/VerificationForm
1
评论

这是一个悲伤的程序员爱情故事 工作流

涵涵有小虎牙 发表了文章 • 741 次浏览 • 2018-11-16 16:06 • 来自相关话题

        程序员的爱情,少了点浪漫,多了点bug。
        小马,科班出身,毕业后顺利进入了一家软件开发公司,可能天生就是干程序员的料,沉默寡言,但是遇到程序难题乐于钻研,誓死不休,人称拼命三郎,同事都觉得这个称呼太长,后来便逐步简化为“三郎”了。

        这家伙有一个怪癖,每次解决一个难题,总会对着电脑哈哈傻笑,把身边的人吓得一咯噔。刚开始大家都以为他脑子有问题,久而久之也就习惯了。

       幸福来得太突然,有一天,公司来了一位女程序员,乍一看,没有一点程序猿的样子,长发飘飘,一副大边框的眼睛里藏着一双美丽的大眼睛,连走路的风都带着阵阵清香。

        她被安排在了三郎身边,微笑着向三郎问好,随意但气质不减。但是就是这个简单的动作,让三郎不知所措,连刚才需要解决的bug都抛到九霄云外了。



        俗话说,近水楼台先得月,美女是刚毕业的小妹,工作中难免有许多问题需要问三郎,三郎也总是有求必应,很快帮她解决。美女进步很快,为了答谢三郎,决定请三郎吃个饭。这个不争气的家伙,有点怕,叫上了同事。

       饭桌上,几乎是美女一个在说话,或者说是美女在审问他,她问一句,他答一句。但三郎也是个男人,也有男人都有的想法,但却没有男子汉应该有的勇气,一直红着脸低头吃饭。最后忍不住想看她一眼,却差点噎着了。

      生活又在平淡中过了半年,一个晚上,他依然一个人在办公室里加班。突然她给她打了个电话,她说她喝多了,让他去接她。

      他见到她的时候,她是撑到了极限。如果他晚点到,她可能就睡地上了。

       她刚问完她的地址,她就醉倒了。她吃力的扶着她上了出租车,这也许是他第一次能如此近距离的和美女接触,能如此近距离的味着长发的味道。他费了好大的劲终于把她弄到了屋里,他自己也累得倒在了她边上。房间很静,他能听到她的心跳,能感受到她呼吸的空气撞到他脸上……。









他感觉自己心跳的频率比处理线上支付系统的Bug跳得还要快,他想尝试靠近她一点。就在这时,她吐了出来,弄得两个人一身污垢。

他给自己和她简单擦了一下,然后他拿出了电脑继续写代码。本来三天的工作量,他一个晚上就写完了,效率高得连他自己都不敢相信。

第二天她醒后,连连说谢谢。她说她和男友分手了,心情不好,然后自己跑出去喝酒了,要不是他还真不知道会发生什么事。

这以后,他工作总是心不在焉了。终于有一天,公司上了一个新项目,做一个通用敏捷开发框架,项目命名为“learun”(现在已经成为公司最赚钱的项目了),三郎和美女一起调到了这个项目,美女毕竟经验不丰富,在一个OA组件的构建上遇到了难题,要三郎帮他解决。他连续三天加班到凌晨,顺利帮她完成,而且在代码的注释里,表达了对她的喜欢,这是三郎能想到的最好的方式了。可是天不遂人愿,正好那天美女有事,直接便把这个模块提交了,上线后便没有改过。
        多少天,他一直希望那些地方再出一个bug,让她重新再看到她写给她的心里话。不过,他等了几个月,发现她和之前没什么区别,后来三郎就离职了,50%的工资涨幅都没能留住他。

       接下来的几年里,三郎又换了几家公司。

       今年,他到一家大公司面式的时候,最后的技术总监问他干技术这么多年,最让他揪心的事是什么。

      把他的这个故事和面试官说了。

     最后面试官问他这女孩子到现在有没有联系过你。

     他摇了摇头。

     面试官说了一句,你被录用了,这么多年,那女孩子都没有联系你,说明你写的代码很稳定。 查看全部


        程序员的爱情,少了点浪漫,多了点bug。
        小马,科班出身,毕业后顺利进入了一家软件开发公司,可能天生就是干程序员的料,沉默寡言,但是遇到程序难题乐于钻研,誓死不休,人称拼命三郎,同事都觉得这个称呼太长,后来便逐步简化为“三郎”了。

        这家伙有一个怪癖,每次解决一个难题,总会对着电脑哈哈傻笑,把身边的人吓得一咯噔。刚开始大家都以为他脑子有问题,久而久之也就习惯了。

       幸福来得太突然,有一天,公司来了一位女程序员,乍一看,没有一点程序猿的样子,长发飘飘,一副大边框的眼睛里藏着一双美丽的大眼睛,连走路的风都带着阵阵清香。

        她被安排在了三郎身边,微笑着向三郎问好,随意但气质不减。但是就是这个简单的动作,让三郎不知所措,连刚才需要解决的bug都抛到九霄云外了。



        俗话说,近水楼台先得月,美女是刚毕业的小妹,工作中难免有许多问题需要问三郎,三郎也总是有求必应,很快帮她解决。美女进步很快,为了答谢三郎,决定请三郎吃个饭。这个不争气的家伙,有点怕,叫上了同事。

       饭桌上,几乎是美女一个在说话,或者说是美女在审问他,她问一句,他答一句。但三郎也是个男人,也有男人都有的想法,但却没有男子汉应该有的勇气,一直红着脸低头吃饭。最后忍不住想看她一眼,却差点噎着了。

      生活又在平淡中过了半年,一个晚上,他依然一个人在办公室里加班。突然她给她打了个电话,她说她喝多了,让他去接她。

      他见到她的时候,她是撑到了极限。如果他晚点到,她可能就睡地上了。

       她刚问完她的地址,她就醉倒了。她吃力的扶着她上了出租车,这也许是他第一次能如此近距离的和美女接触,能如此近距离的味着长发的味道。他费了好大的劲终于把她弄到了屋里,他自己也累得倒在了她边上。房间很静,他能听到她的心跳,能感受到她呼吸的空气撞到他脸上……。









他感觉自己心跳的频率比处理线上支付系统的Bug跳得还要快,他想尝试靠近她一点。就在这时,她吐了出来,弄得两个人一身污垢。

他给自己和她简单擦了一下,然后他拿出了电脑继续写代码。本来三天的工作量,他一个晚上就写完了,效率高得连他自己都不敢相信。

第二天她醒后,连连说谢谢。她说她和男友分手了,心情不好,然后自己跑出去喝酒了,要不是他还真不知道会发生什么事。

这以后,他工作总是心不在焉了。终于有一天,公司上了一个新项目,做一个通用敏捷开发框架,项目命名为“learun”(现在已经成为公司最赚钱的项目了),三郎和美女一起调到了这个项目,美女毕竟经验不丰富,在一个OA组件的构建上遇到了难题,要三郎帮他解决。他连续三天加班到凌晨,顺利帮她完成,而且在代码的注释里,表达了对她的喜欢,这是三郎能想到的最好的方式了。可是天不遂人愿,正好那天美女有事,直接便把这个模块提交了,上线后便没有改过。
        多少天,他一直希望那些地方再出一个bug,让她重新再看到她写给她的心里话。不过,他等了几个月,发现她和之前没什么区别,后来三郎就离职了,50%的工资涨幅都没能留住他。

       接下来的几年里,三郎又换了几家公司。

       今年,他到一家大公司面式的时候,最后的技术总监问他干技术这么多年,最让他揪心的事是什么。

      把他的这个故事和面试官说了。

     最后面试官问他这女孩子到现在有没有联系过你。

     他摇了摇头。

     面试官说了一句,你被录用了,这么多年,那女孩子都没有联系你,说明你写的代码很稳定。
1
评论

成功与失败取决于工作流 工作流

涵涵有小虎牙 发表了文章 • 583 次浏览 • 2018-11-14 21:49 • 来自相关话题

        记得有一家国内知名的国企,在2013年时整合了各个地区的集团分公司,销售公司都搬到一块儿地儿进行集中生产办公。按理说这是大好事,能集中精力专注产品质量,抓好各个研发、生产、销售环节。但由于各个分公司协调不到位,就导致了工作流程环节脱序、扯皮的事件发生。因此,国企的管理者就引进了一套工作流系统,以期能通过这个系统改进和优化整个集团公司的工作流程,让工作流程混乱的现象不再发生。想法虽好,但事与愿违。工作流系统让部分管理者头痛,审批处理环节丢失,导致生产、销售。节出了部分的问题,以致于企业的发展缓慢,原本打算5年上市计划也无法实现。
        工作流是企业成败的幕后推手?这个选择疑问句并不能简单的用“是”与“否”来回答,因为不同的企业、不同的软件时刻都会成为这个问题的变量,左右着即将揭晓的答案。

         有的管理软件(这里以OA为例)对工作流并不是很重视,流程偏传统,样式刻板;有的甚至是写死的,系统中存在什么样的工作流你就得用什么样的,完全没有照顾到企业间的差异性。这类的OA管理软件就显得不是很友好,而它给企业日常工作带来的麻烦还在远不止这些。这是管理软件自身的劣势给出的答案:否。当然也有正面的回答,譬如微宏协同办公管理系统就十分的专注工作流,各个环节的配置都由专人进行实施和维护,将建立强大的工作流引擎作为一项策略。而在目前看来,这个追求是正确的。
         而对企业来说,这个答案是取决于它对工作流的重视程度以及后期的选型。我们知道,对症下药绝对是每个企业都该遵循的规律,而工作流作为管理过程中不能缺少的重要成分,没有理由不被重视。企业要是能抓到这个痛点,想必不难回答上面提出的问题。

         第一,工作在一定程度确保了所执行活动的安全性。因为流程中的权限设置使得该项任务的执行过程只能由已经设定的负责人参与,其他不相关的人并不能进入。

         第二,领导随时可以查看工作进度,加强管控。每一个处理过程都会在系统中留下痕迹,也会显示不同的进度。领导正是通过这一丝丝的蛛丝马迹来对公司整体情况进行把控。

        第三,取代人工的传递方式,节约时间,提高工作效率。员工在完成自己负责的那一阶段时,工作任务便通过预定的流程自动传递到下一位负责人那里去,既保证了正确性,又减少了不必要的时间的浪费。
         第四,工作流也将企业的管理制度电子化,带来企业效益。工作流以及OA系统本身为企业建立的是一整套的制度,从人事到财务再到具体的每项任务如何执行,都是有其规则。作为领导者也能在企业内部发生变动时,轻轻松松的去更改这些设定好的内容以适应企业发展现状。

         第五、工作流系统的售后维护决定了企业能否与人事变动、业务流程、销售流程、采购流程、生产流程等变动相适应,以保证整个系统的正常运行。及时高效的处理工作流系统中的环节问题,就可以保障系统的正常运行。也就不会让管理层有所抱怨和无所适从。

        总而之言,必须让工作流系统能随时保障企业的生产、销售需求,工作流的好坏是由企业管理者决定的,充分维护和更新好工作流系统才能让企业更好更顺利的发展。因此,成败不由工作流决定,而是由企业决策者的“心”决定。态度决定成败,工作流也一样。
官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm 查看全部


        记得有一家国内知名的国企,在2013年时整合了各个地区的集团分公司,销售公司都搬到一块儿地儿进行集中生产办公。按理说这是大好事,能集中精力专注产品质量,抓好各个研发、生产、销售环节。但由于各个分公司协调不到位,就导致了工作流程环节脱序、扯皮的事件发生。因此,国企的管理者就引进了一套工作流系统,以期能通过这个系统改进和优化整个集团公司的工作流程,让工作流程混乱的现象不再发生。想法虽好,但事与愿违。工作流系统让部分管理者头痛,审批处理环节丢失,导致生产、销售。节出了部分的问题,以致于企业的发展缓慢,原本打算5年上市计划也无法实现。
        工作流是企业成败的幕后推手?这个选择疑问句并不能简单的用“是”与“否”来回答,因为不同的企业、不同的软件时刻都会成为这个问题的变量,左右着即将揭晓的答案。

         有的管理软件(这里以OA为例)对工作流并不是很重视,流程偏传统,样式刻板;有的甚至是写死的,系统中存在什么样的工作流你就得用什么样的,完全没有照顾到企业间的差异性。这类的OA管理软件就显得不是很友好,而它给企业日常工作带来的麻烦还在远不止这些。这是管理软件自身的劣势给出的答案:否。当然也有正面的回答,譬如微宏协同办公管理系统就十分的专注工作流,各个环节的配置都由专人进行实施和维护,将建立强大的工作流引擎作为一项策略。而在目前看来,这个追求是正确的。
         而对企业来说,这个答案是取决于它对工作流的重视程度以及后期的选型。我们知道,对症下药绝对是每个企业都该遵循的规律,而工作流作为管理过程中不能缺少的重要成分,没有理由不被重视。企业要是能抓到这个痛点,想必不难回答上面提出的问题。

         第一,工作在一定程度确保了所执行活动的安全性。因为流程中的权限设置使得该项任务的执行过程只能由已经设定的负责人参与,其他不相关的人并不能进入。

         第二,领导随时可以查看工作进度,加强管控。每一个处理过程都会在系统中留下痕迹,也会显示不同的进度。领导正是通过这一丝丝的蛛丝马迹来对公司整体情况进行把控。

        第三,取代人工的传递方式,节约时间,提高工作效率。员工在完成自己负责的那一阶段时,工作任务便通过预定的流程自动传递到下一位负责人那里去,既保证了正确性,又减少了不必要的时间的浪费。
         第四,工作流也将企业的管理制度电子化,带来企业效益。工作流以及OA系统本身为企业建立的是一整套的制度,从人事到财务再到具体的每项任务如何执行,都是有其规则。作为领导者也能在企业内部发生变动时,轻轻松松的去更改这些设定好的内容以适应企业发展现状。

         第五、工作流系统的售后维护决定了企业能否与人事变动、业务流程、销售流程、采购流程、生产流程等变动相适应,以保证整个系统的正常运行。及时高效的处理工作流系统中的环节问题,就可以保障系统的正常运行。也就不会让管理层有所抱怨和无所适从。

        总而之言,必须让工作流系统能随时保障企业的生产、销售需求,工作流的好坏是由企业管理者决定的,充分维护和更新好工作流系统才能让企业更好更顺利的发展。因此,成败不由工作流决定,而是由企业决策者的“心”决定。态度决定成败,工作流也一样。
官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm
1
评论

力软敏捷开发框架工作流实现技术 工作流

涵涵有小虎牙 发表了文章 • 780 次浏览 • 2018-11-13 10:50 • 来自相关话题

         工作流管理联盟(WFMC)提出了一个工作流参考模型,约定了工作流系统的体系结构、应用接口及特性,主要目的是为了实现工作流技术的标准化和开放性。下面简要介绍系统中的各个部分,并对参考模型中的五类接口进行描述。

  1. 工作流管理系统中的各种数据

        工作流控制数据(Workflow Control Data)工作流执行服务/工作流机通过内部的工作流控制数据来辨别单个过程或活动实例的状态。这些数据由工作流执行服务/工作流机控制。用户、应用程序或其它的工作流机/工作流执行服务不能对其进行直接读写操作,它们可以通过向工作流执行服务/工作流机发送消息来获得工作流控制数据的内容。

        工作流相关数据(Workflow Relevant Data)工作流管理系统通过工作流相关数据来确定过程实例状态转换的条件,并选择下一个执行的活动。这些数据可以被工作流应用程序访问并修改。因此,工作流管理软件应该在活动实例之间传递工作流相关数据。

         工作流应用数据(Workflow Application Data)这种数据指那些由应用程序操作的数据。它们是针对应用程序的,工作流管理系统无法对它们进行访问。  

2. 工作流模型和工作流建模工具 

         工作流模型过程模型包含了工作流执行服务运行该过程的所有必需的信息,包括它启动和结束的条件、组成的活动、活动间导航的准则、参与其中的用户、需要激活的应用程序的指针、需要用到的工作流相关数据的定义等等。    

         在工作流的建模期间需要参考组织/角色模型来获得有关组织结构和组织内角色的信息。过程定义指定完成某项活动的组织实体或角色,而不是定义具体人员。工作流执行服务负责在工作流运行环境内将组织实体或角色映射为特定的人员。    

        工作流建模工具它主要用于分析、建模、描述并记录经营过程。它应输出一个能被工作流机动态解释的过程定义。不同的工作流产品其建模工具输出的格式是不同的,参考模型中的接口1不仅使工作流的定义阶段和运行阶段分离,使用户可以分别选择建模工具和执行产品,还可以使不同的工作流产品合作为一个过程定义的执行提供运行服务环境。    

         工作流管理联盟针对工作流建模做了两方面的工作:  (1) 建立了一个元模型(process meta model):它用于描述一个过程模型内各个对象、它们之间的关系及它们的属性,有利于多个工作流产品之间交换模型信息。  (2) 定义了一套可以在工作流管理系统之间及在管理系统与建模工具之间交互过程模型定义的API接口。  图1为工作流管理联盟定义的过程元模型。  

3. 工作流执行服务

        工作流执行服务由一个或多个工作流机组成(在分布环境下,由多个工作流机组成),提供了过程实例执行的运行环境,主要完成以下功能:  (1) 解释流程定义,生成过程实例,并管理其实施过程。  (2) 依据过程定义和工作流相关数据为过程实例的导航提供进入和退出的条件、并行或串行执行活动的信息、用户信息或所需激活的应用程序的信息等等。  (3) 与外部资源交互完成各项活动。 (4) 维护工作流控制数据和工作流相关数据(这些数据包括不同过程和活动实例的内部状态信息、工作流机用于协调和恢复的各种检查数据和恢复/重起信息等),并向用户传递必要的相关数据。    
      在分布式的工作流执行服务中,多个工作流机协调工作,推进工作流机实例的执行。每一个工作流机控制过程执行的一部分,并使用相关的资源和应用工具。这种执行服务需要共同的命名和管理范围,便于过程定义和用户/应用名称一致。分布式的工作流系统采用特定的协议来同步各工作流机,并传递相应的控制信息。在一个同构的工作流执行服务中这些协议是因厂家而异的。当选用不同的工作流系统产品时,各工作流机之间需要一个标准来进行转换。它应包括以下几个方面的内容:  (1) 一个共同的命名机制;  (2) 支持共同的过程定义对象和属性;  (3) 能够传递相应的工作流相关数据,并控制过程实例的生成;  (4) 能够在异构的工作流机间传递过程、子过程及活动;  (5) 支持共同的管理职能。

 4. 工作流机 

         工作流机是一个为工作流实例的执行提供运行环境的软件服务或“引擎”。它主要提供以下功能:  (1) 对过程定义进行解释;  (2) 控制过程实例的生成、激活、挂起、终止等;  (3) 控制活动实例间的转换,包括串行或并行操作、工作流相关数据的解释等;  (4) 支持用户操作的界面;  (5) 维护工作流控制数据和工作流相关数据,在应用或用户间传递工作流相关数据;  (6) 提供一用于激活外部应用程序和访问工作流相关数据的界面;  (7) 提供控制、管理和监督的功能。    

        工作流机的一个重要功能就是控制实例和活动实例的状态转换。工作流管理联盟的参考模型中为过程实例的运行状态和活动实例的状态进行了定义,并给出了状态转换的条件。图2和图3分别描述了过程实例和活动实例各个状态之间的转换。  过程实例包括以下几种运行状态:  初始(inactived):一个过程实例已经生成,但该过程实例并没有满足开始执行的条件;  准备运行(running):该过程实例已经开始执行,但是还不满足开始执行第一个活动并生成一个任务项的条件;       
        运行中(active):一个或多个活动已经开始执行(也就是已经生成一个工作项并分配给了合适的活动实例)  挂起(suspended):该过程实例正在运行,但处于静止状态,除非有一个“重启”的命令使该过程实例回到准备运行状态,否则所有的活动都不会执行;  结束(completed):该过程实例满足结束的条件,工作流管理系统将执行过程实例结束后的操作(如统计),并删除该过程实例;  终止(terminated):该过程实例在正常结束前被迫终止,工作流管理系统将执行补救措施,并删除该过程实例。    
        活动的运行状态包括:  未开始(inactive):该活动实例已经生成但还没有被激活(例如活动开始条件没有满足);  运行中(active):该活动实例已经被激活了;  挂起(suspended):该活动实例处于静止状态;  结束(completed):该活动已经执行完毕,工作流管理系统将进行活动结束后的导航工作,激活下一个符合启动条件的活动实例。

 5. 客户端应用 

        这种方式适合于需要人员参与的活动。这种情况下,工作流机通过任务项列表管理器来进行控制。工作流管理联盟提供了四种可能的通过任务项列表来实现工作流客户工作流机之间的通讯方式,如图4所示。其中一种支持集中式的结构,另外三种适合分布情况下的工作流系统。  (1) 基于主机方式的模型(Hust Based Model):这种方式适合于集中的情况。此时,客户端应用程序、任务项列表管理器、任务项列表和工作流机都列在中央的主服务器上,用户通过模拟一个终端用户来获得任务项列表;  (2) 共享的文件库模型(Shared Filestore Model):在这种情形下,客户应用程序和任务列表管理器位于用户的工作站上,而工作流位于中央服务器上。任务项列表位于一个客户应用和工作流机都能够达到的共享的文件系统中。  (3) 电子邮件模型(Electronic Mail Model):这里,客户应用和任务项列表管理器位于用户的工作站上,工作流机位于中央主机上。所有的通讯都使用电子邮件。此时,任务项列表一般位于客户端;  (4) 过程调用或信息传递模型(Procedure Callor Message Passing Model):这时,客户应用程序和任务项列表管理器位于用户的工作站上,任务项列表和工作流机位于服务器端。用户通过RPC或者其它的消息传递机制来获得任务项列表。     
 6. 由工作流机直接调用的应用程序 

         这种情况适合于不需要人员参与的活动。在简单的情况下,工作流机通过过程模型中定义的活动的信息、应用程序的类型和需要的数据来激活应用程序。被激活的应用程序可以和工作流机位于一台计算机上,可以位于相同的运行平台上,也可以位于网络可以到达的不同平台上。模型定义提供了有关应用程序的类型、地址等充分信息,便于工作流机激活该程序并执行相应的动作。  

 7. 工作流执行服务之间的互操作性

        工作流联盟的目标之一就是规定一个标准使得不同厂商提供的工作流产品能够协调工作,整个系统能够无缝地在各个产品之间传递任务项。工作流管理联盟在互操作性上的工作主要集中在提供了一系列互操作的情景,从简单的任务传递到传输整个工作流过程模型和工作流参考数据。尽管有可能考虑那些很复杂的情形(如不同厂商提供的工作流机共同协作实现工作流执行服务,这在目前还不可能实现,因为它要求所有的工作流机都能够解释过程模型,共享一套工作流控制数据,并在异构的工作流机环境下共享过程实例状态。)但就目前来说,比较切合实际的目标是在不同的工作流执行服务间传递过程的部分内容,支持其实例的运行。  

  8. 系统管理和监控工具

        该工具能够对工作流在整个组织内的流动状况进行监控,并提供一系列的管理功能,如有关安全性、对过程的控制和授权操作等方面的管理。主要功能包括以下几个方面:  (1) 建立、设置和优化组成工作流管理系统的各个软件;  (2) 对过程模型进行实例化;  (3) 将过程模型中的角色实例化;  (4) 将运行中的过程实例、活动实例和数据分发到各个工作流机中;  (5) 启动、挂起、恢复和终止过程实例;  (6) 管理正在执行的过程实例并对正常或异常退出的过程的历史数据进行统计和分析。  

 9. 工作流参考模型中的五类接口  

         工作流联盟给出了五类接口:  (1) 接口1:工作流服务和工作流建模工具;  (2) 接口2:工作流服务和客户应用之间的接口,这是最主要的接口规范,它约定所有客户方应用和工作流服务之间的功能访问方式;  (3) 接口3:工作流机和直接调用的应用程序之间的接口;  (4) 接口4:工作流管理系统之间的互操作接口;  (5) 接口5:工作流服务和工作流管理工具之间的接口。    其中,接口1为在不同物理或电子介质之间传递过程定义的信息提供了交互的形式和API调用;接口2定义了通信建立、工作流定义操作等功能;接口3激活应用程序的API函数应覆盖的几个方面的功能;接口4完成工作流执行服务之间需要提供大量的WAPI来实现互操作,无论是在两个工作流执行服务之间的直接调用还是通过网关函数;接口5主要实现对工作流的管理和监视。
官网:www.learun.cn

免费演示地址:http://www.learun.cn/Home/VerificationForm 查看全部


         工作流管理联盟(WFMC)提出了一个工作流参考模型,约定了工作流系统的体系结构、应用接口及特性,主要目的是为了实现工作流技术的标准化和开放性。下面简要介绍系统中的各个部分,并对参考模型中的五类接口进行描述。

  1. 工作流管理系统中的各种数据

        工作流控制数据(Workflow Control Data)工作流执行服务/工作流机通过内部的工作流控制数据来辨别单个过程或活动实例的状态。这些数据由工作流执行服务/工作流机控制。用户、应用程序或其它的工作流机/工作流执行服务不能对其进行直接读写操作,它们可以通过向工作流执行服务/工作流机发送消息来获得工作流控制数据的内容。

        工作流相关数据(Workflow Relevant Data)工作流管理系统通过工作流相关数据来确定过程实例状态转换的条件,并选择下一个执行的活动。这些数据可以被工作流应用程序访问并修改。因此,工作流管理软件应该在活动实例之间传递工作流相关数据。

         工作流应用数据(Workflow Application Data)这种数据指那些由应用程序操作的数据。它们是针对应用程序的,工作流管理系统无法对它们进行访问。  

2. 工作流模型和工作流建模工具 

         工作流模型过程模型包含了工作流执行服务运行该过程的所有必需的信息,包括它启动和结束的条件、组成的活动、活动间导航的准则、参与其中的用户、需要激活的应用程序的指针、需要用到的工作流相关数据的定义等等。    

         在工作流的建模期间需要参考组织/角色模型来获得有关组织结构和组织内角色的信息。过程定义指定完成某项活动的组织实体或角色,而不是定义具体人员。工作流执行服务负责在工作流运行环境内将组织实体或角色映射为特定的人员。    

        工作流建模工具它主要用于分析、建模、描述并记录经营过程。它应输出一个能被工作流机动态解释的过程定义。不同的工作流产品其建模工具输出的格式是不同的,参考模型中的接口1不仅使工作流的定义阶段和运行阶段分离,使用户可以分别选择建模工具和执行产品,还可以使不同的工作流产品合作为一个过程定义的执行提供运行服务环境。    

         工作流管理联盟针对工作流建模做了两方面的工作:  (1) 建立了一个元模型(process meta model):它用于描述一个过程模型内各个对象、它们之间的关系及它们的属性,有利于多个工作流产品之间交换模型信息。  (2) 定义了一套可以在工作流管理系统之间及在管理系统与建模工具之间交互过程模型定义的API接口。  图1为工作流管理联盟定义的过程元模型。  

3. 工作流执行服务

        工作流执行服务由一个或多个工作流机组成(在分布环境下,由多个工作流机组成),提供了过程实例执行的运行环境,主要完成以下功能:  (1) 解释流程定义,生成过程实例,并管理其实施过程。  (2) 依据过程定义和工作流相关数据为过程实例的导航提供进入和退出的条件、并行或串行执行活动的信息、用户信息或所需激活的应用程序的信息等等。  (3) 与外部资源交互完成各项活动。 (4) 维护工作流控制数据和工作流相关数据(这些数据包括不同过程和活动实例的内部状态信息、工作流机用于协调和恢复的各种检查数据和恢复/重起信息等),并向用户传递必要的相关数据。    
      在分布式的工作流执行服务中,多个工作流机协调工作,推进工作流机实例的执行。每一个工作流机控制过程执行的一部分,并使用相关的资源和应用工具。这种执行服务需要共同的命名和管理范围,便于过程定义和用户/应用名称一致。分布式的工作流系统采用特定的协议来同步各工作流机,并传递相应的控制信息。在一个同构的工作流执行服务中这些协议是因厂家而异的。当选用不同的工作流系统产品时,各工作流机之间需要一个标准来进行转换。它应包括以下几个方面的内容:  (1) 一个共同的命名机制;  (2) 支持共同的过程定义对象和属性;  (3) 能够传递相应的工作流相关数据,并控制过程实例的生成;  (4) 能够在异构的工作流机间传递过程、子过程及活动;  (5) 支持共同的管理职能。

 4. 工作流机 

         工作流机是一个为工作流实例的执行提供运行环境的软件服务或“引擎”。它主要提供以下功能:  (1) 对过程定义进行解释;  (2) 控制过程实例的生成、激活、挂起、终止等;  (3) 控制活动实例间的转换,包括串行或并行操作、工作流相关数据的解释等;  (4) 支持用户操作的界面;  (5) 维护工作流控制数据和工作流相关数据,在应用或用户间传递工作流相关数据;  (6) 提供一用于激活外部应用程序和访问工作流相关数据的界面;  (7) 提供控制、管理和监督的功能。    

        工作流机的一个重要功能就是控制实例和活动实例的状态转换。工作流管理联盟的参考模型中为过程实例的运行状态和活动实例的状态进行了定义,并给出了状态转换的条件。图2和图3分别描述了过程实例和活动实例各个状态之间的转换。  过程实例包括以下几种运行状态:  初始(inactived):一个过程实例已经生成,但该过程实例并没有满足开始执行的条件;  准备运行(running):该过程实例已经开始执行,但是还不满足开始执行第一个活动并生成一个任务项的条件;       
        运行中(active):一个或多个活动已经开始执行(也就是已经生成一个工作项并分配给了合适的活动实例)  挂起(suspended):该过程实例正在运行,但处于静止状态,除非有一个“重启”的命令使该过程实例回到准备运行状态,否则所有的活动都不会执行;  结束(completed):该过程实例满足结束的条件,工作流管理系统将执行过程实例结束后的操作(如统计),并删除该过程实例;  终止(terminated):该过程实例在正常结束前被迫终止,工作流管理系统将执行补救措施,并删除该过程实例。    
        活动的运行状态包括:  未开始(inactive):该活动实例已经生成但还没有被激活(例如活动开始条件没有满足);  运行中(active):该活动实例已经被激活了;  挂起(suspended):该活动实例处于静止状态;  结束(completed):该活动已经执行完毕,工作流管理系统将进行活动结束后的导航工作,激活下一个符合启动条件的活动实例。

 5. 客户端应用 

        这种方式适合于需要人员参与的活动。这种情况下,工作流机通过任务项列表管理器来进行控制。工作流管理联盟提供了四种可能的通过任务项列表来实现工作流客户工作流机之间的通讯方式,如图4所示。其中一种支持集中式的结构,另外三种适合分布情况下的工作流系统。  (1) 基于主机方式的模型(Hust Based Model):这种方式适合于集中的情况。此时,客户端应用程序、任务项列表管理器、任务项列表和工作流机都列在中央的主服务器上,用户通过模拟一个终端用户来获得任务项列表;  (2) 共享的文件库模型(Shared Filestore Model):在这种情形下,客户应用程序和任务列表管理器位于用户的工作站上,而工作流位于中央服务器上。任务项列表位于一个客户应用和工作流机都能够达到的共享的文件系统中。  (3) 电子邮件模型(Electronic Mail Model):这里,客户应用和任务项列表管理器位于用户的工作站上,工作流机位于中央主机上。所有的通讯都使用电子邮件。此时,任务项列表一般位于客户端;  (4) 过程调用或信息传递模型(Procedure Callor Message Passing Model):这时,客户应用程序和任务项列表管理器位于用户的工作站上,任务项列表和工作流机位于服务器端。用户通过RPC或者其它的消息传递机制来获得任务项列表。     
 6. 由工作流机直接调用的应用程序 

         这种情况适合于不需要人员参与的活动。在简单的情况下,工作流机通过过程模型中定义的活动的信息、应用程序的类型和需要的数据来激活应用程序。被激活的应用程序可以和工作流机位于一台计算机上,可以位于相同的运行平台上,也可以位于网络可以到达的不同平台上。模型定义提供了有关应用程序的类型、地址等充分信息,便于工作流机激活该程序并执行相应的动作。  

 7. 工作流执行服务之间的互操作性

        工作流联盟的目标之一就是规定一个标准使得不同厂商提供的工作流产品能够协调工作,整个系统能够无缝地在各个产品之间传递任务项。工作流管理联盟在互操作性上的工作主要集中在提供了一系列互操作的情景,从简单的任务传递到传输整个工作流过程模型和工作流参考数据。尽管有可能考虑那些很复杂的情形(如不同厂商提供的工作流机共同协作实现工作流执行服务,这在目前还不可能实现,因为它要求所有的工作流机都能够解释过程模型,共享一套工作流控制数据,并在异构的工作流机环境下共享过程实例状态。)但就目前来说,比较切合实际的目标是在不同的工作流执行服务间传递过程的部分内容,支持其实例的运行。  

  8. 系统管理和监控工具

        该工具能够对工作流在整个组织内的流动状况进行监控,并提供一系列的管理功能,如有关安全性、对过程的控制和授权操作等方面的管理。主要功能包括以下几个方面:  (1) 建立、设置和优化组成工作流管理系统的各个软件;  (2) 对过程模型进行实例化;  (3) 将过程模型中的角色实例化;  (4) 将运行中的过程实例、活动实例和数据分发到各个工作流机中;  (5) 启动、挂起、恢复和终止过程实例;  (6) 管理正在执行的过程实例并对正常或异常退出的过程的历史数据进行统计和分析。  

 9. 工作流参考模型中的五类接口  

         工作流联盟给出了五类接口:  (1) 接口1:工作流服务和工作流建模工具;  (2) 接口2:工作流服务和客户应用之间的接口,这是最主要的接口规范,它约定所有客户方应用和工作流服务之间的功能访问方式;  (3) 接口3:工作流机和直接调用的应用程序之间的接口;  (4) 接口4:工作流管理系统之间的互操作接口;  (5) 接口5:工作流服务和工作流管理工具之间的接口。    其中,接口1为在不同物理或电子介质之间传递过程定义的信息提供了交互的形式和API调用;接口2定义了通信建立、工作流定义操作等功能;接口3激活应用程序的API函数应覆盖的几个方面的功能;接口4完成工作流执行服务之间需要提供大量的WAPI来实现互操作,无论是在两个工作流执行服务之间的直接调用还是通过网关函数;接口5主要实现对工作流的管理和监视。
官网:www.learun.cn

免费演示地址:http://www.learun.cn/Home/VerificationForm
6
评论

【源码下载】一款使用环信实现的开源灵魂社交APP(含服务器) 猿匹配 开源

beyond 发表了文章 • 1335 次浏览 • 2019-07-01 10:48 • 来自相关话题

#前言
近期,环信热心开发者-穿裤衩闯天下使用环信IM开发了一款实时聊天应用,包含简单的服务器端,现在正式开源给小伙伴们。感兴趣的同学可以一起搞一下哦,详细介绍请往下看。






  上代码
服务器:VMServer
客户端:VMMatch
 
 #VMMatch
猿匹配 —— 国内首个程序猿非严肃婚恋交友应用,让我们一言不合就来场匹配吧
 
#介绍#
首先说下中文名:为什么叫这个名字呢,因为这是一个程序猿(媛)之间匹配交流的应用啊其实这是一个使用环信 IM 开发的一款开源聊天项目,涵盖了时下流行的一些聊天元素,同时已将 IM 功能封装为单独库,可以直接引用,方便使用
项目还处在初期阶段,还有许多功能需要实现,有兴趣的可以一起来
项目资源均来自于互联网,如果有侵权请联系我
 
 #下载体验
猿匹配 小米商店 审核中
猿匹配 Google Play
 
  #项目截图

























  
 #开发环境
项目基本属于在最新的Android开发环境下开发,使用Java8的一些新特性,比如Lambda表达式,
然后项目已经适配Android6.x以上的动态权限适配,以及7.x的文件选择,和8.x的通知提醒等;
· Mac OS 10.14.4
· Android Studio 3.3.2
  #项目模块儿
本项目包含两部分:
一部分是项目主模块app,这部分主要包含了项目的业务逻辑,比如匹配、信息修改、设置等
另一部分是封装成library的vmim,这是为了方便大家引用到自己的项目中做的一步封装,不用再去复杂的复制代码和资源等,
只需要将vmim以module导入到自己的项目中就行了,具体使用方式参见项目app模块儿;
 
  #功能与 TODO
IM部分功能
· [x] 链接监听
· [x] 登录注册
· [x] 会话功能
      。[x] 置顶
      。[x] 标为未读
      。[x] 删除与清空
      。[x] 草稿功能
· [x] 消息功能
      。[x] 下拉加载更多
      。[x] 消息复制(仅文字类消息)
      。[x] 消息删除
      。[x] 文本+Emoji消息收发
      。[x] 大表情消息收发
      。[x] 图片消息
        ~[x] 查看大图
        ~[ ] 保存图片
      。[x] 语音消息
        ~[x] 语音录制
        ~[x] 语音播放(可暂停,波形待优化)
        ~[x] 听筒和扬声器播放切换
      。[x] 语音实时通话功能
      。[x] 视频实时通话功能
      。[x] 通话过程中的娱乐消息收发
        ~[x] 骰子
        ~[x] 石头剪刀布
        ~[x] 大表情
      。[x] 昵称头像处理(通过回调实现)
App部分功能
· [x] 登录注册(包括业务逻辑和 IM 逻辑)
· [x] 匹配
      。[x] 提交匹配信息
      。[x] 拉取匹配信息
· [x] 聊天(这里直接加载 IM 模块儿)
· [x] 我的
      。[x] 个人信息展示
      。[x] 上传头像
      。[x] 设置昵称
      。[x] 设置签名
· [x] 设置
      。[x] 个人信息设置
      。[x] 通知提醒
      。[x] 聊天
      。[ ] 隐私(随业务部分一起完善)
      。[ ] 通用(随业务部分一起完善)
      。[ ] 帮助反馈(随业务部分一起完善)
      。[x] 关于
      。[x] 退出
· [ ] 社区
      。[ ] 发布
      。[ ] 评论
      。[ ] 收藏
      。[ ] 关注
发布功能
· [x] 多渠道打包
· [x] 签名配置
· [x] 开发与线上环境配置
· [x] 敏感信息保护
 
  #配置运行
1.首先复制config.default.gradle到config.gradle
2.配置下config.gradle环信appkey以及bugly统计Id
3.正式打包需要配置下签名信息,同时将签名文件放置在项目根目录
 
  #参与贡献
如果你有什么好的想法,或者好的实现,可以通过下边的步骤参与进来,让我们一起把这个项目做得更好,欢迎参与
1.Fork本仓库
2.新建feature_xxx分支 (单独创建一个实现你自己想法的分支)
3.提交代码
4.新建Pull Request
5.等待我们的Review & Merge
 
 #关联项目
服务器端由nodejs实现,地址见这里 VMServer
 
  #VMServer
是为Android开源项目VMMatch项目(中文名猿匹配)实现的服务端
 
  #简介
这个项目包含两部分
· 根目录:服务逻辑及API接口实现
· client目录:前端界面,和服务器端代码端放置在同一仓库下(暂未实现)
 
 #使用
简单介绍下运行环境及部署方法
1.安装nodejs开发时使用的是v10.16.0版本
2.需要安装mongodb并启动,开发使用版本4.0.10
3.下载项目到服务器,可以下载压缩包,或者用git clone命令
4.复制config_default.js到config.js,可根据自己需要修改配置文件
5.安装依赖npm install
6.全局安装pm2npm install pm2 -g 
7.运行 vmshell.sh
 




扫码备注【开源项目】邀你加入环信开源社群
 
转载自https://blog.melove.net/develop-open-source-im-match-and-server/ 
  查看全部
#前言
近期,环信热心开发者-穿裤衩闯天下使用环信IM开发了一款实时聊天应用,包含简单的服务器端,现在正式开源给小伙伴们。感兴趣的同学可以一起搞一下哦,详细介绍请往下看。

猿匹配_logo_副本.png


  上代码
服务器:VMServer
客户端:VMMatch
 
 #VMMatch
猿匹配 —— 国内首个程序猿非严肃婚恋交友应用,让我们一言不合就来场匹配吧
 
#介绍#
首先说下中文名:为什么叫这个名字呢,因为这是一个程序猿(媛)之间匹配交流的应用啊其实这是一个使用环信 IM 开发的一款开源聊天项目,涵盖了时下流行的一些聊天元素,同时已将 IM 功能封装为单独库,可以直接引用,方便使用
项目还处在初期阶段,还有许多功能需要实现,有兴趣的可以一起来
项目资源均来自于互联网,如果有侵权请联系我
 
 #下载体验
猿匹配 小米商店 审核中
猿匹配 Google Play
 
  #项目截图

1.png

2.png

3.png

4.png

5.png

6.png

  
 #开发环境
项目基本属于在最新的Android开发环境下开发,使用Java8的一些新特性,比如Lambda表达式,
然后项目已经适配Android6.x以上的动态权限适配,以及7.x的文件选择,和8.x的通知提醒等;
· Mac OS 10.14.4
· Android Studio 3.3.2
  #项目模块儿
本项目包含两部分:
一部分是项目主模块app,这部分主要包含了项目的业务逻辑,比如匹配、信息修改、设置等
另一部分是封装成library的vmim,这是为了方便大家引用到自己的项目中做的一步封装,不用再去复杂的复制代码和资源等,
只需要将vmim以module导入到自己的项目中就行了,具体使用方式参见项目app模块儿;
 
  #功能与 TODO
IM部分功能
· [x] 链接监听
· [x] 登录注册
· [x] 会话功能
      。[x] 置顶
      。[x] 标为未读
      。[x] 删除与清空
      。[x] 草稿功能
· [x] 消息功能
      。[x] 下拉加载更多
      。[x] 消息复制(仅文字类消息)
      。[x] 消息删除
      。[x] 文本+Emoji消息收发
      。[x] 大表情消息收发
      。[x] 图片消息
        ~[x] 查看大图
        ~[ ] 保存图片
      。[x] 语音消息
        ~[x] 语音录制
        ~[x] 语音播放(可暂停,波形待优化)
        ~[x] 听筒和扬声器播放切换
      。[x] 语音实时通话功能
      。[x] 视频实时通话功能
      。[x] 通话过程中的娱乐消息收发
        ~[x] 骰子
        ~[x] 石头剪刀布
        ~[x] 大表情
      。[x] 昵称头像处理(通过回调实现)
App部分功能
· [x] 登录注册(包括业务逻辑和 IM 逻辑)
· [x] 匹配
      。[x] 提交匹配信息
      。[x] 拉取匹配信息
· [x] 聊天(这里直接加载 IM 模块儿)
· [x] 我的
      。[x] 个人信息展示
      。[x] 上传头像
      。[x] 设置昵称
      。[x] 设置签名
· [x] 设置
      。[x] 个人信息设置
      。[x] 通知提醒
      。[x] 聊天
      。[ ] 隐私(随业务部分一起完善)
      。[ ] 通用(随业务部分一起完善)
      。[ ] 帮助反馈(随业务部分一起完善)
      。[x] 关于
      。[x] 退出
· [ ] 社区
      。[ ] 发布
      。[ ] 评论
      。[ ] 收藏
      。[ ] 关注
发布功能
· [x] 多渠道打包
· [x] 签名配置
· [x] 开发与线上环境配置
· [x] 敏感信息保护
 
  #配置运行
1.首先复制config.default.gradle到config.gradle
2.配置下config.gradle环信appkey以及bugly统计Id
3.正式打包需要配置下签名信息,同时将签名文件放置在项目根目录
 
  #参与贡献
如果你有什么好的想法,或者好的实现,可以通过下边的步骤参与进来,让我们一起把这个项目做得更好,欢迎参与
1.Fork本仓库
2.新建feature_xxx分支 (单独创建一个实现你自己想法的分支)
3.提交代码
4.新建Pull Request
5.等待我们的Review & Merge
 
 #关联项目
服务器端由nodejs实现,地址见这里 VMServer
 
  #VMServer
是为Android开源项目VMMatch项目(中文名猿匹配)实现的服务端
 
  #简介
这个项目包含两部分
· 根目录:服务逻辑及API接口实现
· client目录:前端界面,和服务器端代码端放置在同一仓库下(暂未实现)
 
 #使用
简单介绍下运行环境及部署方法
1.安装nodejs开发时使用的是v10.16.0版本
2.需要安装mongodb并启动,开发使用版本4.0.10
3.下载项目到服务器,可以下载压缩包,或者用git clone命令
4.复制config_default.js到config.js,可根据自己需要修改配置文件
5.安装依赖
npm install

6.全局安装pm2
npm install pm2 -g
 
7.运行 vmshell.sh
 
环信冬冬_副本.jpg

扫码备注【开源项目】邀你加入环信开源社群
 
转载自https://blog.melove.net/develop-open-source-im-match-and-server/ 
 
4
评论

在微信小程序里实现聊天室 聊天室 小程序

Tolazy 发表了文章 • 2928 次浏览 • 2019-04-19 17:49 • 来自相关话题

第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
下载环信 小程序demo+sdkgit clone https://github.com/easemob/webim-weixin-xcx创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明



集成
登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改


在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用


修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室


然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉然后在roomlist.wxml 修改对应的 变量绑定名称





demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面


Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了





就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx 查看全部
第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
  1. 下载环信 小程序demo+sdk
    git clone https://github.com/easemob/webim-weixin-xcx
  2. 创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明
    ml.png

集成
  1. 登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改
    login.png
  2. 在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用
    tz.png
  3. 修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室
    getroom.png
    然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉
  4. 然后在roomlist.wxml 修改对应的 变量绑定名称
    listui.png
    list.png
  5. demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面
    joinrom.png
    Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧
  6. 到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了
    send.png
    chat.png
    就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx

4
评论

【开源项目】全国首个开源直播小程序源码

beyond 发表了文章 • 41754 次浏览 • 2018-07-20 17:30 • 来自相关话题

今天你看直播了吗?拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 





作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载


小程序直播demo_2018-06-21.zip







直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 




2、导入源码:将附件的源码解压直接导入 







环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]




填写对相关信息进行注册





注册成功后进行登录




注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用




输入应用名称等信息
 





创建成功后点击应用进入





需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量




3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Tokencurl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'返回格式{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址curl -X POST -H "Authorization: Bearer [管理员Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"成功返回格式:{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户





点击注册IM用户





填写用户信息





创建用户的过程同样也可以通过REST API形式进行curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'
注:应用必须为开放注册





将注册的用户添加为主播curl -X POST -H "Authorization: [管理员Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'返回结果示例:{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播





点击新建房间





填写房间信息




创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件





修改appkey为自己应用的appkey





打开pages/live/index.js修改房间默认拉流地址及直播间房间号





四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:curl -X GET -H "Authorization: Bearer [用户Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]
响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。 查看全部
今天你看直播了吗?
拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 
微信图片_20180725162426.jpg


作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载



预览图.jpg

直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 
Catch9A07(07-20-17-38-30).jpg

2、导入源码:将附件的源码解压直接导入 


Catch1C69(07-20-17-38-30).jpg


环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]
1.png

填写对相关信息进行注册

2.png

注册成功后进行登录
3.png

注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用
4.png

输入应用名称等信息
 

5.png

创建成功后点击应用进入

6.png

需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量
7.png

3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Token
curl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'
返回格式
{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址
curl -X POST -H "Authorization: Bearer [管理员Token]"  " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"
成功返回格式:
{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户

8.png

点击注册IM用户

9.png

填写用户信息

10.png

创建用户的过程同样也可以通过REST API形式进行
curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'

注:应用必须为开放注册

11.png

将注册的用户添加为主播
curl -X POST -H "Authorization: [管理员Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'
返回结果示例:
{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播

12.png

点击新建房间

13.png

填写房间信息
14.png

创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件

15.png

修改appkey为自己应用的appkey

16.png

打开pages/live/index.js修改房间默认拉流地址及直播间房间号

17.png

四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:
curl -X GET -H "Authorization: Bearer  [用户Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]

响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:
curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"
响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。
19
评论

【新手快速入门】集成环信常见问题+解决方案汇总

dujiepeng 发表了文章 • 22900 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
13
回复

收集基于环信SDK开发的开源项目 开源项目

xiaoyan2015 回复了问题 • 13 人关注 • 16629 次浏览 • 2019-03-14 13:52 • 来自相关话题

6
评论

【源码下载】一款使用环信实现的开源灵魂社交APP(含服务器) 猿匹配 开源

beyond 发表了文章 • 1335 次浏览 • 2019-07-01 10:48 • 来自相关话题

#前言
近期,环信热心开发者-穿裤衩闯天下使用环信IM开发了一款实时聊天应用,包含简单的服务器端,现在正式开源给小伙伴们。感兴趣的同学可以一起搞一下哦,详细介绍请往下看。






  上代码
服务器:VMServer
客户端:VMMatch
 
 #VMMatch
猿匹配 —— 国内首个程序猿非严肃婚恋交友应用,让我们一言不合就来场匹配吧
 
#介绍#
首先说下中文名:为什么叫这个名字呢,因为这是一个程序猿(媛)之间匹配交流的应用啊其实这是一个使用环信 IM 开发的一款开源聊天项目,涵盖了时下流行的一些聊天元素,同时已将 IM 功能封装为单独库,可以直接引用,方便使用
项目还处在初期阶段,还有许多功能需要实现,有兴趣的可以一起来
项目资源均来自于互联网,如果有侵权请联系我
 
 #下载体验
猿匹配 小米商店 审核中
猿匹配 Google Play
 
  #项目截图

























  
 #开发环境
项目基本属于在最新的Android开发环境下开发,使用Java8的一些新特性,比如Lambda表达式,
然后项目已经适配Android6.x以上的动态权限适配,以及7.x的文件选择,和8.x的通知提醒等;
· Mac OS 10.14.4
· Android Studio 3.3.2
  #项目模块儿
本项目包含两部分:
一部分是项目主模块app,这部分主要包含了项目的业务逻辑,比如匹配、信息修改、设置等
另一部分是封装成library的vmim,这是为了方便大家引用到自己的项目中做的一步封装,不用再去复杂的复制代码和资源等,
只需要将vmim以module导入到自己的项目中就行了,具体使用方式参见项目app模块儿;
 
  #功能与 TODO
IM部分功能
· [x] 链接监听
· [x] 登录注册
· [x] 会话功能
      。[x] 置顶
      。[x] 标为未读
      。[x] 删除与清空
      。[x] 草稿功能
· [x] 消息功能
      。[x] 下拉加载更多
      。[x] 消息复制(仅文字类消息)
      。[x] 消息删除
      。[x] 文本+Emoji消息收发
      。[x] 大表情消息收发
      。[x] 图片消息
        ~[x] 查看大图
        ~[ ] 保存图片
      。[x] 语音消息
        ~[x] 语音录制
        ~[x] 语音播放(可暂停,波形待优化)
        ~[x] 听筒和扬声器播放切换
      。[x] 语音实时通话功能
      。[x] 视频实时通话功能
      。[x] 通话过程中的娱乐消息收发
        ~[x] 骰子
        ~[x] 石头剪刀布
        ~[x] 大表情
      。[x] 昵称头像处理(通过回调实现)
App部分功能
· [x] 登录注册(包括业务逻辑和 IM 逻辑)
· [x] 匹配
      。[x] 提交匹配信息
      。[x] 拉取匹配信息
· [x] 聊天(这里直接加载 IM 模块儿)
· [x] 我的
      。[x] 个人信息展示
      。[x] 上传头像
      。[x] 设置昵称
      。[x] 设置签名
· [x] 设置
      。[x] 个人信息设置
      。[x] 通知提醒
      。[x] 聊天
      。[ ] 隐私(随业务部分一起完善)
      。[ ] 通用(随业务部分一起完善)
      。[ ] 帮助反馈(随业务部分一起完善)
      。[x] 关于
      。[x] 退出
· [ ] 社区
      。[ ] 发布
      。[ ] 评论
      。[ ] 收藏
      。[ ] 关注
发布功能
· [x] 多渠道打包
· [x] 签名配置
· [x] 开发与线上环境配置
· [x] 敏感信息保护
 
  #配置运行
1.首先复制config.default.gradle到config.gradle
2.配置下config.gradle环信appkey以及bugly统计Id
3.正式打包需要配置下签名信息,同时将签名文件放置在项目根目录
 
  #参与贡献
如果你有什么好的想法,或者好的实现,可以通过下边的步骤参与进来,让我们一起把这个项目做得更好,欢迎参与
1.Fork本仓库
2.新建feature_xxx分支 (单独创建一个实现你自己想法的分支)
3.提交代码
4.新建Pull Request
5.等待我们的Review & Merge
 
 #关联项目
服务器端由nodejs实现,地址见这里 VMServer
 
  #VMServer
是为Android开源项目VMMatch项目(中文名猿匹配)实现的服务端
 
  #简介
这个项目包含两部分
· 根目录:服务逻辑及API接口实现
· client目录:前端界面,和服务器端代码端放置在同一仓库下(暂未实现)
 
 #使用
简单介绍下运行环境及部署方法
1.安装nodejs开发时使用的是v10.16.0版本
2.需要安装mongodb并启动,开发使用版本4.0.10
3.下载项目到服务器,可以下载压缩包,或者用git clone命令
4.复制config_default.js到config.js,可根据自己需要修改配置文件
5.安装依赖npm install
6.全局安装pm2npm install pm2 -g 
7.运行 vmshell.sh
 




扫码备注【开源项目】邀你加入环信开源社群
 
转载自https://blog.melove.net/develop-open-source-im-match-and-server/ 
  查看全部
#前言
近期,环信热心开发者-穿裤衩闯天下使用环信IM开发了一款实时聊天应用,包含简单的服务器端,现在正式开源给小伙伴们。感兴趣的同学可以一起搞一下哦,详细介绍请往下看。

猿匹配_logo_副本.png


  上代码
服务器:VMServer
客户端:VMMatch
 
 #VMMatch
猿匹配 —— 国内首个程序猿非严肃婚恋交友应用,让我们一言不合就来场匹配吧
 
#介绍#
首先说下中文名:为什么叫这个名字呢,因为这是一个程序猿(媛)之间匹配交流的应用啊其实这是一个使用环信 IM 开发的一款开源聊天项目,涵盖了时下流行的一些聊天元素,同时已将 IM 功能封装为单独库,可以直接引用,方便使用
项目还处在初期阶段,还有许多功能需要实现,有兴趣的可以一起来
项目资源均来自于互联网,如果有侵权请联系我
 
 #下载体验
猿匹配 小米商店 审核中
猿匹配 Google Play
 
  #项目截图

1.png

2.png

3.png

4.png

5.png

6.png

  
 #开发环境
项目基本属于在最新的Android开发环境下开发,使用Java8的一些新特性,比如Lambda表达式,
然后项目已经适配Android6.x以上的动态权限适配,以及7.x的文件选择,和8.x的通知提醒等;
· Mac OS 10.14.4
· Android Studio 3.3.2
  #项目模块儿
本项目包含两部分:
一部分是项目主模块app,这部分主要包含了项目的业务逻辑,比如匹配、信息修改、设置等
另一部分是封装成library的vmim,这是为了方便大家引用到自己的项目中做的一步封装,不用再去复杂的复制代码和资源等,
只需要将vmim以module导入到自己的项目中就行了,具体使用方式参见项目app模块儿;
 
  #功能与 TODO
IM部分功能
· [x] 链接监听
· [x] 登录注册
· [x] 会话功能
      。[x] 置顶
      。[x] 标为未读
      。[x] 删除与清空
      。[x] 草稿功能
· [x] 消息功能
      。[x] 下拉加载更多
      。[x] 消息复制(仅文字类消息)
      。[x] 消息删除
      。[x] 文本+Emoji消息收发
      。[x] 大表情消息收发
      。[x] 图片消息
        ~[x] 查看大图
        ~[ ] 保存图片
      。[x] 语音消息
        ~[x] 语音录制
        ~[x] 语音播放(可暂停,波形待优化)
        ~[x] 听筒和扬声器播放切换
      。[x] 语音实时通话功能
      。[x] 视频实时通话功能
      。[x] 通话过程中的娱乐消息收发
        ~[x] 骰子
        ~[x] 石头剪刀布
        ~[x] 大表情
      。[x] 昵称头像处理(通过回调实现)
App部分功能
· [x] 登录注册(包括业务逻辑和 IM 逻辑)
· [x] 匹配
      。[x] 提交匹配信息
      。[x] 拉取匹配信息
· [x] 聊天(这里直接加载 IM 模块儿)
· [x] 我的
      。[x] 个人信息展示
      。[x] 上传头像
      。[x] 设置昵称
      。[x] 设置签名
· [x] 设置
      。[x] 个人信息设置
      。[x] 通知提醒
      。[x] 聊天
      。[ ] 隐私(随业务部分一起完善)
      。[ ] 通用(随业务部分一起完善)
      。[ ] 帮助反馈(随业务部分一起完善)
      。[x] 关于
      。[x] 退出
· [ ] 社区
      。[ ] 发布
      。[ ] 评论
      。[ ] 收藏
      。[ ] 关注
发布功能
· [x] 多渠道打包
· [x] 签名配置
· [x] 开发与线上环境配置
· [x] 敏感信息保护
 
  #配置运行
1.首先复制config.default.gradle到config.gradle
2.配置下config.gradle环信appkey以及bugly统计Id
3.正式打包需要配置下签名信息,同时将签名文件放置在项目根目录
 
  #参与贡献
如果你有什么好的想法,或者好的实现,可以通过下边的步骤参与进来,让我们一起把这个项目做得更好,欢迎参与
1.Fork本仓库
2.新建feature_xxx分支 (单独创建一个实现你自己想法的分支)
3.提交代码
4.新建Pull Request
5.等待我们的Review & Merge
 
 #关联项目
服务器端由nodejs实现,地址见这里 VMServer
 
  #VMServer
是为Android开源项目VMMatch项目(中文名猿匹配)实现的服务端
 
  #简介
这个项目包含两部分
· 根目录:服务逻辑及API接口实现
· client目录:前端界面,和服务器端代码端放置在同一仓库下(暂未实现)
 
 #使用
简单介绍下运行环境及部署方法
1.安装nodejs开发时使用的是v10.16.0版本
2.需要安装mongodb并启动,开发使用版本4.0.10
3.下载项目到服务器,可以下载压缩包,或者用git clone命令
4.复制config_default.js到config.js,可根据自己需要修改配置文件
5.安装依赖
npm install

6.全局安装pm2
npm install pm2 -g
 
7.运行 vmshell.sh
 
环信冬冬_副本.jpg

扫码备注【开源项目】邀你加入环信开源社群
 
转载自https://blog.melove.net/develop-open-source-im-match-and-server/ 
 
4
评论

在微信小程序里实现聊天室 聊天室 小程序

Tolazy 发表了文章 • 2928 次浏览 • 2019-04-19 17:49 • 来自相关话题

第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
下载环信 小程序demo+sdkgit clone https://github.com/easemob/webim-weixin-xcx创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明



集成
登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改


在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用


修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室


然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉然后在roomlist.wxml 修改对应的 变量绑定名称





demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面


Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了





就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx 查看全部
第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
  1. 下载环信 小程序demo+sdk
    git clone https://github.com/easemob/webim-weixin-xcx
  2. 创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明
    ml.png

集成
  1. 登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改
    login.png
  2. 在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用
    tz.png
  3. 修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室
    getroom.png
    然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉
  4. 然后在roomlist.wxml 修改对应的 变量绑定名称
    listui.png
    list.png
  5. demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面
    joinrom.png
    Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧
  6. 到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了
    send.png
    chat.png
    就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx

13
回复

收集基于环信SDK开发的开源项目 开源项目

回复

xiaoyan2015 回复了问题 • 13 人关注 • 16629 次浏览 • 2019-03-14 13:52 • 来自相关话题

4
评论

【开源项目】全国首个开源直播小程序源码

beyond 发表了文章 • 41754 次浏览 • 2018-07-20 17:30 • 来自相关话题

今天你看直播了吗?拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 





作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载


小程序直播demo_2018-06-21.zip







直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 




2、导入源码:将附件的源码解压直接导入 







环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]




填写对相关信息进行注册





注册成功后进行登录




注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用




输入应用名称等信息
 





创建成功后点击应用进入





需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量




3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Tokencurl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'返回格式{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址curl -X POST -H "Authorization: Bearer [管理员Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"成功返回格式:{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户





点击注册IM用户





填写用户信息





创建用户的过程同样也可以通过REST API形式进行curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'
注:应用必须为开放注册





将注册的用户添加为主播curl -X POST -H "Authorization: [管理员Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'返回结果示例:{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播





点击新建房间





填写房间信息




创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件





修改appkey为自己应用的appkey





打开pages/live/index.js修改房间默认拉流地址及直播间房间号





四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:curl -X GET -H "Authorization: Bearer [用户Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]
响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。 查看全部
今天你看直播了吗?
拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 
微信图片_20180725162426.jpg


作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载



预览图.jpg

直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 
Catch9A07(07-20-17-38-30).jpg

2、导入源码:将附件的源码解压直接导入 


Catch1C69(07-20-17-38-30).jpg


环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]
1.png

填写对相关信息进行注册

2.png

注册成功后进行登录
3.png

注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用
4.png

输入应用名称等信息
 

5.png

创建成功后点击应用进入

6.png

需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量
7.png

3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Token
curl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'
返回格式
{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址
curl -X POST -H "Authorization: Bearer [管理员Token]"  " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"
成功返回格式:
{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户

8.png

点击注册IM用户

9.png

填写用户信息

10.png

创建用户的过程同样也可以通过REST API形式进行
curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'

注:应用必须为开放注册

11.png

将注册的用户添加为主播
curl -X POST -H "Authorization: [管理员Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'
返回结果示例:
{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播

12.png

点击新建房间

13.png

填写房间信息
14.png

创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件

15.png

修改appkey为自己应用的appkey

16.png

打开pages/live/index.js修改房间默认拉流地址及直播间房间号

17.png

四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:
curl -X GET -H "Authorization: Bearer  [用户Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]

响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:
curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"
响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。
19
评论

【新手快速入门】集成环信常见问题+解决方案汇总

dujiepeng 发表了文章 • 22900 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
0
评论

IT部门信息化正确打开方式 工作流

涵涵有小虎牙 发表了文章 • 610 次浏览 • 2018-11-30 10:41 • 来自相关话题

面对大数据时代企业纷纷开始了信息化建设,成立IT部门。对一家企业来说信息是至关重要,如果你问老板每天最想看到得是什么,那一定是数据信息。

一个公司其核心是业务平台,如何提高公司的营业额就要提高业务平台的管理模式,资源不清晰、信息孤岛等这都是旧模式的弊端,信息化的目的是要使企业充分开发和有效利用信息资源,把握机会,做出正确决策,增进企业运行效率,最终提高企业的竞争力水平。其重要性体现在以下方面:

1、有效地降低企业成本

信息技术应用范围涉及整个企业的经济活动,可以有效地、大幅度地降低企业的费用。

2、促进组织结构优化,提高快速反应能力

而在信息技术的支持下,企业可以简化企业组织生产经营的方式,减少中间环节和中间管理人员,从而建立起精良、敏捷、具有创新精神的“扁平”型组织结构。

3、加快产品和技术的创新

现代信息技术与制造的结合所形成的各种企业信息技术,如计算机辅助设计、计算机辅助制造、计算机辅助工艺编制、柔性制造系统、敏捷制造、计算机集成制造系统等,实现了企业开发、设计、制造、营销及管理的高度集成化,极大地增强了企业生产的柔性、敏捷性和适应性。

4、提高企业的市场把握能力

信息技术的应用缩短了企业与消费者的距离,企业与供应商及客户建立起高效、快速的联系,从而提高了企业把握市场和消费者的能力,使企业能迅速根据消费者的需求变化有针对地进行研究与开发话动,及时改变和调整经营战略,不断向市场提供质量更好、品种更多、更适合消费者需求的产品和服务;

5、促进企业提高管理水平

企业信息化不只是计算机硬件本身,更为重要的是与管理的有机结合。即在信息化过程中引进的不仅是信息技术,而更多的是通过转变传统的管理观念,把先进的管理理念、企业管理制度和方法引入到管理流程中,进行管理创新。

6、提升企业人力资源素质

企业信息化,可以加速知识在企业中的传播,使企业领导至全体员工知识水平、信息意识与信息利用能力提高,提升了企业人力资源的素质及企业文化的环境。

7、提高企业决策的科学性、正确性

信息技术改变了企业获取信息、收集信息和传递信息的方式,使管理者对企业内部和外部信息的掌握更加完备、及时和准确。

面对企业信息化如此多的优势,许多IT部门却对信息化一筹莫展。信息化建设需要的是技术和流程,流程是不缺的而IT部门是企业一个边缘化的部门,不可能像软件公司那样有完整的团队,开发难度非常大。

还有就是借助快速开发平台,百度理解是:以某种编程语言或者某几种编程语言为基础,开发出来的一个软件,而这软件不是一个最终的软件产品,它是一个二次开发软件框架,用户可以在这个产品上进行各种各样的软件产品的开发,并且在这个产品上进行开发的时候,不需要像以往的编程方式那样编写大量的代码,而是只需要进行一些简单的配置,或者是写极少量的代码便可以完成一个业务系统的开发工作。比如力软快速开发平台的框架是被反复使用的,有着较高的安全性,它又是一套源码可以直接进行二次开发,所开发的系统有自主产权。

快速开发平台的性质非常适合IT部门,快速开发平台提供的基础框架技术恰恰是IT部门所欠缺的,一般框架已经实现大部分技术要求,而IT部门所要做的就是实现业务要求了。 查看全部


面对大数据时代企业纷纷开始了信息化建设,成立IT部门。对一家企业来说信息是至关重要,如果你问老板每天最想看到得是什么,那一定是数据信息。

一个公司其核心是业务平台,如何提高公司的营业额就要提高业务平台的管理模式,资源不清晰、信息孤岛等这都是旧模式的弊端,信息化的目的是要使企业充分开发和有效利用信息资源,把握机会,做出正确决策,增进企业运行效率,最终提高企业的竞争力水平。其重要性体现在以下方面:

1、有效地降低企业成本

信息技术应用范围涉及整个企业的经济活动,可以有效地、大幅度地降低企业的费用。

2、促进组织结构优化,提高快速反应能力

而在信息技术的支持下,企业可以简化企业组织生产经营的方式,减少中间环节和中间管理人员,从而建立起精良、敏捷、具有创新精神的“扁平”型组织结构。

3、加快产品和技术的创新

现代信息技术与制造的结合所形成的各种企业信息技术,如计算机辅助设计、计算机辅助制造、计算机辅助工艺编制、柔性制造系统、敏捷制造、计算机集成制造系统等,实现了企业开发、设计、制造、营销及管理的高度集成化,极大地增强了企业生产的柔性、敏捷性和适应性。

4、提高企业的市场把握能力

信息技术的应用缩短了企业与消费者的距离,企业与供应商及客户建立起高效、快速的联系,从而提高了企业把握市场和消费者的能力,使企业能迅速根据消费者的需求变化有针对地进行研究与开发话动,及时改变和调整经营战略,不断向市场提供质量更好、品种更多、更适合消费者需求的产品和服务;

5、促进企业提高管理水平

企业信息化不只是计算机硬件本身,更为重要的是与管理的有机结合。即在信息化过程中引进的不仅是信息技术,而更多的是通过转变传统的管理观念,把先进的管理理念、企业管理制度和方法引入到管理流程中,进行管理创新。

6、提升企业人力资源素质

企业信息化,可以加速知识在企业中的传播,使企业领导至全体员工知识水平、信息意识与信息利用能力提高,提升了企业人力资源的素质及企业文化的环境。

7、提高企业决策的科学性、正确性

信息技术改变了企业获取信息、收集信息和传递信息的方式,使管理者对企业内部和外部信息的掌握更加完备、及时和准确。

面对企业信息化如此多的优势,许多IT部门却对信息化一筹莫展。信息化建设需要的是技术和流程,流程是不缺的而IT部门是企业一个边缘化的部门,不可能像软件公司那样有完整的团队,开发难度非常大。

还有就是借助快速开发平台,百度理解是:以某种编程语言或者某几种编程语言为基础,开发出来的一个软件,而这软件不是一个最终的软件产品,它是一个二次开发软件框架,用户可以在这个产品上进行各种各样的软件产品的开发,并且在这个产品上进行开发的时候,不需要像以往的编程方式那样编写大量的代码,而是只需要进行一些简单的配置,或者是写极少量的代码便可以完成一个业务系统的开发工作。比如力软快速开发平台的框架是被反复使用的,有着较高的安全性,它又是一套源码可以直接进行二次开发,所开发的系统有自主产权。

快速开发平台的性质非常适合IT部门,快速开发平台提供的基础框架技术恰恰是IT部门所欠缺的,一般框架已经实现大部分技术要求,而IT部门所要做的就是实现业务要求了。
2
评论

关乎企业成败:软件应用系统选择要慎重 工作流

涵涵有小虎牙 发表了文章 • 568 次浏览 • 2018-11-27 11:46 • 来自相关话题

进入互联网时代以来,企业的信息化建设也逐步进入了繁荣期,但是面对市场上纷繁多样的应用软件,选择便显得很重要了。

在企业市场的争夺中,软件开发的商场竞争也在不断升级,无数的软件公司倒下,又有更多年轻的公司崛起。

面对市场上参差不齐的开发公司,选择时必须要小心谨慎,因为如果不慎选择了不规范的外包公司或者技术能力有限的公司,不仅会让资金打水漂,更有可能打乱产品上线规划,造成公司的严重损失,所以说软件开发必须要筛选正规的软件公司,避免后期的使用风险。

那么具体来说风险会有哪些呢?
1. 产品质量问题

产品质量是一个老生常谈的问题,不仅仅是软件开发,其他产品莫不如此,相信被劣质产品坑过朋友不在少数,个中滋味恐怕只有自己能体会了。

而在软件开发行业,不规范的开发团队技术水平一定不会高到哪里去,开发流程简陋,虽然价格上有优势,但团队内部可能流程混乱,一人身兼数职,没有一个严格的项目管控流程,后期的使用过程中出现问题,想解决都找不到门路。这是因为不规范的开发团队,公司管理上也会出现一定的问题,留不住高技术人才,所以通常不具备开发高技术含量软件的实力。而且在项目实施的过程中很可能会出现为了节省成本导致实际的的交付结果与前期需求不符的情况,推延工期,甚至影响甲方产品上线规划,造成更大的资源损失。
2.安全隐患

企业信息安全是一个很严肃的问题,不成熟的技术软件在多变的互联网环境下很难保持稳定,产品bug很多,交付上线之后需要花费很长的时间去调试,严重影响到用户体验,而这种体验的而可怕之处在于会有导致平台用户的流失的风险,因为目前那么多的市场应用已经让用户挑花眼,体验不佳,哪怕是加载不够流畅都可能会导致用户放弃使用,得不偿失。

以公司主要产品learun为例,这是一个敏捷开发框架,主要帮助用户快速开发OA、ERP、CRM、移动app、电商后台等应用系统,仅前期开发就占据了十几名.net程序员半年多的时间,后期的测试等项目加在一起,足足一年的时间才完成1.0版本,但是后期的客户交付就很少出现问题,反馈最多的是让增加一些比较个性化的拓展功能,到现在为止9年时间,已经成功升级至7.0版本,口碑及使用者数量也在稳步提升,所以软件开发做好基本功是非常重要的。
3.售后问题

这个可能使用过的人最有感触,试想一下,一个不规范的开发团队,连技术都很难保证,服务也不可能好到哪里去,通常这类公司只能提供一次性售后服务,且不说这个售后是否便捷,售后不及时甚至推脱售后的也常有出现,最终买卖双方形成拉锯,既耽误开发时间,又耽误用户的业务进展。 查看全部

进入互联网时代以来,企业的信息化建设也逐步进入了繁荣期,但是面对市场上纷繁多样的应用软件,选择便显得很重要了。

在企业市场的争夺中,软件开发的商场竞争也在不断升级,无数的软件公司倒下,又有更多年轻的公司崛起。

面对市场上参差不齐的开发公司,选择时必须要小心谨慎,因为如果不慎选择了不规范的外包公司或者技术能力有限的公司,不仅会让资金打水漂,更有可能打乱产品上线规划,造成公司的严重损失,所以说软件开发必须要筛选正规的软件公司,避免后期的使用风险。

那么具体来说风险会有哪些呢?
1. 产品质量问题

产品质量是一个老生常谈的问题,不仅仅是软件开发,其他产品莫不如此,相信被劣质产品坑过朋友不在少数,个中滋味恐怕只有自己能体会了。

而在软件开发行业,不规范的开发团队技术水平一定不会高到哪里去,开发流程简陋,虽然价格上有优势,但团队内部可能流程混乱,一人身兼数职,没有一个严格的项目管控流程,后期的使用过程中出现问题,想解决都找不到门路。这是因为不规范的开发团队,公司管理上也会出现一定的问题,留不住高技术人才,所以通常不具备开发高技术含量软件的实力。而且在项目实施的过程中很可能会出现为了节省成本导致实际的的交付结果与前期需求不符的情况,推延工期,甚至影响甲方产品上线规划,造成更大的资源损失。
2.安全隐患

企业信息安全是一个很严肃的问题,不成熟的技术软件在多变的互联网环境下很难保持稳定,产品bug很多,交付上线之后需要花费很长的时间去调试,严重影响到用户体验,而这种体验的而可怕之处在于会有导致平台用户的流失的风险,因为目前那么多的市场应用已经让用户挑花眼,体验不佳,哪怕是加载不够流畅都可能会导致用户放弃使用,得不偿失。

以公司主要产品learun为例,这是一个敏捷开发框架,主要帮助用户快速开发OA、ERP、CRM、移动app、电商后台等应用系统,仅前期开发就占据了十几名.net程序员半年多的时间,后期的测试等项目加在一起,足足一年的时间才完成1.0版本,但是后期的客户交付就很少出现问题,反馈最多的是让增加一些比较个性化的拓展功能,到现在为止9年时间,已经成功升级至7.0版本,口碑及使用者数量也在稳步提升,所以软件开发做好基本功是非常重要的。
3.售后问题

这个可能使用过的人最有感触,试想一下,一个不规范的开发团队,连技术都很难保证,服务也不可能好到哪里去,通常这类公司只能提供一次性售后服务,且不说这个售后是否便捷,售后不及时甚至推脱售后的也常有出现,最终买卖双方形成拉锯,既耽误开发时间,又耽误用户的业务进展。
1
评论

asp.net强大后台:learun混合工作流框架规范 工作流

涵涵有小虎牙 发表了文章 • 605 次浏览 • 2018-11-22 15:29 • 来自相关话题

以前,我们对标准工作流进行过简单梳理,今天,我们再来看一下混合工作流。

了解混合工作流,我们必须要先分清角色、内容、流程之间的关系——即角色与内容是挂在流程节点上的功能点。在实际操作中,我们需要将流程节点控制好,再将不同的角色,以及对应的操作内容挂靠上去即可,这样一来是可以方便理清关系,另外也可以使系统更有层次。
控制好非标准流程节点,可以由以下几个方面着手。

1.如果流程配置者有配置SQL的能力,那么将数据库流程配置权限开放,让配置者自行配置,这样的开发工作压力会小一些。

2.画流程图的方式。一个流程的执行可以通过流程图来表现,对于产品经理来说是再熟悉不过了。通过流程图的基本逻辑,可以将流程中遇到的各种情况可视化的展示出来,条理清晰而且操作简单。缺点即开发难度过大,一般小团队难以胜任。

3.通过一一配置功能来进行配置,这种方式虽然表面上看起来十分的繁琐,但是相对于前两种来说开发难度小,且对于配置者的能力要求不高。

具体来说,要单独配置每一项功能的流程,先确定流程的主流程有几个节点,如果碰到判断的节点选择是,碰到并发流程或执行的节点选择最长的一个流程。确定之后,将所有节点的内容操作与角色配置出来,然后再配置该节点是否进行判断,是否进行或操作,是否进行与操作。

如果有判断操作时,则分出一个子流程,再将子流程按照上述方式进行配置,最终归于主流程的某一个节点。如果有与操作时,要确定配置与操作的分支节点时是要配置在单个节点还是多个节点。

单个节点的话则需满足这两个节点才往下进行,多个节点时则将这几个节点作为一个小流程单独按照上述方式进行配置再合并至主流程,看是否满足与行为。

如果有或操作判断时,同样要确定在哪个节点的或操作至哪个节点可以进行另外的节点流转。

以上这些情况对于开发团队来说也是一个巨大的考验,因为不同的工作流程代表着不同权限的操作,不同状态的流转,而可定制化的流程则代表着其中的变化无穷,对于服务器的压力,数据库的冗余情况都不容乐观。

那么,如何设计高效的混合工作流呢?

设计一个后台压力小,操作简单的高效混合工作流,可以有两种方式。

第一:将非标准工作流拆分成多个标准工作流。

第二:开辟独立与配置权限之外的工作流角色模块。

1. 将混合工作流拆分成多个标准工作流

一个非标准工作流固然麻烦,可是在大多数的情况下,其可以拆分为几个标准工作流。比如,某个非标准工作流可以线性拆分为多个分支流程,并发流程与执行、并发流程或执行。

将其每一个组合到一起,即可形成完整的工作流,那么我们就可以在系统中提供组合模板,让配置者可以进行选择,组合到一起形成一个非标准工作流。

如果是非线性的,比如可能为分支套分支,并发套并发的情况,我们可以将每一种情况都拆分成一个工作流,然后将生产端入口保持统一,每一步的不同操作可以进入不同的工作流,最终流转的出口保持一致即可。有点类似于开发中设计模式的工厂模式。

2. 开辟独立与配置权限之外的工作流角色模块

一般来说,我们在配置工作流角色的时候,都是使用类似权限控制的角色,比如到这个节点角色为库管,另一个节点角色为商管。其实换个角度想想,再说设计工作流的时候,完全可以设计一个独立于权限之外只配置工作流的角色。

比如“分支节点角色1号”“流程角色1号”“并发或角色2号”,然后再通过穷举法,将所需要用到的使用流程都列出来,把角色放置于节点上。

这样,一个活的需要配置的流程就变成了一个个的死流程。

再将这些角色赋予权限角色。再定义一些规则:比如若没有配置此节点的角色则此节点默认通过,将某个工作流角色配置两个权限角色则为或操作/与操作。这样也就解决了上述的问题。
工作流可以说是后台系统中比较复杂的一部分。即便某些系统中一开始没有工作流,随着系统功能的增加,也不可避免会用到工作流,所以提前了解下工作流的设计方法,对于产品来说很有帮助,在开始设计的阶段也可以考虑将内容设计进去以免后期维护成本过大。

官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm 查看全部


以前,我们对标准工作流进行过简单梳理,今天,我们再来看一下混合工作流。

了解混合工作流,我们必须要先分清角色、内容、流程之间的关系——即角色与内容是挂在流程节点上的功能点。在实际操作中,我们需要将流程节点控制好,再将不同的角色,以及对应的操作内容挂靠上去即可,这样一来是可以方便理清关系,另外也可以使系统更有层次。
控制好非标准流程节点,可以由以下几个方面着手。

1.如果流程配置者有配置SQL的能力,那么将数据库流程配置权限开放,让配置者自行配置,这样的开发工作压力会小一些。

2.画流程图的方式。一个流程的执行可以通过流程图来表现,对于产品经理来说是再熟悉不过了。通过流程图的基本逻辑,可以将流程中遇到的各种情况可视化的展示出来,条理清晰而且操作简单。缺点即开发难度过大,一般小团队难以胜任。

3.通过一一配置功能来进行配置,这种方式虽然表面上看起来十分的繁琐,但是相对于前两种来说开发难度小,且对于配置者的能力要求不高。

具体来说,要单独配置每一项功能的流程,先确定流程的主流程有几个节点,如果碰到判断的节点选择是,碰到并发流程或执行的节点选择最长的一个流程。确定之后,将所有节点的内容操作与角色配置出来,然后再配置该节点是否进行判断,是否进行或操作,是否进行与操作。

如果有判断操作时,则分出一个子流程,再将子流程按照上述方式进行配置,最终归于主流程的某一个节点。如果有与操作时,要确定配置与操作的分支节点时是要配置在单个节点还是多个节点。

单个节点的话则需满足这两个节点才往下进行,多个节点时则将这几个节点作为一个小流程单独按照上述方式进行配置再合并至主流程,看是否满足与行为。

如果有或操作判断时,同样要确定在哪个节点的或操作至哪个节点可以进行另外的节点流转。

以上这些情况对于开发团队来说也是一个巨大的考验,因为不同的工作流程代表着不同权限的操作,不同状态的流转,而可定制化的流程则代表着其中的变化无穷,对于服务器的压力,数据库的冗余情况都不容乐观。

那么,如何设计高效的混合工作流呢?

设计一个后台压力小,操作简单的高效混合工作流,可以有两种方式。

第一:将非标准工作流拆分成多个标准工作流。

第二:开辟独立与配置权限之外的工作流角色模块。

1. 将混合工作流拆分成多个标准工作流

一个非标准工作流固然麻烦,可是在大多数的情况下,其可以拆分为几个标准工作流。比如,某个非标准工作流可以线性拆分为多个分支流程,并发流程与执行、并发流程或执行。

将其每一个组合到一起,即可形成完整的工作流,那么我们就可以在系统中提供组合模板,让配置者可以进行选择,组合到一起形成一个非标准工作流。

如果是非线性的,比如可能为分支套分支,并发套并发的情况,我们可以将每一种情况都拆分成一个工作流,然后将生产端入口保持统一,每一步的不同操作可以进入不同的工作流,最终流转的出口保持一致即可。有点类似于开发中设计模式的工厂模式。

2. 开辟独立与配置权限之外的工作流角色模块

一般来说,我们在配置工作流角色的时候,都是使用类似权限控制的角色,比如到这个节点角色为库管,另一个节点角色为商管。其实换个角度想想,再说设计工作流的时候,完全可以设计一个独立于权限之外只配置工作流的角色。

比如“分支节点角色1号”“流程角色1号”“并发或角色2号”,然后再通过穷举法,将所需要用到的使用流程都列出来,把角色放置于节点上。

这样,一个活的需要配置的流程就变成了一个个的死流程。

再将这些角色赋予权限角色。再定义一些规则:比如若没有配置此节点的角色则此节点默认通过,将某个工作流角色配置两个权限角色则为或操作/与操作。这样也就解决了上述的问题。
工作流可以说是后台系统中比较复杂的一部分。即便某些系统中一开始没有工作流,随着系统功能的增加,也不可避免会用到工作流,所以提前了解下工作流的设计方法,对于产品来说很有帮助,在开始设计的阶段也可以考虑将内容设计进去以免后期维护成本过大。

官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm
1
评论

企业内部应用的核心与灵魂:工作流管理系统 工作流

涵涵有小虎牙 发表了文章 • 569 次浏览 • 2018-11-20 20:59 • 来自相关话题

工作流是企业内部系统的核心和灵魂,而审批则是工作流中的最基础的应用场景。在公司管理和运转中引入审批工作流,替代原本的纸质申请和审批,以期提高公司的运转效率公司管理制度规范化系统留档,便于追溯环保。
总结了在企业在实际业务中需求,根据客户反馈,构建出一套敏捷开发框架--learun。Learun可以保证在团队的开发过程中高效协作,同时覆盖OA工作流、ERP、CRM、HRM、MIS、BI、移动APP、电商后台等多项应用系统的配置,大幅节省开发成本,提升开发效率。更详细的可以在网站www.learun.cn体验。

一. 角色

在一个公司中,每个人都会有自己的岗位职责和层级之分,不同的岗位和层级定位不一样,需要完成的任务也不一样。在审批流程中,我们只抽象划分为两类:

角色1:发起人

审批的发起人需要完成的主要是事务性、操作性的工作,同时也是一个审批流程的Owner,是最关心审批进展的人。因此在发起人的角度,在创建完审批事项后,还需要完善相关信息、催促审批人及时审批、处理驳回修改意见、重新提交等。发起人角度设计的要点总结如下:

兼容统一发起入口和业务场景触发常用的审批事项要方便找到有统一汇总的审批管理页面

角色2:审批人

审批人在流程中需要完成的主要是决策性的工作,因此在审批人的视角,内容和操作都应该尽量精简:

只看到最重要的信息,避免信息过多影响判断只进行必要操作,不能有过多选择或过多输入,影响决策效率统一的页面进行审批操作和管理需要有审批历史,以便追溯

二. 内容

1. 提炼最小集合

根据审批事项的不同,需要流转的内容也是不同的。对于审批流程的设计来说,需要在实际业务中提炼出最核心的内容,一则可以减轻发起人的工作负担(发起一个审批要填一堆的资料相信没人会开心),二则可以提高决策的准确性和效率。

例如一个请假审批流程,核心就是请假时间、事由和请假类型;而一个立项投决的审批,则需要重点展示立项会的表决结果,同时还需要把会议记录做为附件带上,以便在必要时可以查看,在交互上,这里同样需要注意内容的归类、收纳。

设计要点总结如下:

内容尽可能精炼有些内容是必要的,但系统可以自行获取就不要让发起人再输入一遍预置常用的内容,用选择的方式替代输入的方式,同时也提高了内容的规范性

2. 查看和修改

在审批的过程中,有时候需要让不同的审批人查看不同的内容,且限定有些人有修改权限而有些人只有只读权限,这都会在后面的“权限”里总结。

三. 流程

1. 自主选定审批人流程

这是一种比较轻量、灵活的审批流程形式,适用于公司规模不大、流程没有标准化的情况。要点是发起人发起一个审批事项并提交时,需要自行选择下一个环节的审批人。而下一个环节的审批人审批通过后,可以选择继续流转到再下一个人去审批,或者结束这个流程。

2. 串行流程

串行流程就是每一个审批环节的人审批通过后,才会进入到下一个环节。每个环节的驳回,可以根据业务需要,设计成驳回到发起人、驳回到上一个环节或驳回到指定环节重新审批,或兼而有之,做为选项供审批人选择。
3. 并行流程

并行流程是一个审批环节需要几个人或角色审批通过才算通过,可以有以下两种方式:

任意一个人审批通过即进入下一环节必须所有人审批通过才进入下一环节

上述第一个方式比较好理解,第二个方式和串行流程容易混淆,即同样是要多个人审批,到底是一个接一个、还是同时通过才算通过?到底用哪种方式,区别是审批人是不是同一个级别,并行的方式其实类似于同级别的会签,而串行方式适合有上下层级关系的情况。

并行流程的驳回则相对简单,一般是设计成有一个人驳回则该环节即算驳回。
4. 条件触发流程

条件触发流程在审批工作流中也比较常见,设计上就是某个审批环节要由谁/或哪个角色审批,需要取决于条件判断。例如金额低于1万元由财务总监审批通过后即结束,金额在1万元以上则由副总裁审批通过后即结束。
5. 混合流程

混合流程顾名思义就是混合了以上几种流程,还是以上述金额审批为例,我们修改成:金额低于1万元的,由财务审批通过后即结束;金额在1万元到10万元的,需要先由财务审批,之后交由副总裁审批通过后即结束;金额高于10万元的,需要由董事长和总裁一同审批通过后才结束。
四. 动作

1. 通过

通过动作由审批人操作,是否需要输入通过原因、通过原因是否必填需要根据实际业务情况决定。要点总结如下:

简单申请不需要填写通过原因,或者原因选填通过原因需要填的话,可用于反馈或激励发起人的情况

2. 驳回修改

驳回修改动作由审批人操作,和通过不同,为了让发起人知道如何修改,驳回原因一般需要设定成必填项,否则发起人或上一个审批环节的人不知道为何被驳回、以及要如何修改。

驳回修改可根据业务需要,在以下逻辑中选择:

驳回到发起人驳回上一环节驳回到选定的之前的某个审批环节

3. 重新提交

重新提交由发起人操作,和驳回修改是一一对应的。设计上要注意,审批人审批重新提交的内容时,需要附带上一次驳回修改的原因。

4. 取消

取消动作可选,一般来说是发起人取消,而不是审批人取消,原因如下:

审批人只关心一个审批事务过来后,判断并决策是通过还是驳回取消和驳回含义容易混淆,区分不开

在设计上,我们还可以做到发起人是否可取消可由配置项进行配置。

五. 权限

权限的控制贯穿在审批流程的方方面面,上述的角色、内容、流程和动作都会涉及到权限的控制。权限体系的设计是一个大工程,在审批流程中,采用基于角色的访问控制体系(RBAC)是一个不错的选择:

“基于角色的访问控制体系,包括用户、角色、目标、操作、许可权五个基本数据元素,每个角色至少具备一个权限,每个用户至少扮演一个角色,可以对完全不同的角色分配完全相同的访问权限,用户和角色是多对多的关系。”

设计要点总结如下:

操作和许可权内容,可区分为功能权限和数据权限什么人可以发起什么审批,由功能权限控制什么人/角色在整个审批流程中可见什么数据,由数据权限控制什么人/角色可以审批什么环节,由独立的审批配置控制,下一节会进行阐述

关于权限可以参考笔者另一个篇文章:面向中小企业SaaS的权限管理系统

六. 配置和扩展性

审批工作流的配置灵活度和开发复杂度成反比,具体要灵活到什么程度,需要由业务需求决定。一般针对公司开发的中后台系统,灵活性相对较少,而面向多个公司的商业化的系统,则灵活性要求大大提高。配置的灵活性体现在以下方面:

审批流程的类型可修改具体的审批环节可增删改各个环节审批人/角色可配置审批相关的权限可变更

七. 效率

工作流的核心目标是提高企业运行效率,如果线上审批流程效率还不如原来的纸质操作,那这个流程的设计就是失败的,也失去了意义。因此,在完成整个审批流程的设计之后,我们还需要花大精力对流程的效率进行审视和优化。对于审批流程效率的提升,总结的经验点如下:

审批的操作尽可能精简,且操作含义明确只要求输入必要的表单待审批事项及时通知到审批人审批进展及时通知发起人发起人可选择主动催促审批人做好下一步操作的引导

总结

审批流程是中后台工作流的基础应用,我们在设计的过程中,把握的核心要点是“提高效率,规范管理”,在设计过程中要时时回头审视,以免脱离了这个最重要的目标。

免费演示地址:http://www.learun.cn/Home/VerificationForm 查看全部

工作流是企业内部系统的核心和灵魂,而审批则是工作流中的最基础的应用场景。在公司管理和运转中引入审批工作流,替代原本的纸质申请和审批,以期提高公司的运转效率公司管理制度规范化系统留档,便于追溯环保。
总结了在企业在实际业务中需求,根据客户反馈,构建出一套敏捷开发框架--learun。Learun可以保证在团队的开发过程中高效协作,同时覆盖OA工作流、ERP、CRM、HRM、MIS、BI、移动APP、电商后台等多项应用系统的配置,大幅节省开发成本,提升开发效率。更详细的可以在网站www.learun.cn体验。

一. 角色

在一个公司中,每个人都会有自己的岗位职责和层级之分,不同的岗位和层级定位不一样,需要完成的任务也不一样。在审批流程中,我们只抽象划分为两类:

角色1:发起人

审批的发起人需要完成的主要是事务性、操作性的工作,同时也是一个审批流程的Owner,是最关心审批进展的人。因此在发起人的角度,在创建完审批事项后,还需要完善相关信息、催促审批人及时审批、处理驳回修改意见、重新提交等。发起人角度设计的要点总结如下:

兼容统一发起入口和业务场景触发常用的审批事项要方便找到有统一汇总的审批管理页面

角色2:审批人

审批人在流程中需要完成的主要是决策性的工作,因此在审批人的视角,内容和操作都应该尽量精简:

只看到最重要的信息,避免信息过多影响判断只进行必要操作,不能有过多选择或过多输入,影响决策效率统一的页面进行审批操作和管理需要有审批历史,以便追溯

二. 内容

1. 提炼最小集合

根据审批事项的不同,需要流转的内容也是不同的。对于审批流程的设计来说,需要在实际业务中提炼出最核心的内容,一则可以减轻发起人的工作负担(发起一个审批要填一堆的资料相信没人会开心),二则可以提高决策的准确性和效率。

例如一个请假审批流程,核心就是请假时间、事由和请假类型;而一个立项投决的审批,则需要重点展示立项会的表决结果,同时还需要把会议记录做为附件带上,以便在必要时可以查看,在交互上,这里同样需要注意内容的归类、收纳。

设计要点总结如下:

内容尽可能精炼有些内容是必要的,但系统可以自行获取就不要让发起人再输入一遍预置常用的内容,用选择的方式替代输入的方式,同时也提高了内容的规范性

2. 查看和修改

在审批的过程中,有时候需要让不同的审批人查看不同的内容,且限定有些人有修改权限而有些人只有只读权限,这都会在后面的“权限”里总结。

三. 流程

1. 自主选定审批人流程

这是一种比较轻量、灵活的审批流程形式,适用于公司规模不大、流程没有标准化的情况。要点是发起人发起一个审批事项并提交时,需要自行选择下一个环节的审批人。而下一个环节的审批人审批通过后,可以选择继续流转到再下一个人去审批,或者结束这个流程。

2. 串行流程

串行流程就是每一个审批环节的人审批通过后,才会进入到下一个环节。每个环节的驳回,可以根据业务需要,设计成驳回到发起人、驳回到上一个环节或驳回到指定环节重新审批,或兼而有之,做为选项供审批人选择。
3. 并行流程

并行流程是一个审批环节需要几个人或角色审批通过才算通过,可以有以下两种方式:

任意一个人审批通过即进入下一环节必须所有人审批通过才进入下一环节

上述第一个方式比较好理解,第二个方式和串行流程容易混淆,即同样是要多个人审批,到底是一个接一个、还是同时通过才算通过?到底用哪种方式,区别是审批人是不是同一个级别,并行的方式其实类似于同级别的会签,而串行方式适合有上下层级关系的情况。

并行流程的驳回则相对简单,一般是设计成有一个人驳回则该环节即算驳回。
4. 条件触发流程

条件触发流程在审批工作流中也比较常见,设计上就是某个审批环节要由谁/或哪个角色审批,需要取决于条件判断。例如金额低于1万元由财务总监审批通过后即结束,金额在1万元以上则由副总裁审批通过后即结束。
5. 混合流程

混合流程顾名思义就是混合了以上几种流程,还是以上述金额审批为例,我们修改成:金额低于1万元的,由财务审批通过后即结束;金额在1万元到10万元的,需要先由财务审批,之后交由副总裁审批通过后即结束;金额高于10万元的,需要由董事长和总裁一同审批通过后才结束。
四. 动作

1. 通过

通过动作由审批人操作,是否需要输入通过原因、通过原因是否必填需要根据实际业务情况决定。要点总结如下:

简单申请不需要填写通过原因,或者原因选填通过原因需要填的话,可用于反馈或激励发起人的情况

2. 驳回修改

驳回修改动作由审批人操作,和通过不同,为了让发起人知道如何修改,驳回原因一般需要设定成必填项,否则发起人或上一个审批环节的人不知道为何被驳回、以及要如何修改。

驳回修改可根据业务需要,在以下逻辑中选择:

驳回到发起人驳回上一环节驳回到选定的之前的某个审批环节

3. 重新提交

重新提交由发起人操作,和驳回修改是一一对应的。设计上要注意,审批人审批重新提交的内容时,需要附带上一次驳回修改的原因。

4. 取消

取消动作可选,一般来说是发起人取消,而不是审批人取消,原因如下:

审批人只关心一个审批事务过来后,判断并决策是通过还是驳回取消和驳回含义容易混淆,区分不开

在设计上,我们还可以做到发起人是否可取消可由配置项进行配置。

五. 权限

权限的控制贯穿在审批流程的方方面面,上述的角色、内容、流程和动作都会涉及到权限的控制。权限体系的设计是一个大工程,在审批流程中,采用基于角色的访问控制体系(RBAC)是一个不错的选择:

“基于角色的访问控制体系,包括用户、角色、目标、操作、许可权五个基本数据元素,每个角色至少具备一个权限,每个用户至少扮演一个角色,可以对完全不同的角色分配完全相同的访问权限,用户和角色是多对多的关系。”

设计要点总结如下:

操作和许可权内容,可区分为功能权限和数据权限什么人可以发起什么审批,由功能权限控制什么人/角色在整个审批流程中可见什么数据,由数据权限控制什么人/角色可以审批什么环节,由独立的审批配置控制,下一节会进行阐述

关于权限可以参考笔者另一个篇文章:面向中小企业SaaS的权限管理系统

六. 配置和扩展性

审批工作流的配置灵活度和开发复杂度成反比,具体要灵活到什么程度,需要由业务需求决定。一般针对公司开发的中后台系统,灵活性相对较少,而面向多个公司的商业化的系统,则灵活性要求大大提高。配置的灵活性体现在以下方面:

审批流程的类型可修改具体的审批环节可增删改各个环节审批人/角色可配置审批相关的权限可变更

七. 效率

工作流的核心目标是提高企业运行效率,如果线上审批流程效率还不如原来的纸质操作,那这个流程的设计就是失败的,也失去了意义。因此,在完成整个审批流程的设计之后,我们还需要花大精力对流程的效率进行审视和优化。对于审批流程效率的提升,总结的经验点如下:

审批的操作尽可能精简,且操作含义明确只要求输入必要的表单待审批事项及时通知到审批人审批进展及时通知发起人发起人可选择主动催促审批人做好下一步操作的引导

总结

审批流程是中后台工作流的基础应用,我们在设计的过程中,把握的核心要点是“提高效率,规范管理”,在设计过程中要时时回头审视,以免脱离了这个最重要的目标。

免费演示地址:http://www.learun.cn/Home/VerificationForm
1
评论

这是一个悲伤的程序员爱情故事 工作流

涵涵有小虎牙 发表了文章 • 741 次浏览 • 2018-11-16 16:06 • 来自相关话题

        程序员的爱情,少了点浪漫,多了点bug。
        小马,科班出身,毕业后顺利进入了一家软件开发公司,可能天生就是干程序员的料,沉默寡言,但是遇到程序难题乐于钻研,誓死不休,人称拼命三郎,同事都觉得这个称呼太长,后来便逐步简化为“三郎”了。

        这家伙有一个怪癖,每次解决一个难题,总会对着电脑哈哈傻笑,把身边的人吓得一咯噔。刚开始大家都以为他脑子有问题,久而久之也就习惯了。

       幸福来得太突然,有一天,公司来了一位女程序员,乍一看,没有一点程序猿的样子,长发飘飘,一副大边框的眼睛里藏着一双美丽的大眼睛,连走路的风都带着阵阵清香。

        她被安排在了三郎身边,微笑着向三郎问好,随意但气质不减。但是就是这个简单的动作,让三郎不知所措,连刚才需要解决的bug都抛到九霄云外了。



        俗话说,近水楼台先得月,美女是刚毕业的小妹,工作中难免有许多问题需要问三郎,三郎也总是有求必应,很快帮她解决。美女进步很快,为了答谢三郎,决定请三郎吃个饭。这个不争气的家伙,有点怕,叫上了同事。

       饭桌上,几乎是美女一个在说话,或者说是美女在审问他,她问一句,他答一句。但三郎也是个男人,也有男人都有的想法,但却没有男子汉应该有的勇气,一直红着脸低头吃饭。最后忍不住想看她一眼,却差点噎着了。

      生活又在平淡中过了半年,一个晚上,他依然一个人在办公室里加班。突然她给她打了个电话,她说她喝多了,让他去接她。

      他见到她的时候,她是撑到了极限。如果他晚点到,她可能就睡地上了。

       她刚问完她的地址,她就醉倒了。她吃力的扶着她上了出租车,这也许是他第一次能如此近距离的和美女接触,能如此近距离的味着长发的味道。他费了好大的劲终于把她弄到了屋里,他自己也累得倒在了她边上。房间很静,他能听到她的心跳,能感受到她呼吸的空气撞到他脸上……。









他感觉自己心跳的频率比处理线上支付系统的Bug跳得还要快,他想尝试靠近她一点。就在这时,她吐了出来,弄得两个人一身污垢。

他给自己和她简单擦了一下,然后他拿出了电脑继续写代码。本来三天的工作量,他一个晚上就写完了,效率高得连他自己都不敢相信。

第二天她醒后,连连说谢谢。她说她和男友分手了,心情不好,然后自己跑出去喝酒了,要不是他还真不知道会发生什么事。

这以后,他工作总是心不在焉了。终于有一天,公司上了一个新项目,做一个通用敏捷开发框架,项目命名为“learun”(现在已经成为公司最赚钱的项目了),三郎和美女一起调到了这个项目,美女毕竟经验不丰富,在一个OA组件的构建上遇到了难题,要三郎帮他解决。他连续三天加班到凌晨,顺利帮她完成,而且在代码的注释里,表达了对她的喜欢,这是三郎能想到的最好的方式了。可是天不遂人愿,正好那天美女有事,直接便把这个模块提交了,上线后便没有改过。
        多少天,他一直希望那些地方再出一个bug,让她重新再看到她写给她的心里话。不过,他等了几个月,发现她和之前没什么区别,后来三郎就离职了,50%的工资涨幅都没能留住他。

       接下来的几年里,三郎又换了几家公司。

       今年,他到一家大公司面式的时候,最后的技术总监问他干技术这么多年,最让他揪心的事是什么。

      把他的这个故事和面试官说了。

     最后面试官问他这女孩子到现在有没有联系过你。

     他摇了摇头。

     面试官说了一句,你被录用了,这么多年,那女孩子都没有联系你,说明你写的代码很稳定。 查看全部


        程序员的爱情,少了点浪漫,多了点bug。
        小马,科班出身,毕业后顺利进入了一家软件开发公司,可能天生就是干程序员的料,沉默寡言,但是遇到程序难题乐于钻研,誓死不休,人称拼命三郎,同事都觉得这个称呼太长,后来便逐步简化为“三郎”了。

        这家伙有一个怪癖,每次解决一个难题,总会对着电脑哈哈傻笑,把身边的人吓得一咯噔。刚开始大家都以为他脑子有问题,久而久之也就习惯了。

       幸福来得太突然,有一天,公司来了一位女程序员,乍一看,没有一点程序猿的样子,长发飘飘,一副大边框的眼睛里藏着一双美丽的大眼睛,连走路的风都带着阵阵清香。

        她被安排在了三郎身边,微笑着向三郎问好,随意但气质不减。但是就是这个简单的动作,让三郎不知所措,连刚才需要解决的bug都抛到九霄云外了。



        俗话说,近水楼台先得月,美女是刚毕业的小妹,工作中难免有许多问题需要问三郎,三郎也总是有求必应,很快帮她解决。美女进步很快,为了答谢三郎,决定请三郎吃个饭。这个不争气的家伙,有点怕,叫上了同事。

       饭桌上,几乎是美女一个在说话,或者说是美女在审问他,她问一句,他答一句。但三郎也是个男人,也有男人都有的想法,但却没有男子汉应该有的勇气,一直红着脸低头吃饭。最后忍不住想看她一眼,却差点噎着了。

      生活又在平淡中过了半年,一个晚上,他依然一个人在办公室里加班。突然她给她打了个电话,她说她喝多了,让他去接她。

      他见到她的时候,她是撑到了极限。如果他晚点到,她可能就睡地上了。

       她刚问完她的地址,她就醉倒了。她吃力的扶着她上了出租车,这也许是他第一次能如此近距离的和美女接触,能如此近距离的味着长发的味道。他费了好大的劲终于把她弄到了屋里,他自己也累得倒在了她边上。房间很静,他能听到她的心跳,能感受到她呼吸的空气撞到他脸上……。









他感觉自己心跳的频率比处理线上支付系统的Bug跳得还要快,他想尝试靠近她一点。就在这时,她吐了出来,弄得两个人一身污垢。

他给自己和她简单擦了一下,然后他拿出了电脑继续写代码。本来三天的工作量,他一个晚上就写完了,效率高得连他自己都不敢相信。

第二天她醒后,连连说谢谢。她说她和男友分手了,心情不好,然后自己跑出去喝酒了,要不是他还真不知道会发生什么事。

这以后,他工作总是心不在焉了。终于有一天,公司上了一个新项目,做一个通用敏捷开发框架,项目命名为“learun”(现在已经成为公司最赚钱的项目了),三郎和美女一起调到了这个项目,美女毕竟经验不丰富,在一个OA组件的构建上遇到了难题,要三郎帮他解决。他连续三天加班到凌晨,顺利帮她完成,而且在代码的注释里,表达了对她的喜欢,这是三郎能想到的最好的方式了。可是天不遂人愿,正好那天美女有事,直接便把这个模块提交了,上线后便没有改过。
        多少天,他一直希望那些地方再出一个bug,让她重新再看到她写给她的心里话。不过,他等了几个月,发现她和之前没什么区别,后来三郎就离职了,50%的工资涨幅都没能留住他。

       接下来的几年里,三郎又换了几家公司。

       今年,他到一家大公司面式的时候,最后的技术总监问他干技术这么多年,最让他揪心的事是什么。

      把他的这个故事和面试官说了。

     最后面试官问他这女孩子到现在有没有联系过你。

     他摇了摇头。

     面试官说了一句,你被录用了,这么多年,那女孩子都没有联系你,说明你写的代码很稳定。
1
评论

成功与失败取决于工作流 工作流

涵涵有小虎牙 发表了文章 • 583 次浏览 • 2018-11-14 21:49 • 来自相关话题

        记得有一家国内知名的国企,在2013年时整合了各个地区的集团分公司,销售公司都搬到一块儿地儿进行集中生产办公。按理说这是大好事,能集中精力专注产品质量,抓好各个研发、生产、销售环节。但由于各个分公司协调不到位,就导致了工作流程环节脱序、扯皮的事件发生。因此,国企的管理者就引进了一套工作流系统,以期能通过这个系统改进和优化整个集团公司的工作流程,让工作流程混乱的现象不再发生。想法虽好,但事与愿违。工作流系统让部分管理者头痛,审批处理环节丢失,导致生产、销售。节出了部分的问题,以致于企业的发展缓慢,原本打算5年上市计划也无法实现。
        工作流是企业成败的幕后推手?这个选择疑问句并不能简单的用“是”与“否”来回答,因为不同的企业、不同的软件时刻都会成为这个问题的变量,左右着即将揭晓的答案。

         有的管理软件(这里以OA为例)对工作流并不是很重视,流程偏传统,样式刻板;有的甚至是写死的,系统中存在什么样的工作流你就得用什么样的,完全没有照顾到企业间的差异性。这类的OA管理软件就显得不是很友好,而它给企业日常工作带来的麻烦还在远不止这些。这是管理软件自身的劣势给出的答案:否。当然也有正面的回答,譬如微宏协同办公管理系统就十分的专注工作流,各个环节的配置都由专人进行实施和维护,将建立强大的工作流引擎作为一项策略。而在目前看来,这个追求是正确的。
         而对企业来说,这个答案是取决于它对工作流的重视程度以及后期的选型。我们知道,对症下药绝对是每个企业都该遵循的规律,而工作流作为管理过程中不能缺少的重要成分,没有理由不被重视。企业要是能抓到这个痛点,想必不难回答上面提出的问题。

         第一,工作在一定程度确保了所执行活动的安全性。因为流程中的权限设置使得该项任务的执行过程只能由已经设定的负责人参与,其他不相关的人并不能进入。

         第二,领导随时可以查看工作进度,加强管控。每一个处理过程都会在系统中留下痕迹,也会显示不同的进度。领导正是通过这一丝丝的蛛丝马迹来对公司整体情况进行把控。

        第三,取代人工的传递方式,节约时间,提高工作效率。员工在完成自己负责的那一阶段时,工作任务便通过预定的流程自动传递到下一位负责人那里去,既保证了正确性,又减少了不必要的时间的浪费。
         第四,工作流也将企业的管理制度电子化,带来企业效益。工作流以及OA系统本身为企业建立的是一整套的制度,从人事到财务再到具体的每项任务如何执行,都是有其规则。作为领导者也能在企业内部发生变动时,轻轻松松的去更改这些设定好的内容以适应企业发展现状。

         第五、工作流系统的售后维护决定了企业能否与人事变动、业务流程、销售流程、采购流程、生产流程等变动相适应,以保证整个系统的正常运行。及时高效的处理工作流系统中的环节问题,就可以保障系统的正常运行。也就不会让管理层有所抱怨和无所适从。

        总而之言,必须让工作流系统能随时保障企业的生产、销售需求,工作流的好坏是由企业管理者决定的,充分维护和更新好工作流系统才能让企业更好更顺利的发展。因此,成败不由工作流决定,而是由企业决策者的“心”决定。态度决定成败,工作流也一样。
官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm 查看全部


        记得有一家国内知名的国企,在2013年时整合了各个地区的集团分公司,销售公司都搬到一块儿地儿进行集中生产办公。按理说这是大好事,能集中精力专注产品质量,抓好各个研发、生产、销售环节。但由于各个分公司协调不到位,就导致了工作流程环节脱序、扯皮的事件发生。因此,国企的管理者就引进了一套工作流系统,以期能通过这个系统改进和优化整个集团公司的工作流程,让工作流程混乱的现象不再发生。想法虽好,但事与愿违。工作流系统让部分管理者头痛,审批处理环节丢失,导致生产、销售。节出了部分的问题,以致于企业的发展缓慢,原本打算5年上市计划也无法实现。
        工作流是企业成败的幕后推手?这个选择疑问句并不能简单的用“是”与“否”来回答,因为不同的企业、不同的软件时刻都会成为这个问题的变量,左右着即将揭晓的答案。

         有的管理软件(这里以OA为例)对工作流并不是很重视,流程偏传统,样式刻板;有的甚至是写死的,系统中存在什么样的工作流你就得用什么样的,完全没有照顾到企业间的差异性。这类的OA管理软件就显得不是很友好,而它给企业日常工作带来的麻烦还在远不止这些。这是管理软件自身的劣势给出的答案:否。当然也有正面的回答,譬如微宏协同办公管理系统就十分的专注工作流,各个环节的配置都由专人进行实施和维护,将建立强大的工作流引擎作为一项策略。而在目前看来,这个追求是正确的。
         而对企业来说,这个答案是取决于它对工作流的重视程度以及后期的选型。我们知道,对症下药绝对是每个企业都该遵循的规律,而工作流作为管理过程中不能缺少的重要成分,没有理由不被重视。企业要是能抓到这个痛点,想必不难回答上面提出的问题。

         第一,工作在一定程度确保了所执行活动的安全性。因为流程中的权限设置使得该项任务的执行过程只能由已经设定的负责人参与,其他不相关的人并不能进入。

         第二,领导随时可以查看工作进度,加强管控。每一个处理过程都会在系统中留下痕迹,也会显示不同的进度。领导正是通过这一丝丝的蛛丝马迹来对公司整体情况进行把控。

        第三,取代人工的传递方式,节约时间,提高工作效率。员工在完成自己负责的那一阶段时,工作任务便通过预定的流程自动传递到下一位负责人那里去,既保证了正确性,又减少了不必要的时间的浪费。
         第四,工作流也将企业的管理制度电子化,带来企业效益。工作流以及OA系统本身为企业建立的是一整套的制度,从人事到财务再到具体的每项任务如何执行,都是有其规则。作为领导者也能在企业内部发生变动时,轻轻松松的去更改这些设定好的内容以适应企业发展现状。

         第五、工作流系统的售后维护决定了企业能否与人事变动、业务流程、销售流程、采购流程、生产流程等变动相适应,以保证整个系统的正常运行。及时高效的处理工作流系统中的环节问题,就可以保障系统的正常运行。也就不会让管理层有所抱怨和无所适从。

        总而之言,必须让工作流系统能随时保障企业的生产、销售需求,工作流的好坏是由企业管理者决定的,充分维护和更新好工作流系统才能让企业更好更顺利的发展。因此,成败不由工作流决定,而是由企业决策者的“心”决定。态度决定成败,工作流也一样。
官方:http://www.learun.cn/

免费体验地址:http://www.learun.cn/Home/VerificationForm
1
评论

力软敏捷开发框架工作流实现技术 工作流

涵涵有小虎牙 发表了文章 • 780 次浏览 • 2018-11-13 10:50 • 来自相关话题

         工作流管理联盟(WFMC)提出了一个工作流参考模型,约定了工作流系统的体系结构、应用接口及特性,主要目的是为了实现工作流技术的标准化和开放性。下面简要介绍系统中的各个部分,并对参考模型中的五类接口进行描述。

  1. 工作流管理系统中的各种数据

        工作流控制数据(Workflow Control Data)工作流执行服务/工作流机通过内部的工作流控制数据来辨别单个过程或活动实例的状态。这些数据由工作流执行服务/工作流机控制。用户、应用程序或其它的工作流机/工作流执行服务不能对其进行直接读写操作,它们可以通过向工作流执行服务/工作流机发送消息来获得工作流控制数据的内容。

        工作流相关数据(Workflow Relevant Data)工作流管理系统通过工作流相关数据来确定过程实例状态转换的条件,并选择下一个执行的活动。这些数据可以被工作流应用程序访问并修改。因此,工作流管理软件应该在活动实例之间传递工作流相关数据。

         工作流应用数据(Workflow Application Data)这种数据指那些由应用程序操作的数据。它们是针对应用程序的,工作流管理系统无法对它们进行访问。  

2. 工作流模型和工作流建模工具 

         工作流模型过程模型包含了工作流执行服务运行该过程的所有必需的信息,包括它启动和结束的条件、组成的活动、活动间导航的准则、参与其中的用户、需要激活的应用程序的指针、需要用到的工作流相关数据的定义等等。    

         在工作流的建模期间需要参考组织/角色模型来获得有关组织结构和组织内角色的信息。过程定义指定完成某项活动的组织实体或角色,而不是定义具体人员。工作流执行服务负责在工作流运行环境内将组织实体或角色映射为特定的人员。    

        工作流建模工具它主要用于分析、建模、描述并记录经营过程。它应输出一个能被工作流机动态解释的过程定义。不同的工作流产品其建模工具输出的格式是不同的,参考模型中的接口1不仅使工作流的定义阶段和运行阶段分离,使用户可以分别选择建模工具和执行产品,还可以使不同的工作流产品合作为一个过程定义的执行提供运行服务环境。    

         工作流管理联盟针对工作流建模做了两方面的工作:  (1) 建立了一个元模型(process meta model):它用于描述一个过程模型内各个对象、它们之间的关系及它们的属性,有利于多个工作流产品之间交换模型信息。  (2) 定义了一套可以在工作流管理系统之间及在管理系统与建模工具之间交互过程模型定义的API接口。  图1为工作流管理联盟定义的过程元模型。  

3. 工作流执行服务

        工作流执行服务由一个或多个工作流机组成(在分布环境下,由多个工作流机组成),提供了过程实例执行的运行环境,主要完成以下功能:  (1) 解释流程定义,生成过程实例,并管理其实施过程。  (2) 依据过程定义和工作流相关数据为过程实例的导航提供进入和退出的条件、并行或串行执行活动的信息、用户信息或所需激活的应用程序的信息等等。  (3) 与外部资源交互完成各项活动。 (4) 维护工作流控制数据和工作流相关数据(这些数据包括不同过程和活动实例的内部状态信息、工作流机用于协调和恢复的各种检查数据和恢复/重起信息等),并向用户传递必要的相关数据。    
      在分布式的工作流执行服务中,多个工作流机协调工作,推进工作流机实例的执行。每一个工作流机控制过程执行的一部分,并使用相关的资源和应用工具。这种执行服务需要共同的命名和管理范围,便于过程定义和用户/应用名称一致。分布式的工作流系统采用特定的协议来同步各工作流机,并传递相应的控制信息。在一个同构的工作流执行服务中这些协议是因厂家而异的。当选用不同的工作流系统产品时,各工作流机之间需要一个标准来进行转换。它应包括以下几个方面的内容:  (1) 一个共同的命名机制;  (2) 支持共同的过程定义对象和属性;  (3) 能够传递相应的工作流相关数据,并控制过程实例的生成;  (4) 能够在异构的工作流机间传递过程、子过程及活动;  (5) 支持共同的管理职能。

 4. 工作流机 

         工作流机是一个为工作流实例的执行提供运行环境的软件服务或“引擎”。它主要提供以下功能:  (1) 对过程定义进行解释;  (2) 控制过程实例的生成、激活、挂起、终止等;  (3) 控制活动实例间的转换,包括串行或并行操作、工作流相关数据的解释等;  (4) 支持用户操作的界面;  (5) 维护工作流控制数据和工作流相关数据,在应用或用户间传递工作流相关数据;  (6) 提供一用于激活外部应用程序和访问工作流相关数据的界面;  (7) 提供控制、管理和监督的功能。    

        工作流机的一个重要功能就是控制实例和活动实例的状态转换。工作流管理联盟的参考模型中为过程实例的运行状态和活动实例的状态进行了定义,并给出了状态转换的条件。图2和图3分别描述了过程实例和活动实例各个状态之间的转换。  过程实例包括以下几种运行状态:  初始(inactived):一个过程实例已经生成,但该过程实例并没有满足开始执行的条件;  准备运行(running):该过程实例已经开始执行,但是还不满足开始执行第一个活动并生成一个任务项的条件;       
        运行中(active):一个或多个活动已经开始执行(也就是已经生成一个工作项并分配给了合适的活动实例)  挂起(suspended):该过程实例正在运行,但处于静止状态,除非有一个“重启”的命令使该过程实例回到准备运行状态,否则所有的活动都不会执行;  结束(completed):该过程实例满足结束的条件,工作流管理系统将执行过程实例结束后的操作(如统计),并删除该过程实例;  终止(terminated):该过程实例在正常结束前被迫终止,工作流管理系统将执行补救措施,并删除该过程实例。    
        活动的运行状态包括:  未开始(inactive):该活动实例已经生成但还没有被激活(例如活动开始条件没有满足);  运行中(active):该活动实例已经被激活了;  挂起(suspended):该活动实例处于静止状态;  结束(completed):该活动已经执行完毕,工作流管理系统将进行活动结束后的导航工作,激活下一个符合启动条件的活动实例。

 5. 客户端应用 

        这种方式适合于需要人员参与的活动。这种情况下,工作流机通过任务项列表管理器来进行控制。工作流管理联盟提供了四种可能的通过任务项列表来实现工作流客户工作流机之间的通讯方式,如图4所示。其中一种支持集中式的结构,另外三种适合分布情况下的工作流系统。  (1) 基于主机方式的模型(Hust Based Model):这种方式适合于集中的情况。此时,客户端应用程序、任务项列表管理器、任务项列表和工作流机都列在中央的主服务器上,用户通过模拟一个终端用户来获得任务项列表;  (2) 共享的文件库模型(Shared Filestore Model):在这种情形下,客户应用程序和任务列表管理器位于用户的工作站上,而工作流位于中央服务器上。任务项列表位于一个客户应用和工作流机都能够达到的共享的文件系统中。  (3) 电子邮件模型(Electronic Mail Model):这里,客户应用和任务项列表管理器位于用户的工作站上,工作流机位于中央主机上。所有的通讯都使用电子邮件。此时,任务项列表一般位于客户端;  (4) 过程调用或信息传递模型(Procedure Callor Message Passing Model):这时,客户应用程序和任务项列表管理器位于用户的工作站上,任务项列表和工作流机位于服务器端。用户通过RPC或者其它的消息传递机制来获得任务项列表。     
 6. 由工作流机直接调用的应用程序 

         这种情况适合于不需要人员参与的活动。在简单的情况下,工作流机通过过程模型中定义的活动的信息、应用程序的类型和需要的数据来激活应用程序。被激活的应用程序可以和工作流机位于一台计算机上,可以位于相同的运行平台上,也可以位于网络可以到达的不同平台上。模型定义提供了有关应用程序的类型、地址等充分信息,便于工作流机激活该程序并执行相应的动作。  

 7. 工作流执行服务之间的互操作性

        工作流联盟的目标之一就是规定一个标准使得不同厂商提供的工作流产品能够协调工作,整个系统能够无缝地在各个产品之间传递任务项。工作流管理联盟在互操作性上的工作主要集中在提供了一系列互操作的情景,从简单的任务传递到传输整个工作流过程模型和工作流参考数据。尽管有可能考虑那些很复杂的情形(如不同厂商提供的工作流机共同协作实现工作流执行服务,这在目前还不可能实现,因为它要求所有的工作流机都能够解释过程模型,共享一套工作流控制数据,并在异构的工作流机环境下共享过程实例状态。)但就目前来说,比较切合实际的目标是在不同的工作流执行服务间传递过程的部分内容,支持其实例的运行。  

  8. 系统管理和监控工具

        该工具能够对工作流在整个组织内的流动状况进行监控,并提供一系列的管理功能,如有关安全性、对过程的控制和授权操作等方面的管理。主要功能包括以下几个方面:  (1) 建立、设置和优化组成工作流管理系统的各个软件;  (2) 对过程模型进行实例化;  (3) 将过程模型中的角色实例化;  (4) 将运行中的过程实例、活动实例和数据分发到各个工作流机中;  (5) 启动、挂起、恢复和终止过程实例;  (6) 管理正在执行的过程实例并对正常或异常退出的过程的历史数据进行统计和分析。  

 9. 工作流参考模型中的五类接口  

         工作流联盟给出了五类接口:  (1) 接口1:工作流服务和工作流建模工具;  (2) 接口2:工作流服务和客户应用之间的接口,这是最主要的接口规范,它约定所有客户方应用和工作流服务之间的功能访问方式;  (3) 接口3:工作流机和直接调用的应用程序之间的接口;  (4) 接口4:工作流管理系统之间的互操作接口;  (5) 接口5:工作流服务和工作流管理工具之间的接口。    其中,接口1为在不同物理或电子介质之间传递过程定义的信息提供了交互的形式和API调用;接口2定义了通信建立、工作流定义操作等功能;接口3激活应用程序的API函数应覆盖的几个方面的功能;接口4完成工作流执行服务之间需要提供大量的WAPI来实现互操作,无论是在两个工作流执行服务之间的直接调用还是通过网关函数;接口5主要实现对工作流的管理和监视。
官网:www.learun.cn

免费演示地址:http://www.learun.cn/Home/VerificationForm 查看全部


         工作流管理联盟(WFMC)提出了一个工作流参考模型,约定了工作流系统的体系结构、应用接口及特性,主要目的是为了实现工作流技术的标准化和开放性。下面简要介绍系统中的各个部分,并对参考模型中的五类接口进行描述。

  1. 工作流管理系统中的各种数据

        工作流控制数据(Workflow Control Data)工作流执行服务/工作流机通过内部的工作流控制数据来辨别单个过程或活动实例的状态。这些数据由工作流执行服务/工作流机控制。用户、应用程序或其它的工作流机/工作流执行服务不能对其进行直接读写操作,它们可以通过向工作流执行服务/工作流机发送消息来获得工作流控制数据的内容。

        工作流相关数据(Workflow Relevant Data)工作流管理系统通过工作流相关数据来确定过程实例状态转换的条件,并选择下一个执行的活动。这些数据可以被工作流应用程序访问并修改。因此,工作流管理软件应该在活动实例之间传递工作流相关数据。

         工作流应用数据(Workflow Application Data)这种数据指那些由应用程序操作的数据。它们是针对应用程序的,工作流管理系统无法对它们进行访问。  

2. 工作流模型和工作流建模工具 

         工作流模型过程模型包含了工作流执行服务运行该过程的所有必需的信息,包括它启动和结束的条件、组成的活动、活动间导航的准则、参与其中的用户、需要激活的应用程序的指针、需要用到的工作流相关数据的定义等等。    

         在工作流的建模期间需要参考组织/角色模型来获得有关组织结构和组织内角色的信息。过程定义指定完成某项活动的组织实体或角色,而不是定义具体人员。工作流执行服务负责在工作流运行环境内将组织实体或角色映射为特定的人员。    

        工作流建模工具它主要用于分析、建模、描述并记录经营过程。它应输出一个能被工作流机动态解释的过程定义。不同的工作流产品其建模工具输出的格式是不同的,参考模型中的接口1不仅使工作流的定义阶段和运行阶段分离,使用户可以分别选择建模工具和执行产品,还可以使不同的工作流产品合作为一个过程定义的执行提供运行服务环境。    

         工作流管理联盟针对工作流建模做了两方面的工作:  (1) 建立了一个元模型(process meta model):它用于描述一个过程模型内各个对象、它们之间的关系及它们的属性,有利于多个工作流产品之间交换模型信息。  (2) 定义了一套可以在工作流管理系统之间及在管理系统与建模工具之间交互过程模型定义的API接口。  图1为工作流管理联盟定义的过程元模型。  

3. 工作流执行服务

        工作流执行服务由一个或多个工作流机组成(在分布环境下,由多个工作流机组成),提供了过程实例执行的运行环境,主要完成以下功能:  (1) 解释流程定义,生成过程实例,并管理其实施过程。  (2) 依据过程定义和工作流相关数据为过程实例的导航提供进入和退出的条件、并行或串行执行活动的信息、用户信息或所需激活的应用程序的信息等等。  (3) 与外部资源交互完成各项活动。 (4) 维护工作流控制数据和工作流相关数据(这些数据包括不同过程和活动实例的内部状态信息、工作流机用于协调和恢复的各种检查数据和恢复/重起信息等),并向用户传递必要的相关数据。    
      在分布式的工作流执行服务中,多个工作流机协调工作,推进工作流机实例的执行。每一个工作流机控制过程执行的一部分,并使用相关的资源和应用工具。这种执行服务需要共同的命名和管理范围,便于过程定义和用户/应用名称一致。分布式的工作流系统采用特定的协议来同步各工作流机,并传递相应的控制信息。在一个同构的工作流执行服务中这些协议是因厂家而异的。当选用不同的工作流系统产品时,各工作流机之间需要一个标准来进行转换。它应包括以下几个方面的内容:  (1) 一个共同的命名机制;  (2) 支持共同的过程定义对象和属性;  (3) 能够传递相应的工作流相关数据,并控制过程实例的生成;  (4) 能够在异构的工作流机间传递过程、子过程及活动;  (5) 支持共同的管理职能。

 4. 工作流机 

         工作流机是一个为工作流实例的执行提供运行环境的软件服务或“引擎”。它主要提供以下功能:  (1) 对过程定义进行解释;  (2) 控制过程实例的生成、激活、挂起、终止等;  (3) 控制活动实例间的转换,包括串行或并行操作、工作流相关数据的解释等;  (4) 支持用户操作的界面;  (5) 维护工作流控制数据和工作流相关数据,在应用或用户间传递工作流相关数据;  (6) 提供一用于激活外部应用程序和访问工作流相关数据的界面;  (7) 提供控制、管理和监督的功能。    

        工作流机的一个重要功能就是控制实例和活动实例的状态转换。工作流管理联盟的参考模型中为过程实例的运行状态和活动实例的状态进行了定义,并给出了状态转换的条件。图2和图3分别描述了过程实例和活动实例各个状态之间的转换。  过程实例包括以下几种运行状态:  初始(inactived):一个过程实例已经生成,但该过程实例并没有满足开始执行的条件;  准备运行(running):该过程实例已经开始执行,但是还不满足开始执行第一个活动并生成一个任务项的条件;       
        运行中(active):一个或多个活动已经开始执行(也就是已经生成一个工作项并分配给了合适的活动实例)  挂起(suspended):该过程实例正在运行,但处于静止状态,除非有一个“重启”的命令使该过程实例回到准备运行状态,否则所有的活动都不会执行;  结束(completed):该过程实例满足结束的条件,工作流管理系统将执行过程实例结束后的操作(如统计),并删除该过程实例;  终止(terminated):该过程实例在正常结束前被迫终止,工作流管理系统将执行补救措施,并删除该过程实例。    
        活动的运行状态包括:  未开始(inactive):该活动实例已经生成但还没有被激活(例如活动开始条件没有满足);  运行中(active):该活动实例已经被激活了;  挂起(suspended):该活动实例处于静止状态;  结束(completed):该活动已经执行完毕,工作流管理系统将进行活动结束后的导航工作,激活下一个符合启动条件的活动实例。

 5. 客户端应用 

        这种方式适合于需要人员参与的活动。这种情况下,工作流机通过任务项列表管理器来进行控制。工作流管理联盟提供了四种可能的通过任务项列表来实现工作流客户工作流机之间的通讯方式,如图4所示。其中一种支持集中式的结构,另外三种适合分布情况下的工作流系统。  (1) 基于主机方式的模型(Hust Based Model):这种方式适合于集中的情况。此时,客户端应用程序、任务项列表管理器、任务项列表和工作流机都列在中央的主服务器上,用户通过模拟一个终端用户来获得任务项列表;  (2) 共享的文件库模型(Shared Filestore Model):在这种情形下,客户应用程序和任务列表管理器位于用户的工作站上,而工作流位于中央服务器上。任务项列表位于一个客户应用和工作流机都能够达到的共享的文件系统中。  (3) 电子邮件模型(Electronic Mail Model):这里,客户应用和任务项列表管理器位于用户的工作站上,工作流机位于中央主机上。所有的通讯都使用电子邮件。此时,任务项列表一般位于客户端;  (4) 过程调用或信息传递模型(Procedure Callor Message Passing Model):这时,客户应用程序和任务项列表管理器位于用户的工作站上,任务项列表和工作流机位于服务器端。用户通过RPC或者其它的消息传递机制来获得任务项列表。     
 6. 由工作流机直接调用的应用程序 

         这种情况适合于不需要人员参与的活动。在简单的情况下,工作流机通过过程模型中定义的活动的信息、应用程序的类型和需要的数据来激活应用程序。被激活的应用程序可以和工作流机位于一台计算机上,可以位于相同的运行平台上,也可以位于网络可以到达的不同平台上。模型定义提供了有关应用程序的类型、地址等充分信息,便于工作流机激活该程序并执行相应的动作。  

 7. 工作流执行服务之间的互操作性

        工作流联盟的目标之一就是规定一个标准使得不同厂商提供的工作流产品能够协调工作,整个系统能够无缝地在各个产品之间传递任务项。工作流管理联盟在互操作性上的工作主要集中在提供了一系列互操作的情景,从简单的任务传递到传输整个工作流过程模型和工作流参考数据。尽管有可能考虑那些很复杂的情形(如不同厂商提供的工作流机共同协作实现工作流执行服务,这在目前还不可能实现,因为它要求所有的工作流机都能够解释过程模型,共享一套工作流控制数据,并在异构的工作流机环境下共享过程实例状态。)但就目前来说,比较切合实际的目标是在不同的工作流执行服务间传递过程的部分内容,支持其实例的运行。  

  8. 系统管理和监控工具

        该工具能够对工作流在整个组织内的流动状况进行监控,并提供一系列的管理功能,如有关安全性、对过程的控制和授权操作等方面的管理。主要功能包括以下几个方面:  (1) 建立、设置和优化组成工作流管理系统的各个软件;  (2) 对过程模型进行实例化;  (3) 将过程模型中的角色实例化;  (4) 将运行中的过程实例、活动实例和数据分发到各个工作流机中;  (5) 启动、挂起、恢复和终止过程实例;  (6) 管理正在执行的过程实例并对正常或异常退出的过程的历史数据进行统计和分析。  

 9. 工作流参考模型中的五类接口  

         工作流联盟给出了五类接口:  (1) 接口1:工作流服务和工作流建模工具;  (2) 接口2:工作流服务和客户应用之间的接口,这是最主要的接口规范,它约定所有客户方应用和工作流服务之间的功能访问方式;  (3) 接口3:工作流机和直接调用的应用程序之间的接口;  (4) 接口4:工作流管理系统之间的互操作接口;  (5) 接口5:工作流服务和工作流管理工具之间的接口。    其中,接口1为在不同物理或电子介质之间传递过程定义的信息提供了交互的形式和API调用;接口2定义了通信建立、工作流定义操作等功能;接口3激活应用程序的API函数应覆盖的几个方面的功能;接口4完成工作流执行服务之间需要提供大量的WAPI来实现互操作,无论是在两个工作流执行服务之间的直接调用还是通过网关函数;接口5主要实现对工作流的管理和监视。
官网:www.learun.cn

免费演示地址:http://www.learun.cn/Home/VerificationForm