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 757
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 586
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 343
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 786
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 692
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 645
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 358
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 785
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 279
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 382
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 462
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 981
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 538
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 3 3.4K
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 355
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 3.9K
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 391
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 764
Article Eduard Lebedyuk · Apr 17, 2017 4m read Debugging Web In this article I'll cover testing and debugging Caché web applications (mainly REST) with external tools. Second part covers Caché tools. You wrote server-side code and want to test it from a client or already have a web application and it doesn't work. Here comes debugging. In this article I'll go from the easiest to use tools (browser) to the most comprehensive (packet analyzer), but first let's talk a little about most common errors and how they can be resolved. #Best Practices #CSP #Debugging #Frontend #REST API #SOAP #Caché 16 2 5 3.4K