E N D
Data challenges 3030303030393534303035343130303030303130324241534532342D45505343414645582020202020303030303030303030302031343031323931343338323031342D30312D32392031332E33382E30372E3637352E303231343031323931343338303320202020202020202020202020202020202020202044425452414E3234322E3420204644495F30303030303131382020202032303134303132393133333830373637353030303030302020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020203134303132393134333830332020202020202020303030303239313333383037303030353537333531303630383638333134344120202020202020202020202020202020202020202020202020202020202020202020202020323031353031303120202020202020202020202020202020202020202020202020202020202020202020202020202020202020203230313430313239313333383037303030303030303031302E303038323630303030303030303030303030414D3534393947312032484C202020474252492056202020202020202020202030202020202020202020203120202020202020202020202020202020202020202020202020202020202020202020592020202020202020202020202020202020202020202020202020202020202020202020202053686F7070696E672063656E74726520202020202020202020202020202020202020202020202020476C6173676F77202020202020202020202020202020202020202020202047425220203131202020202020202020202020202020202020202020203030303035353733353130363038363833313434202020202020202020202020202020202020202020202020202020202020202020202020202020204F202020202020202020202020202020202020202020202020202020204E4E2059594E4E203030303030303030303030303030303030303030303030303030303030303030303030303030302020202030303230303020202020202020323736393031202020202020383236323030303030303220202020202020202020303120202020204120203830303030343030303006010A03E0810730303420202020202030363838382020202020202020202020202020202020202020202020202020202030303931312034353839363537383532343638323120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020203535373335313036303836383331343420202030313135303120202020202031313030303020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
What is AtomBox Out of the box solution for quick and easy data access
Key components • Atom/Box Data Model • AtomBox Script
AtomBox Data Model Understands your data
Atom/Box Data Model • Atom – the data unit • Holds a value – the smallest logical data unit • Packs (consumes)binary data into the internal storage • Unpacks the internal storage into binary data • Does validation against defined constraints • Has internal states – OK, WARNING, ERROR, DEFAULT • Emits SIGNALS – when packed, unpacked, value/state changed
Atom/Box Data Model • Box – The container • Container of other Boxes and Atoms (does not hold a value) • Packs (consumes)binary data into the contained atoms and boxes • Unpacks the model into a binary data • Has internal states – OK, WARNING, ERROR, DEFAULT (all depending on its Atoms/Boxes it contains) • Emits SIGNALS – when packed, unpacked, value/state changed
Atom/Box DDL • Textual Domain Specific Language aiming at describing any kind of data. • Compatible with HP NonStop DDL • Custom DDL language extensions for dynamic data: • VLENGTH DEPENDING ON • VLENGTH DELIMITED BY • ISOBITMAP • CHOICE – speculative parsing • EBCDIC – character set • Others. • Direct mapping to an Atom/Box Data Model
Other Atom/Box mappings • ACI’s metadata storage CSV – file • Generated by MetaMan utility • Direct mapping to an Atom/Box Data Model • Further possible improvements includes: DFDL for IBM – Message Broker, or a Graphical DSL
{ workflow: { }<16><OK>, recordType_mb: {DBTRAN21}<8><Warning>, dataSpecificationVersion: {2.4 }<5><OK>, clientIdFromHeader: {FDI_00000118 }<16><OK>, recordCreationDate: { yyyy: {2014}<4><OK>, mm: {1}<2><OK>, dd: {29}<2><OK> }, recordCreationTime: { hh: {13}<2><OK>, mm: {38}<2><OK>, ss: {7}<2><OK> }, recordCreationMilliseconds: {675}<3><OK>, gmtOffset: {0}<6><OK>, customerIdFromHeader: { }<20><OK>, customerAcctNumber: { }<40><OK>, externalTransactionId: {140129143803 000029133807}<32><OK>, pan: {0005573510608683144}<19><OK>, authPostFlag: {A}<1><OK>, cardPostalCode: { }<9><OK>, cardCountryCode: { }<3><OK>, openDate: { }<8><OK>, plasticIssueDate: { }<8><OK>, cardExpireDate: { yyyy: {2015}<4><OK>, mm: {1}<2><OK>, dd: {1}<2><OK> }, transactionDate: { yyyy: {2014}<4><OK>, mm: {1}<2><OK>, dd: {29}<2><OK> }, transactionTime: { hh: {13}<2><OK>, mm: {38}<2><OK>, ss: {7}<2><OK> }, transactionAmount: {0}<13><Warning>, transactionCurrencyCode: {826}<3><OK>, transactionCurrencyConversionRate: {0}<13><OK>} userData01: { ref_anti_ref_days: { }<3><OK>, vac_cntry_cd: { }<3><OK>, user_ind_4: { }<2><OK>, card_act_stat: { }<1><OK>, ed_card_tech: {1}<1><OK> }, userData02: { acct_block_code_1: { }<1><OK>, acct_block_code_2: { }<1><OK>, card_block_code: { }<1><Warning>, bs_user_field_50: { }<1><OK>, amed_fraud_monitor: { }<2><OK>, some_filler: { }<4><OK> ……… Atom/Box model
No data model is complete without an easy way of accessing it.
AtomBox Script Do more with less code
Functional vs Imperative programming • Imperative programming • You tell the computer WHAT to do • Functional programming • You DESCRIBE what you want rather HOW you want something done
JavaScript – The (only) language of the Web now coming to the Server • One of the world most popular language • Part of the WEB 2.0 revolution • Functional programming paradigm • Easy to use • Unlimited talent pool available • Built with the latest technologies (QT and C++)
AtomBox Script • Based on the latest ECMA standards • Direct mapping from Atom/Box data models to JavaScript classes (Atom/Box instances) • Runs on multiple platforms: • UNIX, HP NonStop – Guardian and Windows • Asynchronous and event based • Remote debugging capabilities
AtomBox Script (cont) • Full set of cross-platform API’s for: • Binary classes and streams • Accessing file systems and processes, terminals • Cryptography (including EFT modules) • TCP/IP Networking – including a TCP/IP server • Built-in WEB server for creating WEB Services • SQL module • XML • Extensive documentation
AtomBox Script examples: !file helloddl! DEFINITIONHelloClass. 02 message. 04 part1 PIC X(5). 04 part2 PIC X(5) DEFAULT "world" MUST BE "world". END. var console = require("console"); //load the ddl that describe the message var Hello = require("helloddl","ddl").HelloClass; var o = new Hello(); //create an object of class Hello o.message.part1.value = "Hello"; //change the value of the part1 //unpack the message, decode the resulting ByteArray to a String //and invoke the `write` function on the 'console' object console.write(o.unpack().decodeToString());
AtomBox Script examples: // // TCP/Server Server example // var net = require("net"); var server = newnet.TcpServer(); server.listen(8150); // Connect the newConnection signal server.newConnection.connect(function() { // Accept the client connection var client = server.nextPendingConnection(); client.write(“Hello World!”.toByteArray()); // Wait for the server to send the message and then disconnect client.bytesWritten.connect(function() { client.disconnectFromHost(); //close the connection }); });