本系统是一个基于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.exe
option 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. | |
# |