{"id":3558,"date":"2019-03-25T17:44:52","date_gmt":"2019-03-25T20:44:52","guid":{"rendered":"http:\/\/xexeu.elipse.com.br\/pt\/developing-libraries-in-elipse-e3\/"},"modified":"2019-07-04T17:05:46","modified_gmt":"2019-07-04T20:05:46","slug":"developing-libraries-in-elipse-e3","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/","title":{"rendered":"Developing libraries in Elipse E3."},"content":{"rendered":"<div align=\"justify\">\n<p><u><b>1) INTRODUCTION<\/b><\/u><\/p>\n<p>Using libraries in Elipse E3 is highly recommendable, because they can represent more productivity for your application. Some advantages of using ElipseX are:<\/p>\n<ul>\n<li>Reusing code.<\/li>\n<li>Less tests during development.<\/li>\n<li>Default interface for developed objects.<\/li>\n<li>Less time required for developing new projects.<\/li>\n<li>Protection for project&#8217;s contents.<\/li>\n<\/ul>\n<p><b>2) WHEN TO CREATE AN OBJECTS&#8217; LIBRARY <\/b><\/p>\n<p>Libraries are recommended for most applications. However, some criteria indicate when new objects need to be created:<\/p>\n<ul>\n<li>Use repetition: when a certain device or process is used more than once in the same project.<\/li>\n<li>Restricted knowledge procedures: usually, a process created by a certain company must be protected against being unproperly\u00a0 copied or edited. This is a common practice among service integrators or hardware manufacturers.<\/li>\n<li>Controllers: a process controller, whose memory mapping is fixed, can be implemented with all available functionalities. Creating and using objects in Elipse E3 is made flexible to allow for further use of only the needed variables, while the others can be ignored.<\/li>\n<\/ul>\n<p><u><b>3) CASE STUDY <\/b><\/u><\/p>\n<p>To illustrate the use of libraries in Elipse E3, we will create an engine&#8217;s control, whose data is:<\/p>\n<ul>\n<li>One tag for the operation&#8217;s temperature.<\/li>\n<li>One emergency tag, for blocking the engine.<\/li>\n<li>One command tag to turn the engine on\/off.<\/li>\n<\/ul>\n<p>Both the command and the engine status should be shown via displays and color changes. In addition, the tags to be used for the engine&#8217;s command must be external to the library.<\/p>\n<p><b>Creating the Project <\/b><\/p>\n<p>First, you must create a default application via Elipse E3&#8217;s <b>Application Wizard<\/b>. When asked about drivers, storage, and alarms, answer &#8220;no&#8221; in all cases.<\/p>\n<p><b>Creating an XObject<\/b><\/p>\n<p>Next, create a new component libraries called <b>Engines<\/b>, and insert a new XObject called <b>LibDataEngine <\/b>into this library. The XObject is a data object and has no interface, which means it can&#8217;t create a message box for events, for example. To establish an interface with the user, you will need to create an XControl.<\/p>\n<p>Insert a data server into <b>LibDataEngine<\/b>, and rename it to <b>Data<\/b>. Inside this folder, insert a Demo tag and edit the following items:<\/p>\n<ul>\n<li><i>Name<\/i>: EngineTemperature<\/li>\n<li><i>Type<\/i>: 0 &#8211; Random<\/li>\n<li><i>Maximum<\/i>: 100<\/li>\n<li><i>Period<\/i>: 1000<\/li>\n<li><i>Scan<\/i>: 1000<\/li>\n<\/ul>\n<p>This tag returns the engine&#8217;s operation temperature.<\/p>\n<p>Next, create the following properties, which will be used to command and return the engine&#8217;s status by double-clicking the XObject:<\/p>\n<ul>\n<li><i>OnOff <\/i>(Boolean)<\/li>\n<li><i>Status <\/i>(InternalTag)<\/li>\n<li><i>Temperature <\/i>(Integer)<\/li>\n<li><i>Emergency <\/i>(InternalTag)<\/li>\n<\/ul>\n<p>These properties will be used to edit the engine&#8217;s behavior when the project is being executed.<\/p>\n<p>At <b>EngineTemperature <\/b>tag, create a linke between <i>Value <\/i>property and <b>LibDataEngine.Temperature<\/b>.<\/p>\n<p>Whenever any XObject&#8217;s internal value must be available for external access, you will need to create a link between that data and its property. To do so, the link&#8217;s structure should be analogous to <b>XObjectName.Property<\/b>.<\/p>\n<p>Then, set up the following restriction: <i>OnOff <\/i>property must be used to command when the engine should be on or off. However, the engine can only be turned on if the value of <i>Emergency <\/i>property is &#8220;1&#8221;. Otherwise, the engine can&#8217;t be turned on.<\/p>\n<p>To implement this restriction, right-click <i>OnOff <\/i>property and access the other properties. At <i>OnPropertyChanged <\/i>event, write the script below:<\/p>\n<div align=\"left\"><span style=\"font-family: Courier New;\">\u00a0 IF LibDataEngine.OnOff = true then<br \/>\nIF LibDataEngine.Emergency = 1 then<br \/>\nLibMeters.Status.Value = 1<br \/>\nEnd IF<br \/>\nELSE<br \/>\nLibMeters.Status.Value = 0<br \/>\nEnd IF<br \/>\n<\/span><\/div>\n<p>Save the object and register the library via right click. To illustrate how to use the library without an XControl, we will work on a project previously created, accessing the properties via buttons and scripts. Then, we will create a control object for the engine being developed.<\/p>\n<p><b>Using the XObject in the project <\/b><\/p>\n<p>First, insert a folder called <b>Engine1 <\/b>inside the <b>Data <\/b>folder created in the default application. Inside this folder, create two internal tags called <b>EngineEmergency1 <\/b>and <b>EngineStatus1<\/b>.<\/p>\n<p>Then, insert a <b>LibDataEngine <\/b>object into the project. Link <i>Emergency <\/i>property to <b>EngineEmergency1 <\/b>tag, and <i>Status <\/i>property to <b>EngineStatus1 <\/b>tag.<\/p>\n<p>On the <b>InitialScreen <\/b>created in this project, add displays and a command button as seem below.<\/p>\n<div align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5254\/1.png\" alt=\"\" width=\"500\" height=\"128\" align=\"Baseline\" border=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\"><b>Figure 1<\/b>: Engine1&#8217;s control screen <\/span><\/div>\n<p>For <i>Temperature <\/i>and <i>Status <\/i>properties, use displays; for <i>Emergency<\/i>, use a setpoint.<\/p>\n<p>The display used for <i>Status <\/i>property must be linked to <b>LibDataEngine1.Status.Value<\/b> expression (this expression will appear in red when displayed on the connections tabs). The <b>OnOff <\/b>command button must have an <b>Invert Value<\/b> script pointing to <i>OnOff <\/i>property, and whose values are <i>False <\/i>and <i>True<\/i>.<\/p>\n<p>The two lower displays which indicate if the script is working are auxiliary ones. Therefore, the first display should point to <b>Data.LibDataEngine1.OnOff<\/b> expression, and the second one to <b>Data.Engine1. EngineStatus1.Value<\/b>. These displays don&#8217;t exist in the definitive control object.<\/p>\n<p>To check the functionality of <b>LibDataEngine <\/b>object, run the project, switch the <i>Emergency <\/i>variable between 0 and 1, and try turning the engine on or off.<br \/>\n<b><br \/>\nCreating an XControl<\/b><\/p>\n<p>An item from <b>Symbol Factory<\/b> library (in <b>Engines <\/b>folder) will work as the interface of the engine being developed: it&#8217;s <b>3DISAMotor1<\/b>, the first figure in the library. This allows the example described here to be developed even if the E3Studio is on Demo mode.<\/p>\n<div align=\"center\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5254\/2.png\" alt=\"\" width=\"486\" height=\"320\" align=\"Baseline\" border=\"0\" \/><br \/>\n<span style=\"font-size: xx-small;\"><b>Figure 2<\/b>: LibEngine XControl <\/span><\/div>\n<p>To implement links and actions, create the object&#8217;s structure. To set up this XControl&#8217;s <i>Engine <\/i>property as <b>LibDataEngine<\/b>, write this type&#8217;s whole name, or then right-click to browse the available types. Setting up the proper type is very important, because you will need to use all properties set up for <b>LibDataEngine <\/b>object, such as <i>Emergency <\/i>property, for example.<\/p>\n<p>For the <b>3DISAMotor1 <\/b>engine, the <i>OverrideFillMode <\/i>property must be set up as <b>2 &#8211; SolidFill<\/b>, and the fill color should be green, whose values are <b>87, 255, 87<\/b>.<\/p>\n<p>The display&#8217;s value must be linked to <b>LibEngine.engine.Temperature<\/b> expression, where:<\/p>\n<ul>\n<li><b>LibEngine<\/b>: XControl&#8217;s name.<\/li>\n<li><b>Engine<\/b>: property indicating the data source to be displayed.<\/li>\n<li><b>Temperature<\/b>: Engine property&#8217;s characteristic, which is a <b>LibDataEngine <\/b>datatype.<\/li>\n<\/ul>\n<p>Any links or scripts created in an XControl must follow the structure seen above.<\/p>\n<p>The script for<b> On\/Off<\/b> button is this:<\/p>\n<div align=\"left\"><span style=\"font-family: Courier New;\">\u00a0 IF LibEngine.engine.Emergency = 1 then<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0 LibEngine.engine.OnOff = NOT LibEngine.engine.OnOff<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0 IF LibEngine.engine.OnOff = true then<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0\u00a0\u00a0 LibEngine.engine.Status.Value = 1<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0 Else<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0\u00a0\u00a0 LibEngine.engine.Status.Value = 0<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0\u00a0\u00a0 LibEngine.engine.OnOff = false<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0 End IF<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0 Else<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0\u00a0\u00a0 MsgBox &#8220;Engine can&#8217;t be activated!! Check for any failures!!&#8221;<\/span><br \/>\n<span style=\"font-family: Courier New;\">\u00a0 End IF<\/span><\/div>\n<p>The <b>3DISAMotor1 <\/b>figure must be linked to its <i>OverrideFillColor <\/i>property via a table link, and the <b>LibEngine.engine.Emergency*2+LibEngine.engine.Status.Value<\/b> expression must have the following values:<\/p>\n<ul>\n<li>Minimum and maximum values = 2 (green)<\/li>\n<li>Minimum and maximum values = 3 (red)<\/li>\n<li>Minimum = 0 and maximum values = 1 (yellow\/blue blinking)<\/li>\n<\/ul>\n<p>These are the possible results for the expression linked to <i>OverrideFillColor <\/i>property. Then, save the library and register it. To view the developed XControl, access the previously created project and, on <b>InitialScreen<\/b>, insert a <b>LibEngine <\/b>object, and link the <b>LibDataEngine1 <\/b>XObject to its <i>Engine <\/i>property. Run the project and check the result. Notice that the setpoint for <i>Emergency <\/i>variable must be kept, since the tag is not inside the developed objects.<\/p>\n<p><u><b><br \/>\n4) FINAL REMARKS <\/b><\/u><\/p>\n<p>The use of internal and demo tags helps understand the mechanism for creating objects. However, any type of tags (PLC or OPC, for example) can be used for the same purpose.<\/p>\n<p>There are two ways of retrieving or controlling tags from devices with XObjects: by making the I\/O driver and all tags internal to the object, or by creating tags externally and linking each one of them to an XObject&#8217;s property. Your choice will depend on how many IODrivers are available and on how the object will be used.<\/p>\n<p>For example, to retrieve data from a temperature controller, you can use an IODriver internally to the XObject, because all tags refer to this controller. For a substation&#8217;s breakers, on the other hand, it&#8217;s best to create tags externally and then create links for tags in the XObject, because usually the data from a remote unit (PLC for the electric sector) are grouped in the same outlet (Ethernet or serial port, for example) and should be kept separately. The same logic applies to formulas or historics, which should be kept in the database.<\/p>\n<p>As seen in this example, an XObject can work as property for another XObject or even to an XControl.<\/p>\n<p>You should keep your libraries from using resources from the applications, so it won&#8217;t need to be altered when using another project. For example, if the library uses a historic, the database can be passed as parameter, that is, the historic can be saved in any database, as long as it is used as parameter in the library.<\/p>\n<p>Other examples of libraries are available in the Demo project that comes alongside Elipse E3&#8217;s complete installation.<\/p>\n<h3>Attachments:<\/h3>\n<p><a href=\"\/wp-content\/uploads\/2019\/03\/5254.zip\">5254<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>1) INTRODUCTION Using libraries in Elipse E3 is highly recommendable, because they can represent more productivity for your application. Some advantages of using ElipseX are: Reusing code. Less tests during&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[769],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Developing libraries in Elipse E3. - Elipse Knowledgebase<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Developing libraries in Elipse E3.\" \/>\n<meta property=\"og:description\" content=\"1) INTRODUCTION Using libraries in Elipse E3 is highly recommendable, because they can represent more productivity for your application. Some advantages of using ElipseX are: Reusing code. Less tests during&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/\" \/>\n<meta property=\"og:site_name\" content=\"Elipse Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/elipsesoftware\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-25T20:44:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-04T20:05:46+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5254\/1.png\" \/>\n<meta name=\"author\" content=\"Elipse Software\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elipse Software\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/\"},\"author\":{\"name\":\"Elipse Software\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87\"},\"headline\":\"Developing libraries in Elipse E3.\",\"datePublished\":\"2019-03-25T20:44:52+00:00\",\"dateModified\":\"2019-07-04T20:05:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/\"},\"wordCount\":2828,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"XControl \/ XObject \/ Lib\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/\",\"url\":\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/\",\"name\":\"[:pt]Developing libraries in Elipse E3.[:en]Developing libraries in Elipse E3.[:] - Elipse Knowledgebase\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2019-03-25T20:44:52+00:00\",\"dateModified\":\"2019-07-04T20:05:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Developing libraries in Elipse E3.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kb.elipse.com.br\/#website\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"name\":\"Elipse Knowledgebase\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kb.elipse.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\",\"name\":\"Elipse Software\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/elipsesoftware\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"contentUrl\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"width\":161,\"height\":58,\"caption\":\"Elipse Software\"},\"image\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87\",\"name\":\"Elipse Software\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"caption\":\"Elipse Software\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Developing libraries in Elipse E3. - Elipse Knowledgebase","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Developing libraries in Elipse E3.[:en]Developing libraries in Elipse E3.[:] - Elipse Knowledgebase","og_description":"1) INTRODUCTION Using libraries in Elipse E3 is highly recommendable, because they can represent more productivity for your application. Some advantages of using ElipseX are: Reusing code. Less tests during&hellip;","og_url":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2019-03-25T20:44:52+00:00","article_modified_time":"2019-07-04T20:05:46+00:00","og_image":[{"url":"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID5254\/1.png"}],"author":"Elipse Software","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Elipse Software","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/"},"author":{"name":"Elipse Software","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87"},"headline":"Developing libraries in Elipse E3.","datePublished":"2019-03-25T20:44:52+00:00","dateModified":"2019-07-04T20:05:46+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/"},"wordCount":2828,"commentCount":0,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["XControl \/ XObject \/ Lib"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/","url":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/","name":"[:pt]Developing libraries in Elipse E3.[:en]Developing libraries in Elipse E3.[:] - Elipse Knowledgebase","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2019-03-25T20:44:52+00:00","dateModified":"2019-07-04T20:05:46+00:00","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/en\/developing-libraries-in-elipse-e3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Developing libraries in Elipse E3."}]},{"@type":"WebSite","@id":"https:\/\/kb.elipse.com.br\/#website","url":"https:\/\/kb.elipse.com.br\/","name":"Elipse Knowledgebase","description":"","publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kb.elipse.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kb.elipse.com.br\/#organization","name":"Elipse Software","url":"https:\/\/kb.elipse.com.br\/","sameAs":["http:\/\/www.facebook.com\/elipsesoftware"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","contentUrl":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","width":161,"height":58,"caption":"Elipse Software"},"image":{"@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87","name":"Elipse Software","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","caption":"Elipse Software"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/3558"}],"collection":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=3558"}],"version-history":[{"count":2,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/3558\/revisions"}],"predecessor-version":[{"id":7427,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/3558\/revisions\/7427"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=3558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=3558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=3558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}