# 安装包下载地址
请点击以下链接获取最新版本的cxPMS系统安装包。
FlowPortal平台
cxPMS系统基于易正FlowPortal数字化平台构建,上述链接安装包不包含FlowPortal平台安装包。如需配套的FlowPortal平台安装包,请拨打400-998-6301联系。
# 服务器环境支持
cxPMS基于.NET Core技术开发,需要确保服务器已安装.NET Core Runtime。
.NET Core Runtime下载地址 (opens new window)
- 安装.NET Runtime
打开以上下载页面,根据服务器操作系统类型,选择对应的 .NET 运行时安装包下载并安装到服务器中。
- 安装ASP.NET Core Runtime
打开以上下载页面,根据服务器操作系统类型,选择对应的 ASP.NET Core 运行时安装包下载并安装到服务器中。
# FlowPortal版本兼容性
cxPMS可以基于最新的FlowPortal 8系列版本进行部署,也可以兼容FlowPortal 6系列的版本。
FlowPortal 8模式:对应的FlowPortal系统版本为8系列。
FlowPortal 6模式:对应的FlowPortal系统版本为6系列。
# 解压安装包
将cxPMS系统的安装包解压到任意目录。后续我们称这个目录为cxPMS程序目录。
# 初始化数据库
在cxPMS程序目录下找到DBCreate.sql文件,在数据库中执行DBCreate.sql以初始化相关数据库。
- CXSoftApp数据库为应用基础数据库
- cxPMS数据库为cxPMS项目管理系统数据库
数据库支持
当前版本暂时支持MSSQL数据库,MySQL等其他数据库陆续支持中。
# 初始化appsettings.json配置文件
- Urls
- cxPMS系统本地服务侦听地址,请根据自己的需求进行配置。
- 建议保留用
*
号表示服务器本身的表达方式,可以根据实际情况修改端口号即可。
- VirtualPath
- 当cxPMS系统部署在虚拟目录下时,需要将虚拟目录名称配置到此值。
- 例如:用nginx或其它方式,将cxPMS系统服务地址配置成FlowPortal Web网站的一个虚拟目录,如果最终的地址是https://flowportalweb.com/cxpms,则需要将“cxpms”配置到VirtualPath参数里。
- 当cxPMS系统部署在虚拟目录下时,需要将虚拟目录名称配置到此值。
- FlowPortal
- 当为FlowPortal 8模式时,设置FP6Mode为false。
- 当为FlowPortal 6模式时,设置FP6Mode为true。
- FlowPortalUrl属性值为对应的FlowPortal Web网站访问地址。
- 当为FlowPortal 8模式时,FlowPortalUrl的值应为最终用户浏览器可以访问到的FlowPortal Web网站地址。
- 当为FlowPortal 6模式时,FlowPortalUrl的值应为最终用户浏览器和cxPMS系统所在服务器都可以访问到的FlowPortal Web网站地址。
- 当用户收到的消息中的访问链接和FlowPortal Web网站访问地址不一样时,需要将cxGotoUrl设置为正确的访问链接地址。
- BPMServer
- 只有当为FlowPortal 8模式时,此节点有效。
- Address属性值为cxPMS系统所在服务器可以访问到的FlowPortal Server服务地址。
- ClientKey属性值和ClientSecret属性值需要和对应的FlowPortal 8系统Web端的appsettings.json里的BPMServer节点保持一致。
- Jwt
- 当为FlowPortal 8模式时,此节点下的属性和属性值需要和对应的FlowPortal 8系统Web端的appsettings.json里的Jwt节点一致。
- 当为FlowPortal 6模式时,则可以根据自己的需要修改属性值。
- AttachmentRootPath
- 请根据自己的情况配置附件保存的根路径。
- DBConnections
- 根据自己使用的数据库类型,从DefaultDB同层级的其他节点中选择数据库类型节点名称填入DefaultDB属性值。
- 根据自己的实际情况配置数据库CXSoftApp和数据库cxPMS的连接字符串。
# 添加FlowPortal一级菜单
# FlowPortal 8 系列
在FlowPortal 8 Web网站目录中打开Web\wwwroot\Workbench\FrontEndAbstract.js
文件。在if (modules.length == 0)
之前添加CXSoft注册代码即可,如下所示。
//CXSoft register
try {
Ext.Loader.loadScriptsSync('https://localhost:7014/api/register?access_token=' + YZSoft.jwt.token);
modules.unshift(CXSoft.getPMSModule());
} catch (e) {
var error = ['load CXSoft app fail, please contact admin.', '', e.message];
YZSoft.alert(error.join('<br />'));
}
//CXSoft register
if (modules.length == 0) {
window.location.replace(
Ext.String.urlAppend(YZSoft.$url('{0}/accessdenied',[YZSoft.startApp]), Ext.Object.toQueryString({}))
);
return;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
注意
代码url中开始的部分https://localhost:7014
应该修改为最终用户浏览器可以访问到的cxPMS服务地址。
# FlowPortal 6 系列
在Flowportal 6 Web网站目录中打开WEB\2020\src\BPMPortal.js
文件。在if (modules.length == 0)
之前添加CXSoft注册代码即可,如下所示。
//CXSoft register
try {
Ext.Loader.loadScriptsSync('https://localhost:7014/api/fp6register');
modules.unshift(CXSoft.getPMSModule());
} catch (e) {
var error = ['load CXSoft app fail, please contact admin.', '', e.message];
YZSoft.alert(error.join('<br />'));
}
//CXSoft register
if (modules.length == 0) {
window.location.replace(
Ext.String.urlAppend(YZSoft.$url('YZSoft/core/AccessDenied/App.aspx'), Ext.Object.toQueryString({
startApp: YZSoft.startApp,
appName: me.title
}))
);
return;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
注意
代码url中开始的部分https://localhost:7014
应该修改为最终用户浏览器可以访问到的cxPMS服务地址。
# FlowPortal 6 API支持
当为FlowPortal 6模式时,需要将cxPMS程序目录下FP6\CXSoft\ApiService.ashx
复制到FlowPortal 6的Web目录下,复制后的文件路径应为WEB\CXSoft\ApiService.ashx
。
# 启动系统
双击cxPMS程序目录下CXSoftApp.exe或者在命令行下执行CXSoftApp.exe即可。
# 访问系统
打开浏览器,在地址栏中输入FlowPortal的Web访问地址,输入FlowPortal账号密码登入即可。
# 初始化cxPMS系统数据
# 管理员安全组
在FlowPortal系统中创建安全组cxPMS_Admin
,此安全组中的成员则会是cxPMS系统的管理员,拥有cxPMS系统的最高权限。
# 系统设置
使用cxPMS系统管理员账号登入FlowPortal系统,进入cxPMS系统界面,点击页面左下角的系统设置
,配置相关系统数据。
# 建议反馈
有任何建议或反馈,可直接点击cxPMS系统页面左下角的建议反馈
提交。
# 防火墙设置
为了体验到完整的产品服务,cxPMS系统使用了以下外部服务,请设置相关防火墙策略以允许cxPMS系统所在的服务器可以访问以下Url。
建议反馈和新版本检测等功能,开放访问以
https://update.szcxsoft.com/api
开头的Url。如有启用企业微信消息,则需要开放访问以
https://qyapi.weixin.qq.com
开头的Url。如有启用钉钉消息,则需要开放访问以
https://api.dingtalk.com
和https://oapi.dingtalk.com
开头的Url。如有启用钉钉消息,则需要开放访问以
https://open.feishu.cn
开头的Url。
# nginx设置
如果cxPMS系统所在的服务器在nginx后端,则需要在nginx里做如下配置。
proxy_buffering off;
proxy_set_header Scheme $scheme;
proxy_set_header Host $http_host;
2
3
# 消息提醒
# 企业微信
发送企业微信消息需要用户公司申请自己的企业微信服务,请按照以下步骤完成企业微信后台配置。
# 登录/注册企业微信服务
打开浏览器,访问企业微信官方网站 (opens new window),点击右上角【企业登录】,以管理员身份登录企业微信后台。如果还未注册的,请按照企业微信网站提示为公司完成注册流程。
# 创建应用
- 进入公司的企业微信后台,切换到【应用管理】页面。点击【自建】区域里的【创建应用】按钮。
- 上传应用logo,填写应用名称和应用介绍,将可见范围设置为全公司,再点击【创建应用】。
- 进入刚才创建的应用界面,在【开发者接口】区域,完成【网页授权及JS-SDK】里的可信域名验证和【企业可信IP】配置。
# 配置CorpId、AgentId和AppSecret
cxPMS系统后台配置文件中需要这几个数据:
- CorpId在企业微信后台的【我的企业】-【企业信息】页面的最下方。
- AgentId和AppSecret在上面创建的应用界面。
# 防火墙设置
cxPMS系统需要访问企业微信接口发送消息,请按照安装指南里的防火墙设置配置公司网络防火墙。
# 移动电话
cxPMS系统需要用FlowPortal账号上的【移动电话】来向企业微信接口查询用户的企业微信UserId,所以请确保用户FlowPortal账号上维护的【移动电话】和用户企业微信里【手机】是一致的。
# 钉钉
发送钉钉消息需要用户公司申请自己的钉钉服务,请按照以下步骤完成钉钉后台配置。
# 登录/注册钉钉服务
打开浏览器,访问钉钉官方网站 (opens new window),点击右上角【登录】,以管理员身份登录钉钉后台。如果还未注册的,请按照钉钉网站提示为公司完成注册流程。
# 创建应用
- 进入公司的钉钉后台,切换到【工作台】【应用管理】页面。点击右上角的【创建应用】按钮。
- 类型选择【H5微应用】,填写应用名称和应用描述,上传应用图标,开发方式选择【企业自主开发】,再点击【确定创建】。
- 进入刚才创建的应用界面,切换到【基础信息】【权限管理】页面,在左下角权限列表里选择【通讯录管理】,找到【根据手机号姓名获取成员信息的接口访问权限】,点击右侧的【申请权限】,根据提示完成权限申请流程。
# 配置AgentId、AppKey和AppSecret
cxPMS系统后台配置文件中需要这几个数据:
- AgentId、AppKey和AppSecret在上面创建的应用界面。
# 防火墙设置
cxPMS系统需要访问钉钉接口发送消息,请按照安装指南里的防火墙设置配置公司网络防火墙。
# 移动电话
cxPMS系统需要用FlowPortal账号上的【移动电话】来向钉钉接口查询用户的钉钉UserId,所以请确保用户FlowPortal账号上维护的【移动电话】和用户钉钉里【手机号】是一致的。
# 飞书
发送飞书消息需要用户公司申请自己的飞书服务,请按照以下步骤完成飞书后台配置。
# 登录/注册飞书服务
打开浏览器,访问飞书开放平台官方网站 (opens new window),点击右上角【登录】,以管理员身份登录飞书开放平台后台。如果还未注册的,请按照飞书开放平台网站提示为公司完成注册流程。
# 创建应用
- 进入公司的飞书开放平台后台,点击右上角的【开发者后台】,点击【创建企业自建应用】按钮。
- 填写应用名称和应用描述,再点击【创建】。
- 进入刚才创建的应用界面,选择左侧菜单的【添加应用能力】,选择右侧的【机器人】卡片里的【添加】。
- 选择左侧菜单的【权限管理】,在右侧的权限列表里选择【通讯录】,找到【通过手机号或邮箱获取用户 ID】,点击右侧的【开通权限】。
- 在权限列表里选择【消息与群组】,找到【以应用的身份发消息】,点击右侧的【开通权限】。
- 选择左侧菜单的【版本管理与发布】,打开刚才创建的应用,填写【版本号】【更新说明】和【可见范围】,最后点击【保存】。
- 请飞书平台企业管理员登录到飞书管理后台,进入【工作台】【应用审核】,对刚才提交的应用进行审核。
# 配置AppId和AppSecret
cxPMS系统后台配置文件中需要这几个数据:
- AppId和AppSecret在上面创建的应用界面。
# 防火墙设置
cxPMS系统需要访问飞书接口发送消息,请按照安装指南里的防火墙设置配置公司网络防火墙。
# 移动电话
cxPMS系统需要用FlowPortal账号上的【移动电话】来向飞书接口查询用户的飞书OpenId,所以请确保用户FlowPortal账号上维护的【移动电话】和用户飞书里【手机号】是一致的。
项目库 →