Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
...
ตัวอย่างที่ 1 : เพื่อพัฒนาปลั๊กอินการดาวน์โหลดดาต้าลิสต์แอ็คชัน PDF เราสามารถนำวิธีการใน FormPdfUtil มาใช้ใหม่ เพื่อสร้างฟอร์มเป็น PDF นอกจากนี้เรายังสามารถอ้างถึงซอร์สโค้ดของปลั๊กอินการกระทำการลบแบบฟอร์มข้อมูลดาต้าลิสต์ได้เช่นกัน นอกเหนือจากนั้นเราสามารถอ้างถึงเครื่องมือส่งออกอีเมลฟอร์ม ในตัวเลือกคุณสมบัติปลั๊กอินที่เราสามารถให้ในปลั๊กอินเนื่องจากเครื่องมือส่งออกฟอร์มอีเมลใช้วิธีการใน FormPdfUtil เช่นกัน
...
ตัวอย่างที่ 3: เพื่อพัฒนาปลั๊กอิน Bean Shell Hash Variable เราสามารถอ้างถึง source code ของปลั๊กอิน Hash Variable และปลั๊กอิน Bean Shell ทั้งหมด โดยเฉพาะอย่างยิ่งเราสามารถอ้างถึงปลั๊กอินสภาพแวดล้อมตัวแปรแฮชตัวแปรวิธีการดึงข้อมูลตัวแปรสภาพแวดล้อมโดยใช้คีย์ตัวแปร นอกจากนี้เรายังสามารถอ้างถึง Bean Shell Tool หรือ Bean Shell Form Binder plugin ว่าจะรันสคริปต์ด้วย Bean Shell interpreter ได้อย่างไร
...
a. คุณจะต้องมี Joget Workflow Open Source ให้พร้อมและสร้าง เราจะใช้โมดูล "wflow-plugin-archetype" เพื่อสร้างโครงการ maven สำหรับปลั๊กอินของเรา
...
c. เปิด / นำเข้าโครงการ Maven ด้วย IDE ที่คุณชื่นชอบ ทีม Joget แนะนำ NetBeans IDE.
...
...
อ้างถึงเอกสารประเภทปลั๊กอินที่ระบุไว้ใน Plugin Types. ค้นหา abstract class และ interface ที่ต้องการขยายและดำเนินการโดยปลั๊กอินของคุณ
ตัวอย่าง: เพื่อพัฒนา Userview Menu plugin, the plugin class need to extends the org.joget.apps.userview.model.UserviewMenu abstract class.
...
...
ปลั๊กอินจะต้องใช้วิธีการแบบ 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)); } |
...
เมื่อคุณทำตามขั้นตอนทั้งหมดข้างต้นแล้วคุณสามารถสร้างโครงการของคุณด้วย IDE โดยใช้ Maven คุณยังสามารถเรียกใช้คำสั่ง Once you are done with all the steps above, you can build your project with your IDE using Maven. You can also run "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, คลิ๊กขวาที่โปรเจคเนมและเลือก Example: In NetBeans, right-click on the project name, then select "Clean and Build".
...
คุณทำปลั๊กอินที่มีประโยชน์มากเสร็จสมบูรณ์แล้ว อย่าเพียงเก็บไว้เป็นของตัวเองแบ่งปันหรือขายปลั๊กอินของคุณใน Joget Marketplace หรือดีกว่านั้นคุณสามารถเขียนบทช่วยสอนในฐานความรู้ของเราเพื่อแบ่งปันความพยายามของคุณกับผู้อื่น หากต้องการแชร์หรือขายปลั๊กอินของคุณโปรดส่งอีเมลไปที่ info@joget.org
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.