Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
在本教程中,我们将遵循开发插件 开发我们的Not Permission插件的 指导原则。 有关更多详细信息步骤,请参阅第一个教程 如何开发一个Bean Shell哈希变量插件。
我想配置userview权限或表单权限不在组,部门或其他
我们可以开发一个 Userview权限/表单权限插件 来反转其他权限插件的结果。
要开发一个Not Permission插件,我们可以考虑提供以下内容作为输入。
配置的权限插件的反向值。
您可以参考 如何开发甘特图用户视图菜单如何重用现有的插件。
我们需要始终准备好Joget Workflow Source Code,并按照这个指导方针建立起来 。
本教程的以下内容是使用Macbook Pro和Joget源代码5.0.0版编写的。 其他平台命令请参考 如何开发插件。
让我们说我们的文件夹目录如下。
- Home - joget - plugins - jw-community -5.0.1
“plugins”目录是我们要创建和存储我们所有插件的文件夹,“jw-community”目录是Joget Workflow源代码存储的地方。
运行以下命令在“plugins”目录下创建一个maven项目。
cd joget/plugins/ ~/joget/jw-community/5.0.1/wflow-plugin-archetype/create-plugin.sh org.joget.tutorial not_permission 5.0.1
然后,shell脚本将要求我们为您的插件输入一个版本,并在生成maven项目之前要求我们确认。
Define value for property 'version': 1.0-SNAPSHOT: : 5.0.0 [INFO] Using property: package = org.joget.tutorial Confirm properties configuration: groupId: org.joget.tutorial artifactId: not_permission version: 5.0.0 package: org.joget.tutorial Y: : y
我们应该在终端上显示“BUILD SUCCESS”消息,在“plugins”文件夹中创建一个“not_permission”文件夹。
用你喜欢的IDE打开maven项目。我将使用 NetBeans。
在“org.joget.tutorial”包下创建一个“NotPermission”类。然后,用org.joget.apps.userview.model.UserviewPermission 抽象类扩展 该类并实现org.joget.apps.form.model.FormPermission接口。请参阅 Userview权限/表单权限插件。
像往常一样,我们必须执行所有的抽象方法。我们将使用AppPluginUtil.getMessage方法来支持i18n,并使用常量变量MESSAGE_PATH作为消息资源包目录。
然后,我们必须为管理员用户提供一个UI来为我们的插件提供输入。在getPropertyOptions方法中,我们已经指定了 插件属性选项和配置 定义文件位于“/properties/notPermission.json”。让我们在“not_permission / src / main”目录下创建一个“resources / properties”目录。创建目录后,在“properties”文件夹中创建一个名为“notPermission.json”的文件。
在属性定义选项文件中,我们需要提供如下的选项。请注意,我们可以在我们的属性选项中使用“@@ message.key @@”语法来支持i18n。
[{ title : '@@userview.notpermission.config@@', properties : [{ name : 'permission', label : '@@userview.notpermission.permission@@', type : 'elementselect', options_ajax : '[CONTEXT_PATH]/web/property/json/getElements?classname=org.joget.apps.userview.model.UserviewPermission', url : '[CONTEXT_PATH]/web/property/json[APP_PATH]/getPropertyOptions' }, { name : 'loggedIn', label : '@@userview.notpermission.loggedIn@@', type : 'checkbox', value : 'true', options : [{ value : 'true', label : '' }] }] }]
在完成收集输入的属性选项后,我们可以使用isAuthorize方法。
@Override public boolean isAuthorize() { boolean isAuthorize = false; try { if ("true".equals(getPropertyString("loggedIn")) && WorkflowUtil.isCurrentUserAnonymous()) { return false; } //get the binder Object permissionData = getProperty("permission"); if (permissionData != null && permissionData instanceof Map) { Map pMap = (Map) permissionData; if (pMap != null && pMap.containsKey("className") && !pMap.get("className").toString().isEmpty()) { PluginManager pluginManager = (PluginManager) AppUtil.getApplicationContext().getBean("pluginManager"); UserviewPermission permission = (UserviewPermission) pluginManager.getPlugin(pMap.get("className").toString()); if (permission != null) { Map pProps = (Map) pMap.get("properties"); permission.setProperties(pProps); permission.setCurrentUser(getCurrentUser()); permission.setRequestParameters(getRequestParameters()); isAuthorize = !permission.isAuthorize(); } } } } catch (Exception e) { LogUtil.error(getClassName(), e, ""); } return isAuthorize; }
这个插件没有额外的依赖。
我们在getLabel和getDescription方法中使用i18n消息密钥。我们还在我们的属性选项定义中使用了i18n消息密钥。所以,我们需要为我们的插件创建一个消息资源包属性文件。
在“not_permission / src / main”目录下创建目录“resources / messages”。然后,在该文件夹中创建一个“NotPermission.properties”文件。在属性文件中,让我们添加所有的消息键和它的标签如下。
org.joget.tutorial.NotPermission.pluginLabel=Not Permission org.joget.tutorial.NotPermission.pluginDesc=Used to reverse the result of other permission plugin userview.notpermission.config=Configure Not Permission userview.notpermission.permission=Permission userview.notpermission.loggedIn=Must be Logged In User
我们将不得不在Activator类(在同一个类包中自动生成)中注册我们的插件类,以告诉Felix框架这是一个插件。
public void start(BundleContext context) { registrationList = new ArrayList<ServiceRegistration>(); //Register plugin here registrationList.add(context.registerService(NotPermission.class.getName(), new NotPermission(), null)); }
让我们建立我们的插件。一旦构建过程完成,我们将在“not_permission / target”目录下创建一个“not_permission-5.0.0.jar”文件。
然后,让插件jar上传到 管理插件。上传jar文件后,仔细检查插件是否正确上传和激活。
让我们打开一个用户视图,并将其中一个类别权限更改为不允许。我们希望当前用户不在“Managers”组中。
完成配置并保存用户视图。让我们来测试它。首先检查管理员用户是否在“Managers”组中。
检查用户视图,在“管理员”组中未配置的“Personal”类别显示正确。
现在,将“admin”用户分配给“Mangers”组。
“Personal”类别现在消失了。
您可以从not_permission.zip下载源代码 。
要下载现成的插件jar,请在http://marketplace.joget.org/上找到它 。