Article Dmitry Maslennikov · Feb 21, 2016 6m read

Some days ago Alberto has written a very interesting article about the usefulness of ObjectGenerators available in Caché.

In this article, Alberto shows an example RuleEngine based on XData, and how it is possible to improve the process of filling such rules. Caché Studio has a Studio Asist for XData; you may have already seen examples of it if you use ZEN or %Installer.Manifest.

We can use the %XGEN.AbstractDocument class for our task.Unfortunately, InterSystems has marked these classes (all of classes in %XGEN, in fact) as for internal use only.

2
0 1008
Article Evgeny Shvarov · Feb 1, 2016 1m read

Hi, InterSystems Developer Community!

We are working to improve this site to make it comfortable to read, contribute, share and get answers from InterSystems Developer Community!

But while we haven't fixed some UI issues please find in this post some simple answers on how to deal with Developer Community.

How to add post?

Open Communities page, choose desired e.g. Caché and click "Create New Post" button.

How  to subscribe to the post's updates?

To subscribe to post's updates and get them via email click on Favorite link under the post digest.  For example:

How  can I manage post's header ?

Suppose

17
0 555
Article Alberto Fuentes · Feb 19, 2016 3m read

The attached file contains an example of code generation using ObjectGenerators which builds a very simple homemade RuleEngine. 

Code generation is an excellent way of increasing performance moving run-time calculations to compile-time.

We could generate code creating routines or implemeting methods using ObjectGenerators. In this example we are using ObjectGenerators.

Update: Rule Engine is now on GitHub https://github.com/intersystems-ib/cache-iat-ruleengine

A very simple code generated method

For starters, let's begin with a very basic code generated method:

  • We want to implement ConvertToCSV meth
0
0 978
Question Joel Solon · Feb 18, 2016

This morning on the old Caché Google Group, someone posed the following question, which I've decided to answer here, because it's interesting!

Is there a way to iterate ClassMethod's params, and get param's names and values?

The first answer I can come up with is: it's not easy! In any method, you could try to write code like this (where methodName is the name of your method):

    set method = ##class(%Dictionary.MethodDefinition).IDKEYOpen($classname(), methodName)
    set args = method.FormalSpec
    for i=1:1:$length(args, ",") {
        set arg = $piece($piece(args, ",", i), ":", 1)
1
1 1943
Question Tiago Ribeiro · Feb 18, 2016

The cache has error messages default, for example , " -139 SQLCODE : Competition impairment on the update: row versions are not the same. "

How i can exchange it for a more friendly to the user's message? I use the CSP.Page and form_save ( ).

What is best practice for this situation?

3
0 1130
Announcement Andreas Schneider · Feb 17, 2016

Caché Monitor is a database\sql tool primarily for InterSystems Caché but can also connect to MS SQL Server, MS Access and more databases. Within Caché Monitors Server Navigator you see all available Namespaces on your Caché Servers. No need to know the name of the Namespace, no need to configure many many JDBC Connections by hand. Just click on the namespace and see all objects like tables, views, classes and more...

There is a beta build available with some new features: A main new feature in this build is called Query Cloud. With this feature you can write SQL Statements across multiple

2
0 2538
Question Rich Taylor · Feb 8, 2016

In preparation for a presentation I need a  real-world LDAP schema that has been customized a bit beyond the basics.   Perferably this would be based on an OpenLDAP system which would make it easier to merge into this presentation. 

If you have such a schema you would be willing to share please respond or contact my directly at Rich.Taylor@InterSystems.com

Thanks in advance.

Rich Taylor

1
0 390
Question Scott Beeson · Feb 16, 2016

Here is my original query:

SELECT EventType, InitiatedAt, COUNT(*) as cnt
FROM HS_IHE_ATNA_Repository.Aggregation
WHERE EventType = 'LOGIN'
AND LocalDateTime > '2016-02-16 11:00:00'
GROUP BY EventType, InitiatedAt

This gives me data like this:

LOGIN %SYSTEM 69918
LOGIN OTHER 39


However, I need to get the data back as two columns with all but the last concatenated and delimited, more like this:

LOGIN;%SYSTEM 69918
LOGIN;OTHER 39

I tried this:

SELECT EventType + ';' + InitiatedAt as k, COUNT(*) as cnt
FROM HS_IHE_ATNA_Repository.Aggregation
WHERE EventType = 'LOGIN'
AND LocalDateTime > '2016-02-16
3
0 7181
Question Steve Pisani · Feb 15, 2016

Hi,

Given a log file with these records representing, hypotethically, the ‘movements’ or changes in residential city, for citizens, like this: 

 ID           CitizenRef           RelocationDate                 City                        Surname
...
 48          1000                       2015-04-01                          Boston                  Smith
 49          1000                       2015-07-01                          Seattle                  Smith
 50          1000                       2015-10-01                          Boston                  Smith
 51          1000

8
0 473
Announcement Janine Perkins · Feb 16, 2016

Do you need to build an object-oriented application using Caché? Take this course to learn how to create, retrieve, update and delete objects in Caché.

Caché Objects Introduction

Learn the basics of Caché objects. This course will provide an overview of Caché Classes, Methods, and interaction with the Caché database by creating, saving, loading and deleting objects. The lessons in this course assume that you have some previous object-oriented programming experience. Learn More.

0
0 321
Question Michael Lundberg · Feb 12, 2016

Hi,

We do have a production including a SOAP.OutboundAdapter that make a request to a .NET WCF Service. The response from that service vary in size. When it come to large one, we talk about maybe 8000 records (with 6-8 attributes per record) in xml, the adapter always give a timout. Even if we put a high number of seconds or set -1. After 1 1/2h still nothing get back. It's just standing there and waiting for ever.

Our .NET developer have look at it (on the WCF-service)  and from ther point of view they say that it seems like Ensemle can't handle such big responses.

In .Net it.s possible to put

2
0 617
Question Timothy Leavitt · Feb 11, 2016

I'm revisiting some older projects that can benefit from the new JSON support and dynamic object capabilities in 2016.1 FT / 2016.2 FT. (Particularly, some of the really new features in the latest 2016.2 FT.)

For the particular thing I'm working on, it would be very handy to be able to merge objects, similarly to https://api.jquery.com/jquery.extend/. The closest thing I've found so far (in 2016.2 only) is:

Write "o1: ",o1.$toJSON(),! Write "o2: ",o2.$toJSON(),! Write !

1
0 634
Question Scott Beeson · Feb 11, 2016

I'm writing some custom functions for use in a routing rule.  I have a few that are working, but right now I'm trying to use one that has no parameters.  Typically this would be a sub instead of a function, but I'm not familiar enough with Cache to know what I need to do here. 

Here is the code:

Class Custom.MHC.Common.CustomFunctions Extends Ens.Rule.FunctionSet
{
   /// Location and Revision of this file in Perforce (Auto-updating)
   Parameter SrcVer = "$Id$";
   /// Returns the current environment code,
   /// DEVELOPMENT, TEST, LIVE
   ClassMethod getEnvironment() As %String [ Final ]
   {
    ^
6
0 579
Article Lexi Hayden · Feb 11, 2016 1m read

We heard from a customer who wanted to display a version number as a read-only production setting. During the build on the build server, this version number is added to the Production class. This works fine, and the Version is displayed in the Portal, but the customer wanted to write protect it, so the enduser can’t change it. The customer had defined the setting like this:

Property Version As %String;

Parameter SETTINGS = "Version:Info";

We advised the customer to define SETTINGS like this instead:

Parameter SETTINGS = "Version:Alerting:label"

where label is the control to use and Alerting the

0
0 477
Question Timothy Leavitt · Feb 9, 2016

Looking at a property defined as follows:

Property SystemTime As %Library.TimeStamp [ SqlComputeCode = {Set {*}=$ZDATETIME($NOW(),3,1,0)}, SqlComputed ];

The documentation talks about using SqlComputed and SqlComputeCode with SqlComputeOnChange (specifying which events will trigger computation), and about using them with the Calculated keyword (so it's always computed). I don't see any specific explanation of the case above, though, when neither SqlComputeOnChange nor Calculated is specified.

From a bit of testing, it seems that the behavior is:

  • Upon SQL insert or first %Save, if no value has
4
0 848
Question Scott Beeson · Feb 8, 2016

Given the following code:

start
    set tstVar = "Green"
    do TestIt()
 
TestIt() {
    write tstVar
}

I get <UNDEFINED>start+4^DeploymentTool *tstVar
 

I also tried setting the variable outside the start method but that doesn't work either.  I realize I could pass tstVar to the TestIt() routine but I'm trying to create a couple variables that will be reused repeatedly so that doesn't really work.

11
0 732
Announcement Janine Perkins · Feb 9, 2016
Do you want to learn about the different products and technologies InterSystems has to offer? 
 
Introduction to Caché, Ensemble, HealthShare and Related Technologies
This course gives a non-technical overview to InterSystems products and technologies. It will help you to explore the possibilities of your existing products, help you to identify products you may need to solve gaps at your workplace and allow you to have educated conversations about all InterSystems products, technologies and their capabilities from a non-technical perspective. Learn More.
0
0 365
Announcement Steve Glassman · Feb 8, 2016

I am pleased to announce the third 2016.2 field test kit, 2016.2.0.590.0.

In the week since the last field test posting Development has made over a hundred fixes and improvements in Atelier, Enterprise Manager, Ensemble and Caché.  Unlike the previous field test kit, though, in which the changes were distributed evenly over multiple areas and products, in this kit over half of the changes are associated just with Atelier.

Please download the kit and give it a try; the latest field test of 2016.2 is available HERE.  And, as always, we welcome your feedback.

Steve Glassman, Director of QD

0
0 312
Question Scott Beeson · Feb 8, 2016

I've searched the ObjectScript reference for any instances of Upper, Lower or Case and the only thing is a case/switch statement.  In all the documentation I can only find SQL and Cache Basic references for things like UCASE.

So how do I do this in ObjectScript?

For instance, if (ucase(dtype)="G") { }

2
0 445
Question Rich Taylor · Feb 3, 2016

Has anyone come up with a way to create a separate thread of processing that can achieve shared access to a set of objects created from the initials process?  The situation is this.  There is a large complex set of objects representing a business process.  Some of these objects are in-memory only.  The desire is to spin off a separate thread that could do some ancillary processing on this data set without slowing down the main process.   Any thoughts?

6
0 1301
Question Scott Beeson · Feb 5, 2016
The minimum interval between invocations of the adapter by the Ensemble framework. For adapters that poll for external events, this is the polling interval. However, most polling adapters will process all inputs immediately if several are detected at one time. This is also the interval at which each Business Service will check for shutdown requests.

Is it seconds or what?  The default is 15  

1
0 549
Article Patrick Newton · Feb 1, 2016 1m read

Do to unforseen circumstances the Atelier build that was distributed with the Cache 2016.2 field test had certain incompatibilites which prevented it's effective use with the server that it was bundled with.

We are working on remediating this regretable situation and will provide a compatible Atelier in the 2016.2 field test refresh which is scheduled for today Monday, 1st of Februrary.

We sincerely apologize for any inconvenience so caused.

4
0 372
Question Scott Beeson · Feb 2, 2016

I'm designing a workflow for PHR via FTP.  What I've done is create a single FTP adapter to pick up files from multiple customers.  A router then accesses a lookup table and determines if a particular customer is allowed to send a particular message type to the state.  If not, the message doesn't go out.  It seems like everyone is against this approach (other than my CEO, thankfully), including Intersystems:

Our recommendation though is to create separate interfaces to retrieve PHR data from individual
participants.This configuration ...
5
0 401
Question Armin Gayl · Jan 29, 2016

Hi, 

is it possible to integrate a csp file as the default page in the IIS 7?

I want reach http://localhost/csp/sys/UtilHome.csp over http://localhost/

Bill McCormick wrote in the GoogleGroup 

"There was a known problem with this in the 5.0 release and has been 

fixed. It will never work out of the box. You have to define a CSP 

application of the name "/" - the config manager used to invalidate this 

but putting it in the cpf worked - I forget if that is fixed or not. 

After that it should all just work. Feel free to log an issue with 

support if it still fails in anyway. "

But I

4
0 596