Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Implementing Cloud-Based Productivity Solutions with the AutoCAD® ObjectARX® API Ravi Krishnaswamy Senior Software Architect © 2012 Autodesk Class Summary Goal: show how to leverage powerful web service based platforms and applications in AutoCAD. At the end of this class: one should have the basic tools and knowledge to implement Arx applications with the cloud platform web services, such as the Google APIs or any other cloud ‘Platforms as a Service’. NOTE: This class includes several advanced programming topics © 2012 Autodesk Learning Objectives At the end of this class, you will be able to: Implement an Arx application for Google Docs Learn about Google’s Data store – and differences from traditional data stores Create an Arx app that uses the Google App Engine Learn about metering and costs of running a PaaS application You will also learn about the open source libraries and tools used to implement the solutions. © 2012 Autodesk ACAD.EXE GDOCS.ARX OAuth2 REST Arx APIs Spreadsheet API JNI, Jersey, Jetty Demo! Google APP ENGINE Google DOCS Scopes Application registration High Replication Data Store GAE App deployment/frontends © 2012 Autodesk Libraries and Tools © 2012 Autodesk Java Tools and setup Java SE http://www.oracle.com/technetwork/java/javase/downloads JSE7 or JSE6 Eclipse http://www.eclipse.org/downloads/ JNI: Java to native (add C:\Java\jre7\bin;C:\Java\jre7\bin\server) to path © 2012 Autodesk Google SDKs Google Client APIs http://code.google.com/p/google-api-javaclient/wiki/APIs#Google_OAuth2_API http://code.google.com/p/gdata-java-client/downloads/list Google App Engine SDK and Eclipse plugin https://developers.google.com/appengine/downloads https://developers.google.com/eclipse/docs/download © 2012 Autodesk Java Libraries Jetty. Lightweight web server for OAuth2 authentication http://www.eclipse.org/jetty/downloads.php Jersey. Library to make REST implementation very easy. http://jersey.java.net http://jersey.java.net/nonav/documentation/latest/chapter_deps.html © 2012 Autodesk AutoCAD apis AcDbTable Entity setValue(), value(), setSize() AcDbXrefGraph AcDbXrefGraphNode, rootNode(), numOut(), out() © 2012 Autodesk The Docs API © 2012 Autodesk Create account, register id http://accounts.google.com https://code.google.com/apis/console Register for services Create credentials and client secret © 2012 Autodesk Scopes https://developers.google.com/academy/apis/drive/driveapps/auth/scopes https://developers.google.com/google-apps/spreadsheets/ private static final String[] scopes = { "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", "https://docs.google.com/feeds", "https://spreadsheets.google.com/feeds" }; © 2012 Autodesk Authentication and Authorization OAuth2 https://developers.google.com/accounts/docs/OAuth2 Credentials, and Credentials Storage public static int createOAuth2Authorizer() public static int setJsonCredentials(int authIndex, String jsonCredentials) public static int setScopes(int authIndex, String[] scopes) public static int authorize(int authIndex) public static String getAccessToken(int authIndex) Setting access token String accessToken = Authorizer.getAccessToken(mAuthorizer); mSpreadsheetService.setHeader("Authorization", "Bearer " + accessToken); © 2012 Autodesk Connecting it together © 2012 Autodesk Step by Step We downloaded the JDK, downloaded and installed the libraries and SDKs, installed Eclipse and the App Engine plugin for eclipse. 2. We registered our app id in our google account, generating the client secret json. 3. We imported or created two eclipse Java projects: 1. a) b) The OAuth2 project The google docs project And exported two runnable jars, selecting the option to copy referenced libraries to a subdirectory. 5. We created a VS2010 JNI project – with the C++ access to the java APIs, making sure the .jars created in step 3 are loaded. 6. We created an ARX app, incorporating the JNI apis, and commands to get/set the spreadsheet data to the AcDbTable entity. 7. We set NEXTFIBERWORLD to 0 in AutoCAD, quit, and noted in the next session, FIBERWORLD was 0. We then ran the app. 4. © 2012 Autodesk The Google App Engine © 2012 Autodesk The App Engine and Data Store The App Engine is the server part of our application on the Google platform. The following link gives a step by step procedure of creating an account https://developers.google.com/web-toolkit/doc/latest/tutorial/appengine This is integrated in Eclipse File New Project – ‘Google’ © 2012 Autodesk High Replication Data Store For details and an overview. https://developers.google.com/appengine/docs/java/datastore/ Key concepts for the store are the notion of Entities – these are the referenceable objects that hold properties Properties – these are named properties and entity has Kind – this qualifies the type of entity being created Key - this is an object that lets you reference an entity. © 2012 Autodesk The References problem Item has ContentId and LocalPath Item has a list of references Determine: Given a content Id What are nodes with different local paths with the same content What are the references What are the referencers © 2012 Autodesk Implementation of references Xref graph api: host dwg is root, xrefs are child nodes Use timestamps and special request header information for region, city Qualify content and references query by Date/Time. I.e. between specific dates. Qualify content and references query by region. I.e. city/state/country. © 2012 Autodesk Step by Step 1. 2. 3. 4. 5. 6. 7. Create and setup an Eclipse project for GAE, including installing the GAE sdk and the GAE plugin. Implement, using Jersey, REST apis that log a FileItem and its references in the High Replication Data Store. Deploy that app to GAE from within eclipse. Implement a Java client app using Jersey to invoke the REST apis to put a FileItem, and get references and references to a file item. Implement a JNI layer to invoke the Java client apis Integrate the JNI calls into the ARX app that implements the GAELOGREFS, GAEGETREFS and GAEGETREFSTO commands. Run the arx app, making sure FIBERWORLD is 0. © 2012 Autodesk Metrics and Billing © 2012 Autodesk Google Client API • • • • Free quota Wide range of services Some services have billing Ability to view usage profile © 2012 Autodesk GAE usage and billing Billing information at: https://developers.google.com/appengine/docs/billing Complex Billing • Bandwidth • Instance hours (backend and frontend) • Database operations (read, write, small) • Storage © 2012 Autodesk Azure Windows Azure Cloud Services: PaaS App doesn’t remember state, kept in DataStore services Also has web role and worker role instances (frontend/backend) Like GAE – create web role, create package, deploy to cloud. Integrated in Visual Studio Azure provides IaaS. Specify VHD and VM size (like AMI in Amazon). Billing: http://www.windowsazure.com/enus/pricing/calculator/?scenario=full © 2012 Autodesk Thank You! © 2012 Autodesk Autodesk, AutoCAD* [*if/when mentioned in the pertinent material, followed by an alphabetical list of all other trademarks mentioned in the material] are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders. Autodesk reserves the right to alter product and services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document. © 2012 Autodesk, Inc. All rights reserved. © 2012 Autodesk