开发者中心

Hello, world!

概述

本节给出了一个非常基本的例子,QuarkIoE通过Maven构建工具使用java SE。假如你使用Maven支持Eclipse版本,也可以直接从Eclipse运行。在最新的Eclipse IDE for EE Developers版本中,Maven默认是支持的。

首先

确认Maven 3 安装在Java (6 or 7):


  $ mvn -v
  Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
  Maven home: /usr/local/Cellar/maven/3.1.1/libexec
  Java version: 1.7.0_45, vendor: Oracle Corporation
  Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre
  Default locale: en_US, platform encoding: UTF-8
  OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac"
             

Maven可以从 http://maven.apache.org 下载。

开发"Hello, world!" agent

要开发QuarkIoE上非常简单的"Hello, world!" agent,你需要:

  • 创建一个 Maven 工程。
  • 添加一个QuarkIoE与你的Java客户端库的依赖关系到Maven pom.xml。
  • 创建一个Java应用。
  • Build然后运行Java应用。
创建一个Maven项目

用Maven创建一个plain Java 项目,运行


 $ mvn archetype:generate -DgroupId=c8y.example -DartifactId=hello-agent nt -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
              

在当前目录下会创建一个文件夹"hello-agent",包含你的项目的框架结构。

添加Java客户端库

编辑"hello-agent"目录下的"pom.xml"。添加指向QuarkIoEMaven repository的"repositories" 和"pluginRepositories"元素,这里存储着客户端库。


  <repositories>
  <repository>
  <id>cumulocity</id>
  <layout>default</layout>
  <url>http://download.cumulocity.com/maven/repository</url>
  </repository>
  </repositories>
  <pluginRepositories>
  <pluginRepository>
  <id>public</id>
  <url>http://download.cumulocity.com/maven/repository</url>
  </pluginRepository>
  </pluginRepositories>
            

添加指向Java 客户端库("java-client") 和QuarkIoE域模型("device-capability-model")的"dependency"元素到"dependencies"部分。


  <dependency>
  <groupId>com.nsn.cumulocity.clients-java</groupId> 
  <artifactId>java-client</artifactId>
  <version>6.4.0</version>
  </dependency>
  <dependency>
  <groupId>com.nsn.cumulocity.model</groupId>
  <artifactId>device-capability-model</artifactId>
  <version>6.4.0</version>
  </dependency>
            

要使用最新版本的客户端库,编辑"version"元素。可以在QuarkIoE帮助中心的 "Announcements" 部分找到版本号。编辑后的完整文件可以在 这里找到。

创建一个Java应用

用下面的内容编辑在"hello-agent/src/main/java/c8y/example"文件夹下的 "App.java" 文件中:


    package c8y.example;

    import c8y.IsDevice;
    import com.cumulocity.model.authentication.QuarkioeCredentials;
    import com.cumulocity.rest.representation.inventory.ManagedObjectRepresentation;
    import com.cumulocity.sdk.client.Platform;
    import com.cumulocity.sdk.client.PlatformImpl;
    import com.cumulocity.sdk.client.inventory.InventoryApi;

    public class App 
    {
    public static void main( String[] args )
    {
    Platform platform = new PlatformImpl("<<yourURL>>", new QuarkioeCredentials("<<yourUser>>", "<<yourPassword>>"));
    InventoryApi inventory = platform.getInventoryApi();
    ManagedObjectRepresentation mo = new ManagedObjectRepresentation();
    mo.setName("Hello, world!");
    mo.set(new IsDevice());
    mo = inventory.create(mo);
    System.out.println("URL: " + mo.getSelf());
  }
}
            

用自己的URL (e.g., "https://myurl.quarkioe.com"), username and password替换 "<<yourUrl>>", "<<yourUser>>" 和 "<<yourPassword>>"。

"main"里的代码都做了什么?

  • 行 1 连接agent到平台。
  • 行 2 取回一个指向你的QuarkIoE设备列表的handle。
  • 行 3 创建一个新的托管对象。
  • 行 4 设置托管对象的显示名称。
  • 行 5 声明托管对象是一个设备(会显示在设备管理中)。
  • 行 6 在设备列表中创建托管对象,将会返回一个带有新产生的ID的托管对象 (参见 "QuarkIoE领域模型""对象身份标识" 部分)。
  • 行 7 输出指向刚存储在设备列表中的托管对象的URL。
Build和运行agent

要build并且运行你的agent:


  $ cd hello-agent
  $ mvn clean install
  [INFO] Scanning for projects...
  [INFO]                                                                         
  [INFO] ------------------------------------------------------------------------
  [INFO] Building hello-agent 1.0-SNAPSHOT
  [INFO] ------------------------------------------------------------------------
  ...
  $ mvn exec:java -Dexec.mainClass="c8y.example.App"
  [INFO] Scanning for projects...
  [INFO]                                                                         
  [INFO] ------------------------------------------------------------------------
  [INFO] Building hello-agent 1.0-SNAPSHOT
  [INFO] ------------------------------------------------------------------------
  [INFO] 
  [INFO] --- exec-maven-plugin:1.3.2:java (default-cli) @ hello-agent ---
  [WARNING] Warning: killAfter is now deprecated. Do you need it ? Please comment on MEXEC-6.
  SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  SLF4J: Defaulting to no-operation (NOP) logger implementation
  SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  URL: http://demos.cumulocity.com/inventory/managedObjects/110160902
             

最后一行说明用一个特定的URL成功创建了一个新设备。打开QuarkIoE应用,然后转到设备列表。 你应该看到一个新的 "Hello, world!" 设备。

Hello world device

Got an error message? 查看 故障排除部分

改进agent

做完了第一步,, 可以继续章节 开发Java客户端 或者查看 完整例子