本系统是一个基于Mendix Studio Pro扩展API构建的Web应用,包含一个前端UI(index.html)和一个后端脚本(main.py)。
- 核心模式: 客户端-服务器 (Client-Server)
- 通信协议: 基于
window.postMessage的异步RPC(远程过程调用)。 - 核心设计原则:
- 关注点分离 (SoC): 前后端、UI、业务逻辑、通信等模块各自独立,职责单一。
| <!-- https://gist.github.com/engalar/b84b71693c4d1a8addd458e4eec53da3 --> | |
| <!-- gh gist edit b84b71693c4d1a8addd458e4eec53da3 .\index.html -f index.html --> | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>Simple plugin demo</title> | |
| <!-- 框架依赖: React, Tailwind, Babel, VConsole (引入本地资源,以便离线使用) --> | |
| <script src="assets/react.development.js"></script> | |
| <script src="assets/react-dom.development.js"></script> |
| <!-- | |
| gh gist edit d4a9cf90c46c4e91cfc16102a1a56579 .\index.html -f index.html | |
| --> | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>Mendix Navigation Visualizer</title> | |
| <!-- 框架依赖: React, Tailwind, Babel, VConsole (保持不变) --> | |
| <script src="assets/react.development.js"></script> |
这个路径是一种混合查询语言,专门用于在Mendix模型中精确定位到任意一个具体的数据点。它的核心在于区分了两种不同的模型层级:单元(Unit) 和 元素(Element),并通过特定的语法在它们之间切换。
以下是对该路径 //Projects$Module[Name='Administration']/DomainModels$DomainModel[0]@DomainModels$Entity[Name='Account']['accessRules'][0]['moduleRoles'][0] 的完整分步解析:
Projects$Module)、一个模块下的领域模型 (DomainModels$DomainModel)、一个页面 (Pages$Page) 都是单元。它们是项目结构的基本组成部分。我们使用 GetUnitsOfType() 来查找它们。DomainModels$Entity)、实体上的访问规则、微流中的一个“显示页面”活动,这些都是元素。我们使用 GetElementsOfType() 在一个单元内部查找它们。| # 这个脚本将逐步解析路径 //Projects$Module[Name='Administration']/DomainModels$DomainModel[0]@DomainModels$Entity[Name='Account']['accessRules'][0]['moduleRoles'][0],找到最终的目标对象(一个模块角色的限定名称 e.g. Administration.Administrator), //Projects$Module[Name='Administration']/Security$ModuleRole[Name='Administrator']。 | |
| from System.Collections.Generic import KeyValuePair, IReadOnlyList | |
| from Mendix.StudioPro.ExtensionsAPI.Model.Projects import IProject, IModule | |
| from Mendix.StudioPro.ExtensionsAPI.Model.DomainModels import IEntity, IDomainModel, IAssociation | |
| from Mendix.StudioPro.ExtensionsAPI.Model.Pages import IPage | |
| from Mendix.StudioPro.ExtensionsAPI.Model.Microflows import IMicroflow | |
| from Mendix.StudioPro.ExtensionsAPI.Model.UntypedModel import PropertyType, IModelElement | |
| import json | |
| import clr |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>Mendix Model Browser (RxJS Refactor)</title> | |
| <script src="assets/tailwindcss.js"></script> | |
| <style> | |
| .copy-icon { | |
| opacity: 0.2; |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>Mendix Traceability Analyzer (with React Flow)</title> | |
| <script src="assets/react.development.js"></script> | |
| <script src="assets/react-dom.development.js"></script> | |
| <script src="assets/tailwindcss.js"></script> | |
| <script src="assets/babel.min.js"></script> | |
| <script src="assets/vconsole.min.js"></script> |
| # 1. 初始化与导入 | |
| import json | |
| import clr | |
| clr.AddReference("Mendix.StudioPro.ExtensionsAPI") | |
| # 导入关键模型类型 | |
| from Mendix.StudioPro.ExtensionsAPI.Model.Projects import IProject, IModule, IFolder | |
| from Mendix.StudioPro.ExtensionsAPI.Model.Microflows import IMicroflow | |
| # 假设 currentApp 已在环境中可用 |
option 1 If your machine is company-managed, you must run in this terminal https://github.com/PowerShell/PowerShell/releases/download/v7.5.2/PowerShell-7.5.2-win-x64.msi
pwsh.exeoption 2 Otherwise you can use the operating system's default terminal
powershell.exe| #!/bin/bash | |
| # ==================================================================================== | |
| # | |
| # Mendix Studio Pro Offline Installer Preparation Tool (v5 - Stderr/Stdout Fix) | |
| # | |
| # Description: | |
| # This script prepares a full offline installer package for Mendix Studio Pro | |
| # on a Linux system, for later installation on Windows. | |
| # |