Article Eduard Lebedyuk · Sep 4, 2017 5m read RESTForms - REST API for your classes. Part 2: Queries In the first article I started discussing RESTForms - REST API for your persistent classes. We talked about basic features, now, I'd like to discuss advanced features - mainly queries capabilites: Basic queries Query arguments Custom queries Queries Queries allow getting slices of data, based on arbitrary criteria. There are two query types in RESTForms: Basic queries work for all RESTForms classes once defined and they differ only by the field list Custom queries work only for the classes in which they are specified and available, but the developer has full access to query text #Frontend #SOAP #Caché 3 2 2 1.7K
Question Eduard Lebedyuk · Aug 31, 2017 What's the fastest way to check if one class is a subclass of another I need to check if one class is a subclass of another (either direct or indirect). For example: Class Package.ClassA Extends %Library.Persistent { } Class Package.ClassB Extends Package.ClassA { } Class Package.ClassC Extends Package.ClassB { } In this example Package.ClassC is a subclass of 3 classes: %Library.Persistent, Package.ClassA, Package.ClassB. So any of these checks should return 1: #Beginner #Caché 0 3 0 810
Question Eduard Lebedyuk · Aug 31, 2017 How do I get a list of classes that are subclasses of 2 unrelated classes? I need to get a list of all classes that are subclasses of two unrelated classes. For example I want to get a list of all classes that are both: Persistent (extends %Library.Persistent)XML-Enabled (extends %XML.Adaptor) To get subclasses of one class I can use this query: set rs = ##class(%Dictionary.ClassDefinitionQuery).SubclassOfFunc("%Library.Persistent") But what about two classes? #Caché 1 6 0 603
Question Eduard Lebedyuk · Aug 29, 2017 Parameters SERVICEINPUTCLASS and SERVICEOUTPUTCLASS - what are they? Several Ensemble adapters have SERVICEINPUTCLASS and/or SERVICEOUTPUTCLASS parameters defined. For example: Class EnsLib.HTTP.InboundAdapter Extends EnsLib.TCP.InboundAdapter { Parameter SERVICEINPUTCLASS = "%Stream.Object"; Parameter SERVICEOUTPUTCLASS = "%Stream.Object"; ... } What are they for? #Ensemble #Business Service 0 4 0 356
Question Eduard Lebedyuk · Aug 8, 2017 Apache server and directory index I have a Caché server with external apache. It has a hostname, i.e.: http://myserver.com There is an index page, which is available over http://myserver.com/index.html (/ is a Caché CSP app) How can I make index.html available from http://myserver.com? Here's the relevant parts of my apache config: #Frontend #Caché 0 3 0 810
Question Eduard Lebedyuk · Jul 26, 2017 Ensemble async passthrough configuration I'm trying to create asynchronous Ensemble service/operation pair for SOAP passthrough.General configuration:Ensemble Service receives a message and immediately returns an answer to a caller (message received or some error)Ensemble Service asynchronously calls Business OperationBusiness Operation does guaranteed message delivery, etc.Is it a viable approach?Any tips? Ideas? Caveats? Code?Seems like I can sublass EnsLib.SOAP.GenericService and change Sync to ASync (and provide a default reply immediately). #Business Operation #Business Service #Ensemble 0 3 0 708
Question Eduard Lebedyuk · Jul 26, 2017 Ensemble passthrough configuration I have tried to create Ensemble SOAP passthrough operation following this guide. Here's my production configuration (after steps 1-4): #Business Operation #Business Service #Interoperability #Ensemble 1 3 0 656
Question Eduard Lebedyuk · Jul 14, 2017 How can I determine if a query is an SQL or an MDX query I have a query text that I need to execute and return results as xml.It may be an SQL query or an MDX query. Is there some easy way to determine which one is it?Any ideas? #InterSystems IRIS BI (DeepSee) #MDX #SQL #Caché 0 2 0 374
Article Eduard Lebedyuk · Jul 12, 2017 4m read Visualizing Ensemble Workflow task execution In this article, I'd demonstrate how you can visualize the usage of Ensemble Workflow with DeepSee (tested on 2015.1 and later). #InterSystems IRIS BI (DeepSee) #Ensemble #Business Operation 3 0 0 810
Question Eduard Lebedyuk · Jul 11, 2017 Localization of DeepSee Pivots How can I localize arbitrary column name in DeepSee pivot?If a column name is a dimension or a measure I can localize using architect following this guide.But what about some random string?I have tried setting:Value$$$Value$$$Value/MYDOMAINas a Caption, but every option simply displays as is. #InterSystems IRIS BI (DeepSee) #Analyzer #Localization 0 1 0 290
Question Eduard Lebedyuk · Jul 10, 2017 How can I make my text behave in accordance with gravity? Hi, Community! And so I continue with publishing of the tasks for the Final round of InterSystems Contest on InterSystems Caché and DeepSee as a part of IT Planet Student Championship in Sochi. This year we had about 2 000 participants in InterSystems Contest. One of the tasks for the finals was to crack the black box and another to output 9876543210! Here's the next task: gravity! #Caché 1 3 0 395
Question Eduard Lebedyuk · Jun 26, 2017 iFind and HTML text I have a class with text property, which contains html text (usually pieces, so it may be invalid), here's a sample value: <div moreinfo="none">Word1 Word2</div><br> <a href = "123" >Word3</a> When I add iFind index on text, there are at least two problems: #iFind #InterSystems Natural Language Processing (NLP, iKnow) 1 4 0 474
Question Eduard Lebedyuk · Jun 19, 2017 Can you crack the Black Box? Hi, Community!And so I continue with publishing of the tasks for the Final round of InterSystems Contest on InterSystems Caché and DeepSee as a part of IT Planet Student Championship in Sochi. This year we had about 2 000 participants in InterSystems Contest.One of the tasks for the finals was to crack the black box! #Object Data Model #Caché 2 7 0 1K
Question Eduard Lebedyuk · Jun 13, 2017 Force %SOAP.WebRequest to output XML without new lines or whitespaces I'm using %SOAP.WebRequest to send SOAP requests:Populate %SOAP.WebRequest object (by setting Request and HeadersOut properties)Call SendSOAPBody method to send requestCurrently the XML I send looks like this: <?xml version="1.0" encoding="UTF-8" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'> <SOAP-ENV:Header> <SomeCustomHeader/> </SOAP-ENV:Header> <SOAP-ENV:Body><SomeCustomBody/></SOAP-ENV:Body> </SOAP-ENV:Envelope> However, I want XML to be generated differently: No new linesNo whitespaces between <SomeCustomHeader/> and </SOAP-ENV:Header> How can I tweak XML generation to achieve that? #SOAP #XML #Ensemble 0 6 0 564
Article Eduard Lebedyuk · Jun 7, 2017 10m read Debugging Web - Part 2 In the first article I discussed testing and debugging Caché web applications with external tools. Second part would cover Caché tools. They are: CSP Gateway and Webapp configuration CSP Gateway logging CSP Gateway tracing ISCLOG Custom logging Session events Output to device #Best Practices #Debugging #Frontend #Caché 8 6 4 3.6K
Question Eduard Lebedyuk · Jun 6, 2017 Output 9876543210 without using numbers Hi, Community! Last weekend we held the Final of InterSystems Contest on InterSystems Caché and DeepSee as a part of IT Planet Student Championship in Sochi. BTW, this year we had about 2 000 participants in InterSystems Contest. #Caché #Contest #ObjectScript 4 23 0 1.1K
Question Eduard Lebedyuk · May 24, 2017 DDL for collection properties How do I write DDL script for collection properties? For example I want to create the following class: Class SQLUser.Person { Property Name As %String; Property FavoriteColors As list Of %String; } My DDL script looks like this: CREATE TABLE Person (Name varchar(50), FavoriteColors ???) #Caché #SQL 0 4 0 368
Question Eduard Lebedyuk · May 24, 2017 How do I get a list of files in directory including subdirectories? I'm aware of two ways to get list of files in a dir: set dir = "C:\temp\" set rs = ##class(%File).FileSetFunc(dir, , , 1) do rs.%Display() and: set dir = "C:\temp\" set file=$ZSEARCH(dir_"*") while file'="" { write !,file set file=$ZSEARCH("") } Yet they bot return only files and directories in a current directory, but not files in subdirectories. I suppose I call one of these recursively, but maybe there's a better solution? #Beginner #Caché #Code Snippet 1 25 1 4K
Question Eduard Lebedyuk · May 23, 2017 How to get the time of Business Service start I have a business service and I want to know when did the current business service job started.Is there a way to get this information from Ensemble? #Ensemble #Business Operation #Business Process (BPL) #Business Service 0 2 0 403
Question Eduard Lebedyuk · Apr 26, 2017 How can I get post REST callback I heed to his a callback method after all REST call. I have already found a method to call before REST call, but after eludes me. Here's the code: #REST API #Caché 0 5 0 781