Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
...
A plugin will have to implements the ปลั๊กอินจะต้องใช้วิธีการแบบ abstract method of ของ Plugin Base Abstract Class and Interface and also the abstract method of the และ abstract method ของ individual abstract class and interface for the plugin type. และอินเตอร์เฟซสำหรับประเภทปลั๊กอิน
ตัวอย่าง: To develop a เพื่อพัฒนา Userview Menu plugin, the following methods have to be implemented by the plugin. Please refer to the plugin documents for the details of each methods. ต้องใช้วิธีการต่อไปนี้โดยปลั๊กอิน โปรดดูเอกสารปลั๊กอินสำหรับรายละเอียดของแต่ละวิธี
...
...
โฟลเดอร์ปลั๊กอินที่สร้างโดย The generated plugin folder by "wflow-plugin-archetype" module is a maven project. So, we will using the Dependency Mechanism provided by โมดูลเป็นโครงการ Maven ดังนั้นเราจะใช้ Dependency Mechanism ให้บริการโดย Maven.
...
...
ในการทำปลั๊กอิน i18n ให้พร้อมใช้งาน เราจำเป็นต้องสร้างไฟล์คุณสมบัติ bundle ข้อความสำหรับปลั๊กอิน
To make the plugin i18n ready, we need to create a message resource bundle property file for the plugin.
ตัวอย่าง: For a plugin named สำหรับปลั๊กอินชื่อ "GanttChartMenu" , we need to create a เราต้องสร้างไฟล์ "GanttChartMenu.properties" file under file under "[Plugin project directory]/src/main/resources/message" directory.
เนื้อหาตัวอย่างสำหรับไฟล์ GanttChartMenuSample content for GanttChartMenu.properties file
Code Block | ||
---|---|---|
| ||
org.joget.sample.GanttChartMenu.pluginLabel=Gantt Chart org.joget.sample.GanttChartMenu.pluginDesc=To display form data in Gantt Chart layout userview.ganttChart.label.title=Title userview.ganttChart.label.week=Week |
Exampleตัวอย่าง: Use the ใช้เมธอด getMessage method in ใน getLabel and และเมธอด getDescription methods to return เพื่อส่งคืน i18n label and description.และคำอธิบาย
Code Block | ||
---|---|---|
| ||
public String getLabel() { return AppPluginUtil.getMessage("org.joget.sample.GanttChartMenu.pluginLabel", getClassName(), "message/GanttChartMenu"); } public String getDescription() { return AppPluginUtil.getMessage("org.joget.sample.GanttChartMenu.pluginDesc", getClassName(), "message/GanttChartMenu"); } |
Example: For property options of a GanttChartMenu plugin, the following shows the sample code implementation of getPropertyOptions method and the ตัวอย่าง: สำหรับตัวเลือกคุณสมบัติของปลั๊กอิน GanttChartMenu ข้อมูลต่อไปนี้แสดงการใช้งานโค้ดตัวอย่างของวิธีการ getPropertyOptions และไฟล์ GanttChartMenu.json file
Code Block | ||
---|---|---|
| ||
public String getPropertyOptions() { return AppUtil.readPluginResource(getClassName(), "/properties/GanttChartMenu.json", null, true, "message/GanttChartMenu"); } |
Code Block | ||
---|---|---|
| ||
[{ title : '@@userview.ganttChart.edit@@', properties : [{ name : 'id', label : 'Id', type : 'hidden' }, { name : 'customId', label : '@@userview.ganttChart.customId@@', type : 'textfield', regex_validation : '^[a-zA-Z0-9_]+$', validation_message : '@@userview.ganttChart.invalidId@@' }, { name : 'label', label : '@@userview.ganttChart.label@@', type : 'textfield', required : 'True', value : '@@userview.ganttChart.label.value@@' }] }] |
Example: For getRenderPage method of a GanttChartMenu plugin, the following show the sample code implementation of getRenderPage method and the ตัวอย่าง: สำหรับเมธอด getRenderPage ของปลั๊กอิน GanttChartMenu ต่อไปนี้จะแสดงการใช้งานโค้ดตัวอย่างของเมธอด getRenderPage และเท็มเพลต "GanttChartMenu.ftl" FreeMarker template.
Code Block | ||
---|---|---|
| ||
public String getRenderPage() { Map model = new HashMap(); model.put("request", getRequestParameters()); model.put("element", this); PluginManager pluginManager = (PluginManager)AppUtil.getApplicationContext().getBean("pluginManager"); String content = pluginManager.getPluginFreeMarkerTemplate(model, getClasstName(), "/templates/GanttChartMenu.ftl", "message/GanttChartMenu"); return content; } |
Code Block | ||
---|---|---|
| ||
<div> <h1>@@userview.ganttChart.label.title@@ : ${element.properties.title!}</h1> </div> |
Exampleตัวอย่าง: GanttChartMenu_zh_CN.properties
e. Register your plugin to the ลงทะเบียนปลั๊กอินของคุณไปที่ Felix Framework
You will find that a class named คุณจะพบว่าคลาสที่ชื่อว่า "Activator.java" is auto generated in a package of your plugin maven project. The class is used to register your plugin class to the Felix Framework. You do not need to do this if your plugin is not an นั้นสร้างขึ้นโดยอัตโนมัติในแพ็คเกจของโปรเจ็กต์ maven ของคุณ คลาสนี้ใช้เพื่อลงทะเบียนคลาสปลั๊กอินของคุณกับ Felix Framework. คุณไม่จำเป็นต้องทำเช่นนี้หากปลั๊กอินของคุณไม่ใช่ OSGI Plugin.
In the start method of the activator class, add your plugin class to the "registrationList" variable.ในวิธีเริ่มต้นของคลาส activator ให้เพิ่มคลาสปลั๊กอินของคุณลงในตัวแปร "registerList"
Code Block | ||
---|---|---|
| ||
public void start(BundleContext context) { registrationList = new ArrayList<ServiceRegistration>(); //Register plugin here registrationList.add(context.registerService(MyPlugin.class.getName(), new MyPlugin(), null)); } |
Once you are done with all the steps above, you can build your project with your IDE using Maven. You can also run เมื่อคุณทำตามขั้นตอนทั้งหมดข้างต้นแล้วคุณสามารถสร้างโครงการของคุณด้วย IDE โดยใช้ Maven คุณยังสามารถเรียกใช้คำสั่ง "mvn clean install" command in your project directory to build it. After building your project, a jar file is created under "target" folder in your plugin project folder. Upload the plugin jar to Manage Plugins to test your plugin.ในไดเรกทอรีโครงการของคุณเพื่อสร้าง หลังจากสร้างโครงการของคุณไฟล์ jar จะถูกสร้างขึ้นภายใต้โฟลเดอร์ "target" ในโฟลเดอร์โครงการปลั๊กอินของคุณ อัปโหลดปลั๊กอินไปที่ Manage Plugins เพื่อทดสอบปลั๊กอินของคุณ
ตัวอย่าง: ใน NetBeans, คลิ๊กขวาที่โปรเจคเนมและเลือก "Clean and Build".
...
You have completed a very useful plugin. Don't just keep it to yourself, share or sell your plugin in the Joget Marketplace or even better, you can write a tutorial in our Knowledge Base to share your effort with others. To share or sell your plugin, please send an email to info@joget.org.
คุณทำปลั๊กอินที่มีประโยชน์มากเสร็จสมบูรณ์แล้ว อย่าเพียงเก็บไว้เป็นของตัวเองแบ่งปันหรือขายปลั๊กอินของคุณใน Joget Marketplace หรือดีกว่านั้นคุณสามารถเขียนบทช่วยสอนในฐานความรู้ของเราเพื่อแบ่งปันความพยายามของคุณกับผู้อื่น หากต้องการแชร์หรือขายปลั๊กอินของคุณโปรดส่งอีเมลไปที่ info@joget.org