/o//commerce-media/accounts/-1/images/18541149?download=true
LIoT - IoT Plugins for Liferay
DXP App
The idea behind this project is to transform liferay in an IoT
Technologies manager exploiting its core functionalities such as message
bus allowing to connect it to the major streaming technologies or
queues. The other crucial idea is to control a Big Data environment such
as Apache Spark. From the control panel you can:
• Insert a new connection to a broker: specifying properties such as topics, or custom properties. The available brokers are:
o Mqtt
o Kafka
• Define a Broker Listener, a way to decide where data coming from broker must to be sent. At now the only broker listener is Message Bus. This means that at the beginning of your project you can connect liferay to a broker and receive directly on the MESSAGE BUS all data coming from it.
• Setup Apache Spark by loading jars, schedule jobs on the fly, or schedule jobs on events or dates.
• Use the internal API exposed by REST services to raise events (and fire spark jobs) or manage data inside the platform.
Those are few things that you can do with this plugin, but this is the starting point, we hope that with you help we can increase the functionalities and transform liferay in a IoT platform.
Tutorial video here: https://www.youtube.com/watch?v=Epy_b2R_bEc&feature=youtu.be
• Insert a new connection to a broker: specifying properties such as topics, or custom properties. The available brokers are:
o Mqtt
o Kafka
• Define a Broker Listener, a way to decide where data coming from broker must to be sent. At now the only broker listener is Message Bus. This means that at the beginning of your project you can connect liferay to a broker and receive directly on the MESSAGE BUS all data coming from it.
• Setup Apache Spark by loading jars, schedule jobs on the fly, or schedule jobs on events or dates.
• Use the internal API exposed by REST services to raise events (and fire spark jobs) or manage data inside the platform.
Those are few things that you can do with this plugin, but this is the starting point, we hope that with you help we can increase the functionalities and transform liferay in a IoT platform.
Tutorial video here: https://www.youtube.com/watch?v=Epy_b2R_bEc&feature=youtu.be
DEVELOPER
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing: ==> product.publisherName [in template "3192443#3192485#null" at line 28, column 23] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: publisherName = product.publisherName [in template "3192443#3192485#null" at line 28, column 9] ----
1<#if themeDisplay?has_content>
2 <#assign scopeGroupId = themeDisplay.getScopeGroupId() />
3</#if>
4
5<#if currentURL?has_content>
6 <#if currentURL?contains('web')>
7 <#assign
8 index = 2
9 partsUrl = currentURL?split('/')
10 siteName = partsUrl[index..index]?join('/')
11 />
12 </#if>
13</#if>
14
15<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") />
16
17<#if channel?has_content>
18 <#assign channelId = channel.items[0].id />
19</#if>
20
21<#if (CPDefinition_cProductId.getData())??>
22 <#assign productId = CPDefinition_cProductId.getData() />
23</#if>
24
25<#assign
26 product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications")
27 productSpecifications = product.productSpecifications![]
28 publisherName=product.publisherName
29/>
30
31<#if publisherName?has_content>
32 <#assign publisePages=restClient.get("/c/publisherdetailses?filter=catalogName eq '${publisherName}'" ) />
33 <#assign redirectPath="https://marketplace-uat.liferay.com/e/publisher-details/29282497"/>
34
35 <#if publisePages?has_content>
36 <#assign publisePage=publisePages.items />
37 <#if publisePage?has_content>
38 <#assign publisherDetail=publisePage[0]/>
39 </#if>
40 </#if>
41</#if>
42
43<div>
44 <#if productSpecifications?has_content>
45 <#assign developerNames = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "developer-name")) />
46
47 <#if developerNames?has_content>
48 <#list developerNames as developerName>
49 <#if publisherDetail?has_content>
50 <a class="bg-neutral-8" href="${redirectPath}/${publisherDetail.id}">
51 ${developerName.value}
52 </a>
53 <#else>
54 <a class="bg-neutral-8" href="/?developer-name=${developerName.value}">
55 ${developerName.value}
56 </a>
57 </#if>
58 </#list>
59 </#if>
60 </#if>
61</div>
DEVELOPER
2024-11-21 18:10
Published date
2024-11-21 18:10
Published Date
2024-11-21 18:10
SUPPORTED OFFERINGS
Liferay PaaS, Liferay Self-Hosted
Supported Versions
6.2
Resource Requirements
Edition
CE
PRICE
Free
help & support
HTML Example
A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.