# 安装包下载地址

请点击以下链接获取最新版本的cxPMS系统安装包。

点击下载 (opens new window)

FlowPortal平台

cxPMS系统基于易正FlowPortal数字化平台构建,上述链接安装包不包含FlowPortal平台安装包。如需配套的FlowPortal平台安装包,请拨打400-998-6301联系。

# 服务器环境支持

cxPMS基于.NET Core技术开发,需要确保服务器已安装.NET Core Runtime。

.NET Core Runtime下载地址 (opens new window)

  1. 安装.NET Runtime

打开以上下载页面,根据服务器操作系统类型,选择对应的 .NET 运行时安装包下载并安装到服务器中。

  1. 安装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参数里。
  • 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;
}
1
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;
}
1
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.comhttps://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;
1
2
3

# 消息提醒

# 企业微信

发送企业微信消息需要用户公司申请自己的企业微信服务,请按照以下步骤完成企业微信后台配置。

# 登录/注册企业微信服务

打开浏览器,访问企业微信官方网站 (opens new window),点击右上角【企业登录】,以管理员身份登录企业微信后台。如果还未注册的,请按照企业微信网站提示为公司完成注册流程。

# 创建应用

  • 进入公司的企业微信后台,切换到【应用管理】页面。点击【自建】区域里的【创建应用】按钮。

Alt text

  • 上传应用logo,填写应用名称和应用介绍,将可见范围设置为全公司,再点击【创建应用】。
  • 进入刚才创建的应用界面,在【开发者接口】区域,完成【网页授权及JS-SDK】里的可信域名验证和【企业可信IP】配置。

# 配置CorpId、AgentId和AppSecret

cxPMS系统后台配置文件中需要这几个数据:

  • CorpId在企业微信后台的【我的企业】-【企业信息】页面的最下方。

Alt text

  • AgentId和AppSecret在上面创建的应用界面。

Alt text

# 防火墙设置

cxPMS系统需要访问企业微信接口发送消息,请按照安装指南里的防火墙设置配置公司网络防火墙。

# 移动电话

cxPMS系统需要用FlowPortal账号上的【移动电话】来向企业微信接口查询用户的企业微信UserId,所以请确保用户FlowPortal账号上维护的【移动电话】和用户企业微信里【手机】是一致的。

# 钉钉

发送钉钉消息需要用户公司申请自己的钉钉服务,请按照以下步骤完成钉钉后台配置。

# 登录/注册钉钉服务

打开浏览器,访问钉钉官方网站 (opens new window),点击右上角【登录】,以管理员身份登录钉钉后台。如果还未注册的,请按照钉钉网站提示为公司完成注册流程。

# 创建应用

  • 进入公司的钉钉后台,切换到【工作台】【应用管理】页面。点击右上角的【创建应用】按钮。

Alt text

Alt text

Alt text

  • 类型选择【H5微应用】,填写应用名称和应用描述,上传应用图标,开发方式选择【企业自主开发】,再点击【确定创建】。
  • 进入刚才创建的应用界面,切换到【基础信息】【权限管理】页面,在左下角权限列表里选择【通讯录管理】,找到【根据手机号姓名获取成员信息的接口访问权限】,点击右侧的【申请权限】,根据提示完成权限申请流程。

Alt text

# 配置AgentId、AppKey和AppSecret

cxPMS系统后台配置文件中需要这几个数据:

  • AgentId、AppKey和AppSecret在上面创建的应用界面。

Alt text

# 防火墙设置

cxPMS系统需要访问钉钉接口发送消息,请按照安装指南里的防火墙设置配置公司网络防火墙。

# 移动电话

cxPMS系统需要用FlowPortal账号上的【移动电话】来向钉钉接口查询用户的钉钉UserId,所以请确保用户FlowPortal账号上维护的【移动电话】和用户钉钉里【手机号】是一致的。

# 飞书

发送飞书消息需要用户公司申请自己的飞书服务,请按照以下步骤完成飞书后台配置。

# 登录/注册飞书服务

打开浏览器,访问飞书开放平台官方网站 (opens new window),点击右上角【登录】,以管理员身份登录飞书开放平台后台。如果还未注册的,请按照飞书开放平台网站提示为公司完成注册流程。

# 创建应用

  • 进入公司的飞书开放平台后台,点击右上角的【开发者后台】,点击【创建企业自建应用】按钮。

Alt text

  • 填写应用名称和应用描述,再点击【创建】。
  • 进入刚才创建的应用界面,选择左侧菜单的【添加应用能力】,选择右侧的【机器人】卡片里的【添加】。

Alt text

  • 选择左侧菜单的【权限管理】,在右侧的权限列表里选择【通讯录】,找到【通过手机号或邮箱获取用户 ID】,点击右侧的【开通权限】。

Alt text

  • 在权限列表里选择【消息与群组】,找到【以应用的身份发消息】,点击右侧的【开通权限】。

Alt text

  • 选择左侧菜单的【版本管理与发布】,打开刚才创建的应用,填写【版本号】【更新说明】和【可见范围】,最后点击【保存】。

Alt text

  • 请飞书平台企业管理员登录到飞书管理后台,进入【工作台】【应用审核】,对刚才提交的应用进行审核。

# 配置AppId和AppSecret

cxPMS系统后台配置文件中需要这几个数据:

  • AppId和AppSecret在上面创建的应用界面。

Alt text

# 防火墙设置

cxPMS系统需要访问飞书接口发送消息,请按照安装指南里的防火墙设置配置公司网络防火墙。

# 移动电话

cxPMS系统需要用FlowPortal账号上的【移动电话】来向飞书接口查询用户的飞书OpenId,所以请确保用户FlowPortal账号上维护的【移动电话】和用户飞书里【手机号】是一致的。