JMP 9 介绍一个加入可以轻松创建和分发JMP扩展的体系结构。这使得 JMP 用于创建新分析工具的平台。它还可以轻松添加新功能。创建JMP加载项非常简单。您需要知道的是JMP脚本语言(JSL)。
创建JMP加载项的过程有两个不同的阶段:开发和部署。
我们将首先介绍开发。
通过创建一个包含加载项可能需要的所有部分的文件夹,开始开发加载项的过程。这是您的“加载项文件夹”。

接下来,您需要确定一些名称。
每个JSL加载项必须具有唯一的ID。这是加载项的最终用户很少看到的名称。我们建议您使用类似的东西反向DNS命名约定创建这个唯一的名称。
对于这个例子,我将调用我的加载项“com.jmp.jperk.texttocols”。
加载项还具有显示名称,这是用户在大多数时间看到的内容。这是一个更友好的名称,并且不要求具有此名称的唯一性。我将其称为“Text to Columns”。
在加载项文件夹中,创建一个名为“addin.def”的文本文件。

此文件的内容应如下所示,替换您的唯一ID和显示名称:
id="com.jmp.jperk.texttocols"
name =“Text to Columns”
现在,您需要使用JMP注册您的加载项。通过使用JMP打开addin.def文件来完成此操作。执行此操作时,JMP将提示您询问是否要安装加载项。

这一开始看起来很奇怪,但你需要这个,所以JMP在你开发时知道你的加载项。继续并单击“安装”以完成注册。
此注册将加载项的ID与加载项目录相关联。您现在可以使用$ ADDIN_HOME(uniqueID)路径变量引用此目录。例如,您可以使用这样的include函数:
include("$ADDIN_HOME(com.jmp.jperk.texttocols)/texttocols.jsl");现在开始为您的添加编写JSL。将其保存到加载项目录中。
在编写JSL时,如果需要引用任何外部文件(如数据或DLL),请将它们放在加载项目录中。您应该使用$ ADDIN_HOME(uniqueID)路径变量在JSL代码中引用它们。
完成JSL后,您需要构建自定义菜单,以便加载项的用户可以访问它。
转到视图 - >自定义 - >菜单和工具栏以启动菜单编辑器。

单击编辑器顶部的“更改...”按钮,更改为编辑加载项的自定义项。

现在,您可以创建自定义菜单项以启动JSL。我在分隔符之后将我的列放在Columns菜单中。

为菜单命令提供唯一的内部名称。这是JMP用于查找此菜单项的名称,如果它被其他自定义菜单引用。接下来,将菜单项的文本本身放在标题字段中。这将在菜单中显示。您还可以在“提示”字段中插入工具提示。如果需要,使用“本地化”按钮放置标题和提示的本地化版本。
在“操作”部分中,选择“在此文件中运行JSL”,然后单击“使用加载项主文件夹”旁边的复选框,并确保选择了加载项ID。
请注意“图标”部分,您可以使用加载项主文件夹中的图像文件作为菜单项的图标。

单击“确定”后,JMP会将您刚刚在加载项目录中创建的自定义文件另存为“addin.jmpcust”。

您现在已准备好将加载项打包以进行部署。您需要创建一个.ZIP存档:1)addin.def,2)addin.jmpcust,3)您的.JSL文件和任何其他依赖项。

您需要将存档上的“.zip”扩展名更改为“.jmpaddin”。

现在,您可以测试打包的加载项。
首先取消注册加载项的开发版本。(查看 - >插件)

现在,双击.jmpaddin文件,该文件现在是可部署的加载项。

JMP会询问您是否要安装加载项。

安装后,您会看到它在视图 - >加载项中列出... 对话。请注意,该目录不是您的加载项目录,而是JMP用户区域中的目录。

JMP已将.zip存档扩展到此用户区。单击对话框中的目录名称以查看其内容。这样可以方便地查看加载项使用的任何JSL。

最后,您可以转到加载项创建的自定义菜单以启动它。

杰夫珀金森中写道:
嗨布兰登,
由于六西格玛加载项是在早期版本的JMP中创建的,因此它不使用加载项构建器。
这个加载项的大部分内容都是通过自定义菜单项调用JMP中的平台,因此实际的JSL非常少。
您可以使用View-> Customize-> Menus and Toolbars选项查看其正在执行的操作并对其进行修改。进入菜单编辑器后,您需要使用顶部的“更改...”按钮更改自定义设置,以编辑加载项的菜单。
我希望有所帮助。
-Jeff
布兰登百年灵中写道:
杰夫,
我想知道,我正在尝试在我的计算机上修改你的六西格玛加载项,但是当我尝试它时告诉我它不是用jmp加载项构建器制作的,所以它可能无法做到。无论如何我做到了,看不到任何JSL或任何东西。有没有办法让我查看它的代码并修改它?
Jens Riege 中写道:
感谢Jeff创建这些说明。它们看起来非常有用,我打算创建一些内部脚本菜单供我们小组使用!
谢谢杰夫!非常清晰细致的指导。由于这条指令,我设法创建了自己的插件。
感谢您的明确解释, @杰夫·珀金森!这帮助我发布了第一个加载项以供审阅,希望以后可以发布。
我唯一不确定的是在修订版本更改后如何为外接程序提供更新。
谢谢!,
DS
你好@杰夫·珀金森,
我很好奇在将加载项发布到更大的JMP社区之前,将其提交给JMP进行审核的正确方法是什么。
我构建了一个插件,我认为某些建模人员可能会发现对构建大量调整后的模型有所帮助。我已将其上传到文件交换器进行审查,但尚未对其进行审查。我想发布它,但希望JMP对它进行审查以查找可能的问题/错误,以便我可以提前对其进行修复。
谢谢你的帮助!
DS