Skip to content

部署 Mendix 应用到 MindSphere

本文档适用于希望将 Mendix 应用部署到 MindSphere 平台的开发者。

代码块

带有行号的代码块提供了一种简单的复制功能。通过将光标悬停在代码块上并单击右上角的复制图标来使用它。

先决条件

为 MindSphere 准备 Mendix 应用

选项 A:使用 MindSphere Starter 应用

现有的应用

如果您想要将一款现有的应用部署到 MindShpere,跳过这步并跳转到集成 MindSphere 主题包和模块

当您为 MindSphere 开发一款新的 Mendix 应用时,使用 MindSphere Starter 应用。这款应用包含部署应用到 MindShpere 所需的所有构件。

  1. 打开 Mendix Desktop Modeler。
  2. 点击菜单栏右上角的图标,打开Mendix App Store。

    起始点

  3. 进入 "MindSphere Starter Application" 并按下 Enter。

  4. 在搜索结果中选择 MindSphere Starter Application。

    起始点

  5. 点击**下载**来创建一个新的应用项目,使用这款应用。

    起始点

  6. 选择存储这款应用的位置并输入应用名称和项目目录。然后点击**确定**。

    起始点

    应用名称

    如果您想要在 Mendix 和 MindSphere 上一直保持您的应用名称,请使用被Developer Cockpit 接受的应用名称。

选项 B:集成 MindSphere 主题包和模块

MindSphere Starter 应用

如果您正在使用 MindSphere Starter 应用, 跳过这步并跳转到模块配置

Mendix 应用必须集成 MindSphere 主题包、MindSphere Single Sign-On 模块和 MindSphere OS Bar Connector。使用以下的链接将它们作为后验集成到现有的 Mendix 应用中,以此来下载这些必需的要素。

配置模块

配置 MindSphere 单点登录

  1. 双击 CockpitApplicationName 常量。

    SSO

  2. 在**值**这一部分中,用您将要使用 Developer Cockpit 配置您在 MindSphere 中的应用的名称来替换默认的值 Change me

    配置应用名称

    信息

    请不要改变在这个对话顶端的Name字段。

    在 MindSphere 中注册应用时,应用名称有以下限制:

    • 只包含小写字母数字字符和特殊字符,-_.不允许
    • 以字母开头
    • 长度不超过20个字符
    • 在您的租户中唯一
如果您不使用 MindSphere starter 或者示例应用请点击这里!

如果您不使用 MindSphere starter 或者示例应用,RegisterSingleSignOn 必须配置为 启动之后 微流:

  1. 通过双击 Project Explorer 的 项目 > 设置 来打开项目设置。
  2. 切换到**运行时间**标签。
  3. 选择注册单点登录如同**启动之后**微流一样。或者,将其添加到您现有的**启动之后**微流。

配置应用信息(可选)

如果用户在 MindSphere OS Bar 中单击应用名称,将会显示应用信息。请按照以下说明配置应用信息。 OS Bar App Information

  1. 双击 MindSphereOSBarConfig 模块的字符串常量 Config
  2. 将应用信息作为 JSON 对象输入**默认**字段: OSBarConfig

有关可用配置参数和示例 JSON 对象的描述,请参见 MindSphere OS Bar 文档

将 Mendix 应用部署到 Cloud Foundry 中

信息

Mendix 应用可以托管在 MindSphere 之外。在这种情况下,他们必须提供一种机制来处理访问 MindSphere api 的用户凭证。我们不建议您这样做,本文档也没有涉及相关内容。

创建 Mendix 部署包

  1. 在 Mendix Desktop Modeler 中打开应用。
  2. 选择 项目 > 创建部署包...

    Create Deployment Package

  3. 选择所需的**开发行**和**版本**并设置版本号。

  4. (可选)添加描述并根据需要调整部署包的路径。默认情况下,部署包在项目的**版本**文件夹中创建。
  5. 单击**确定**。

新部署包的位置将显示在信息窗口中。

通过 CF CLI 将应用部署到 Cloud Foundry 中

  1. 在带有部署包的文件夹中打开命令行接口(CLI)。
  2. 如果必要,请配置代理设置。

    有关代理设置的详细信息请点击这里

    如果您在代理背后的公司网络中,您可能必须设置代理才能到达 Cloud Foundry 端点。 如果您遇到超时或连接问题,请与管理员联系。

    像如下展示一样,为 Cloud Foundry CLI 设置代理:

    ```cmd tab="CMD" set http_proxy=http://PROXY_IP:PROXY_PORT set https_proxy=http://PROXY_IP:PROXY_PORT

    ```bash tab="BASH"
    export http_proxy=http://PROXY_IP:PROXY_PORT
    export https_proxy=http://PROXY_IP:PROXY_PORT
    

  3. 输入 cf login -a https://api.cf.{region}.{mindsphere-domain} --sso

  4. 打开由 CLI 打印的 URL 并使用您的 WebKey 凭证登陆,以获得一次性代码。
  5. 在 CLI 中输入一次性代码。
  6. 使用以下的命令选择你的 Cloud Foundry org 和 space:

    cf target -o {org_name} -s {space_name}
    

    无 Cloud Foundry Orgs 显示

    如果您没有看见任何 Cloud Foundry orgs,您需要添加您的 org。请参考How Tos for Cloud Foundry

  7. 创建一个 PostgreSQL Service 实例。 注意,在实例启动并运行之前需要一些时间。

    ``` bash tab="Template" cf create-service posgresql10 {service_plan} {instance_name}

    ``` bash tab="Example"
    cf create-service posgresql10 postgresql-xs my-postgreSQL
    

  8. 使用以下命令检查您的服务实例是否在运行:

    cf services
    
  9. 在带有部署包的文件夹中创建一个 manifest.yml 并至少含有以下内容:

    ```yml tab="Template" applications: - name: {app_name} disk_quota: {required_quota} memory: {required_memory} services: - {instance_name}

    ```yml tab="Example"
    applications:
    - name: my-app
      disk_quota: 512M
      memory: 512M
    services:
      - my-postgreSQL
    

    信息

    Mendix 应用至少需要 512M大小的内存和磁盘配额。
    有关配置 manifest 文件的更多信息,请参考文档Manifest 文件

  10. 使用以下内容推送应用到您的 Cloud Foundry 空间:

    cf push -p "{deployment_package_name}"
    

在 MindSphere 中配置 Mendix 应用

在 Developer Cockpit 中配置 Mendix 应用

组件

MindSphere 上的应用可能由多个 Cloud Foundry 应用组成,这些应用具有多个端点。为了明确区分,Cloud Foundry 应用被称为**组件**。

  1. 从 Launchpad 中打开 Developer Cockpit 并选择**仪表盘**选项卡。
  2. 单击**创建新的应用**。
  3. 选择 类型 Standard 和 基础设施 MindSphere Cloud Foundry。
  4. 输入一个任意的**显示名称**和**内部名称**,这将会为成为应用 URL的一部分。初始化创建后,**内部名称**不能被更改!

    内部名称

    内部名称 必须和配置在MindSphere 单点登录模块中的CockpitApplicationName一致。 内部名称 Developer Cockpit

  5. 输入版本编号。

    • MindSphere 支持 Major.Minor.Patch 方案。
    • 版本必须以 >=1 的主号码开头。
    • 保存之后版本不能被更改。
  6. 为您的应用上传一个图标。
  7. 输入组件名称。

    组件名称

    组件名称必须匹配在 manifest.yml 中 Cloud Foundry 应用的名称。否则,生产系统中的自动注册将会失败。

  8. 为您的组件添加一个端点,并如下所示一样,使用 /** 来匹配您所有的应用路径。 DC 创建新的应用

    信息

    更多有关信息请参考运行Cloud Foundry应用

  9. 进入您的应用的 Cloud Foundry URL。

    • 使用 cf app {app_name} 得到部署应用的URL和前缀https://
  10. 设置以下内容安全政策来保证 MindSphere OS Bar 和 Mendix Feedback widget 被正确加载:

    default-src 'self' 'unsafe-inline' 'unsafe-eval' static.eu1.mindsphere.io sprintr.home.mendix.com; font-src 'self' static.eu1.mindsphere.io fonts.gstatic.com; style-src * 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' static.eu1.mindsphere.io sprintr.home.mendix.com; img-src * data:;
    

    信息

    这些内容安全政策设置需要用来保证 MindSphere OS Bar 和 Mendix Feedback widget 被正确加载。如果你从其他域名进行额外的调用,您也许需要进行额外的 CSP 设置(例如, 如果你从 maps.googleapi.com 中使用 Google maps)。

  11. 点击**保存**。

您将被重定向到应用详情。 您的应用处于 In-Development 状态,并已经准备好注册。

配置 Mendix 应用角色和范围

MindSphere 中的每个应用都受到特定角色和范围的保护以防止未经授权的访问。MindSphere 自动为新应用创建两个默认角色:

  • admin (mdsp:{tenant_name}:{app_name}.admin)
  • user (mdsp:{tenant_name}:{app_name}.user)

关于创建自定义应用角色,请参见保护您的应用。使用 Developer Cockpit 配置这些角色的权限。您可以分配核心角色,该角色授权访问 MindSphere APIs,并定义应用范围:

  1. 切换到**授权管理**选项卡。
  2. 选择应用。
  3. 创建一个应用范围并选择它被分配到哪个 MindSphere 角色。

    信息

    应用范围必须被命名,目的是它可以通过名称的比较(不区分大小写)将其映射到 Mendix 用户角色。详细信息请参考开发 Mendix 应用的角色和范围信息

    添加应用范围
    如果您正在使用 starter 应用, 请像以下展示的一样创建用户范围和一个管理范围。
    Scopes Starter 应用

注册 Mendix 应用

应用必须在MindSphere Gateway上注册,才能从 Launchpad 访问它。这允许从租户特定的 MindSphere URL 到您的内部 Cloud Foundry 应用的路由。注册过程遵循积极的安全概念,即要求明确注册应用的每个端点。

  1. 切换到**仪表盘**选项卡。
  2. 打开应用详情。
  3. 点击**注册**。

MindSphere 注册应用使用以下方案:{tenant_name}-{app_name}-{tenant_name}.{region}.mindsphere.io

分配 Mendix 应用角色

只有当用户的 OAuth 令牌中存在一个应用范围,应用才在 Launchpad 上出现。在这种情况下,如果分配给用户一个应用角色:

  1. 从 Launchpad 中打开 Settings 应用,并切换到**角色**选项卡。 搜寻应用角色
  2. 选择一个应用角色并单击**编辑分配**。
  3. 分配一个或多个用户到应用角色。
  4. 单击**结束编辑**。
  5. 登出 MindSphere 并重新登陆。

退出

用户令牌只有在登出和再次登录之后才使用新范围更新。在极少数情况下,可能需要几分钟直到角色分配在系统中传播完毕。

您的应用现在可以在 Launchpad 中使用。您的 OAuth 令牌包含应用角色中定义的所有范围和核心角色。如果没有看到应用,请验证是否已为您自己分配了应用特定角色。

相关链接

还有问题?

向社区提问


除非另行声明,该网站内容遵循MindSphere开发许可协议.


Last update: November 16, 2021