go to post Oliver Wilms · Mar 26, 2020 I could not send an email from my Iris container. I created a TestProduction for testing my production. I added a lot of debug statements logging what happens in FileMaker into ^TESTdmlss. Try running the FileMailer application (follow instructions in Read me) and review ^TESTdmlss by typing ZW ^TESTdmlss.
go to post Oliver Wilms · Mar 23, 2020 Evgeny, it still does not work. I had tried to use "yes" instead of "no" for "Ensemble" flag. Now I also tried "1". It still gives me error that superclasses do not exist. Can you please look at my terminal output? I show Installer.cls at the bottom below: [node1] (local) root@192.168.0.23 ~$ git clone https://github.com/oliverwilms/iriscontest2020Cloning into 'iriscontest2020'...remote: Enumerating objects: 64, done.remote: Counting objects: 100% (64/64), done.remote: Compressing objects: 100% (56/56), done.remote: Total 64 (delta 21), reused 19 (delta 4), pack-reused 0Unpacking objects: 100% (64/64), done.[node1] (local) root@192.168.0.23 ~$ cd iriscontest2020/[node1] (local) root@192.168.0.23 ~/iriscontest2020$ docker-compose buildBuilding irisStep 1/16 : ARG IMAGE=store/intersystems/irishealth:2019.3.0.308.0-communityStep 2/16 : ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0Step 3/16 : ARG IMAGE=store/intersystems/iris-community:2019.4.0.379.0Step 4/16 : ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0Step 5/16 : ARG IMAGE=intersystemsdc/iris-community:2019.4.0.383.0-zpmStep 6/16 : FROM $IMAGE2019.4.0.383.0-zpm: Pulling from intersystemsdc/iris-community898c46f3b1a1: Pull complete63366dfa0a50: Pull complete041d4cd74a92: Pull complete6e1bee0f8701: Pull complete973e47831f38: Pull completeb0c3b996c3e3: Pull completeb48eef952cda: Pull complete8254746f78e2: Pull completeec1f0f74baf0: Pull completefdc6015ec77d: Pull completeb72c9a7f8270: Pull completec108d032e6d0: Pull completecaf30f8515db: Pull complete02b9549ccbc9: Pull completeDigest: sha256:fc52a2359da312a5c39010a24d15e84a09ed6f3f2828e54021ebed54a3cb4c1aStatus: Downloaded newer image for intersystemsdc/iris-community:2019.4.0.383.0-zpm ---> 2f9eb08f28e3Step 7/16 : USER root ---> Running in 78efd07fbcb0Removing intermediate container 78efd07fbcb0 ---> c8f8dddbd96eStep 8/16 : WORKDIR /opt/irisapp ---> Running in a436b17bdd9cRemoving intermediate container a436b17bdd9c ---> da8cdcae02a1Step 9/16 : RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp ---> Running in 1698d44c50ebRemoving intermediate container 1698d44c50eb ---> c9c75c4960cdStep 10/16 : USER irisowner ---> Running in dd49a263a773Removing intermediate container dd49a263a773 ---> abef13ffc4deStep 11/16 : COPY Installer.cls . ---> b01d3b536e89Step 12/16 : COPY src src ---> 6ed1aa33393eStep 13/16 : COPY irissession.sh / ---> 2b8436f61475Step 14/16 : SHELL ["/irissession.sh"] ---> Running in 9eca533f3ef5Removing intermediate container 9eca533f3ef5 ---> 63ee158e5412Step 15/16 : RUN do $SYSTEM.OBJ.Load("Installer.cls", "ck") set sc = ##class(App.Installer).setup() ---> Running in afd2046fb280This copy of InterSystems IRIS has been licensed for use exclusively by:InterSystems IRIS CommunityCopyright (c) 1986-2019 by InterSystems CorporationAny other use is a violation of your license agreementStarting IRIS Node: afd2046fb280, Instance: IRIS %SYS> %SYS> Load started on 03/24/2020 02:21:26Loading file Installer.cls as udlCompiling class App.InstallerCompiling routine App.Installer.1Load finished successfully.2020-03-24 02:21:26 0 App.Installer: Installation starting at 2020-03-24 02:21:26, LogLevel=32020-03-24 02:21:26 3 Evaluate: #{$system.Process.CurrentDirectory()}src -> /opt/irisapp/src2020-03-24 02:21:26 3 SetVariable: SourceDir=/opt/irisapp/src2020-03-24 02:21:26 3 SetVariable: Namespace=IRISAPP2020-03-24 02:21:26 3 SetVariable: app=irisapp2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: /opt/${app}/data -> /opt/irisapp/data2020-03-24 02:21:26 3 Evaluate: %DB_${Namespace} -> %DB_IRISAPP2020-03-24 02:21:26 1 CreateDatabase: Creating database IRISAPP in /opt/irisapp/data/ with resource %DB_IRISAPP2020-03-24 02:21:26 2 CreateDatabase: Overwriting /opt/irisapp/data/IRIS.DAT2020-03-24 02:21:26 2 CreateDatabase: Adding database IRISAPP2020-03-24 02:21:26 2 CreateDatabase: Creating and assigning resource '%DB_IRISAPP' to IRISAPP2020-03-24 02:21:26 1 CreateNamespace: Creating namespace IRISAPP using IRISAPP/IRISAPP2020-03-24 02:21:26 2 CreateNamespace: Adding namespace IRISAPP2020-03-24 02:21:26 1 ActivateConfiguration: Activating Configuration2020-03-24 02:21:26 3 Evaluate: ${SourceDir} -> /opt/irisapp/src2020-03-24 02:21:26 1 Import: Loading /opt/irisapp/src (isdir=1) into IRISAPP, recurse=1 Load of directory started on 03/24/2020 02:21:26 Loading file /opt/irisapp/src/DMLSS/FilePassthroughService.cls as udlLoading file /opt/irisapp/src/DMLSS/EmailPassthroughOperation.cls as udlLoading file /opt/irisapp/src/DMLSS/Production.cls as udlLoading file /opt/irisapp/src/PackageSample/ObjectScript.cls as udlLoading file /opt/irisapp/src/DMLSS/Util.cls as udlLoading file /opt/irisapp/src/PackageSample/PersistentClass.cls as udl Compilation started on 03/24/2020 02:21:26 with qualifiers 'ck'ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not existSkip class DMLSS.EmailPassthroughOperationERROR #5373: Class 'Ens.BusinessService', used by 'DMLSS.FilePassthroughService:superclass', does not existSkip class DMLSS.FilePassthroughServiceERROR #5373: Class 'Ens.Production', used by 'DMLSS.Production:superclass', does not existSkip class DMLSS.ProductionCompiling 3 classes, using 3 worker jobsCompiling class DMLSS.UtilCompiling class PackageSample.ObjectScriptCompiling class PackageSample.PersistentClassCompiling table PackageSample.PersistentClassCompiling routine PackageSample.ObjectScript.1Compiling routine DMLSS.Util.1Compiling routine PackageSample.PersistentClass.1Detected 3 errors during compilation in 0.112s. ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not existDetected 3 errors during load.2020-03-24 02:21:26 0 App.Installer: ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist2020-03-24 02:21:26 0 App.Installer: ERROR #ConfigFailed: Unknown status code: <Ins>ConfigFailed ) > ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist2020-03-24 02:21:26 0 App.Installer: Installation failed at 2020-03-24 02:21:262020-03-24 02:21:26 0 %Installer: Elapsed time .423668s %SYS>ERROR: Service 'iris' failed to build: The command '/irissession.sh do $SYSTEM.OBJ.Load("Installer.cls", "ck") set sc = ##class(App.Installer).setup()' returned a non-zero code: 1[node1] (local) root@192.168.0.23 ~/iriscontest2020$ cat Installer.clsClass App.Installer{ XData setup{<Manifest> <Default Name="SourceDir" Value="#{$system.Process.CurrentDirectory()}src"/> <Default Name="Namespace" Value="IRISAPP"/> <Default Name="app" Value="irisapp" /> <Namespace Name="${Namespace}" Code="${Namespace}" Data="${Namespace}" Create="yes" Ensemble="1"> <Configuration> <Database Name="${Namespace}" Dir="/opt/${app}/data" Create="yes" Resource="%DB_${Namespace}"/> <Import File="${SourceDir}" Flags="ck" Recurse="1"/> </Configuration> <CSPApplication Url="/csp/${app}" Directory="${cspdir}${app}" ServeFiles="1" Recurse="1" MatchRoles=":%DB_${Namespace}" AuthenticationMethods="32" /> </Namespace> </Manifest>} ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]{ #; Let XGL document generate code for this method. Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "setup")} }
go to post Oliver Wilms · Mar 23, 2020 Hello, For the contest we use Iris Community Edition. Does it support Ensemble? I got compile error because Ens.BusinessOperation base class did not exist. Thanks, Oliver
go to post Oliver Wilms · Feb 13, 2020 All I need to do is create a new stream and write the contents of pInput stream with $Char(13) removed and then pass the new stream to the superclass: Class Utility.RecordMap.Service.ComplexBatchFileService Extends EnsLib.RecordMap.Service.ComplexBatchFileService{ /// Parse the incoming file and send the resulting ComplexBatch to the targets in TargetConfigNames./// *** In Windows strip out any Char(13) *** Oliver T Wilms *** 2/11/2020Method OnProcessInput(pInput As %Stream.Object,Output pOutput As %RegisteredObject,ByRef pHint As %String) As %Status{Set tStatus = $$$OKTry {Set tLookAhead = ""Set tmpStream = ##class(%Stream.GlobalCharacter).%New()While 'pInput.AtEnd {Set x = pInput.Read(.len,.tStatus)If (x [ $Char(13)) {Set x = $Translate(x,$Char(13))}Do tmpStream.Write(x)}Set tStatus = ##super(tmpStream,.pOutput,.pHint)}Catch ex {Set tStatus = $$$EnsSystemError}Quit tStatus} }
go to post Oliver Wilms · Feb 12, 2020 I decided to create a new FileService class extending EnsLib.RecordMap.Service.ComplexBatchFileService. The intention is to strip any $Char(13) out of the stream that gets parsed / passed to Re3cordMap. I found CopyReplace() method in %IO.I.Stream class. I try to overwrite OnProcessInput() in FileService class. I try pInput.CopyReplace() but that method does not exist for pInput stream. Is this a good solution approach? What am I missing? Any Stream objects experts available to help out? Thank you for your attention
go to post Oliver Wilms · Dec 16, 2019 I am pretty sure I have used SQL Outbound Adapter with local cache database / namespace. I think you should be able to do the same for Inbound Adapter. I had to create a system DSN when I set this up on my Windows laptop.
go to post Oliver Wilms · Nov 28, 2019 System DSN and Credential was required. Now it works without error. Thank you
go to post Oliver Wilms · Nov 28, 2019 I believe I need System DSN, not User DSN. How do I create System DSN? I need to run Control Panel as Administartor? It does not allow me...
go to post Oliver Wilms · Sep 19, 2019 I removed the outer group and it worked correctly: name="Report" sql="SELECT ID, CreatedDate, CreatedTime, availabilityStatus FROM AETMON.AvailabilityLog WHERE CREATEDDATE=? ORDER BY CreatedDate, CreatedTime">
go to post Oliver Wilms · Aug 27, 2019 Alexander,I still get no line even though everything else seems correct from what I can tell on my end. I do a lot of debugging / logging and I observe getAxisY and getAxisTime are called way more often than what seems necessary...
go to post Oliver Wilms · Aug 27, 2019 Alexander,Thank you for your response. I understand that get data method only needs to return the Y-Axis values. In my case they will be 0 if the system I monitor is down or 1 if the status is good. I envision I may calculate a Uptime % per time selected by user later. Actually very soon. I need to demo this today.The values for x-Axis, Date/Time stamp when system status was checked, are supplied by a separate method.Do you think it is good to try and store values for x and y-Axes in the same data array?I will post another update soon after I get a chance to try it out.Oliver
go to post Oliver Wilms · Aug 23, 2019 Hello,I am trying Zen Report and Zen Page. I have Zen Page that displays a calendar to choose Date. I can display Zen Report inside iFrame when User clicks a button. It looks good EXCEPT my line graph shows no data values. I copy my Report class below. I hope someone will tell me what I am missing or what is wrong. This is my first Zen Report. Thanks /// AETMON.ReportClass AETMON.Report Extends %ZEN.Report.reportPage{/// Class name of application this report belongs to.Parameter APPLICATION;/// Specifies the default display mode used for this report if/// the URL parameter, <var>$MODE</var>, is not present.Parameter DEFAULTMODE As STRING [ Constraint = ",html,tohtml,toxslfo,pdf,xml,xslfo,excel,toexcel,ps,pdfprint,xlsx,tiff,displayxlsx,fo2pdf,foandpdf", Flags = ENUM ] = "html";/// This is the optional XML namespace used for the report.Parameter REPORTXMLNAMESPACE;Property Availability As %ZEN.Datatype.list(DELIMITER = ",");Property AvaiDateTime As %ZEN.Datatype.list(DELIMITER = ",");Property CreatedDate As %ZEN.Datatype.string(ZENURL = "CreatedDate");/// This XML defines the logical contents of this report.XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition" ]{<report xmlns="http://www.intersystems.com/zen/report/definition" name="Report" sql="SELECT ID, CreatedDate, CreatedTime, availabilityStatus FROM AETMON.AvailabilityLog WHERE CREATEDDATE=? ORDER BY CreatedDate, CreatedTime"><parameter expression='..CreatedDate'/><group name="CreatedDate" breakOnField="CreatedDate"><attribute name="Date" field="CreatedDate" /><group name="record"><attribute name="id" field="ID" /><attribute name="Time" field="CreatedTime" /><attribute name="Status" field="availabilityStatus" /></group><aggregate name="Count" type="SUM" field="availabilityStatus" /></group></report>}/// This XML defines the display for this report./// This is used to generate the XSLT stylesheets for both HTML and XSL-FO.XData ReportDisplay [ XMLNamespace = "http://www.intersystems.com/zen/report/display" ]{<report xmlns="http://www.intersystems.com/zen/report/display" name="Report" title="AET Availability Report"><!-- Optional Init element inserts custom XSLT instructions at the top level of the generated XSLT stylesheet. --><init ></init><!-- Optional Document element specifies page layout and style characteristics. --><document width="8.5in" height="11in" marginLeft="1.25in" marginRight="1.25in" marginTop="1.0in" marginBottom="1.0in" ></document><!-- Optional Pageheader element. --><pageheader ></pageheader><!-- Optional Pagefooter element. Does not apply in HTML output. --><pagefooter ></pagefooter><!-- Required Body element. --><body><p class="banner1">AET Availability Report</p><clineChartongetData="getchartdata"title="Availability"height="400px" width="400px"markersVisible="true"plotStyle="stroke-width: 1px;"seriesYAxes="0"ongetLabelX="getAxisTime"><yAxis minValue="0" maxValue="1" /></clineChart><group name="CreatedDate" line="1px"><table orient="row" width="6in"><item field="@Date" width="2in"><caption value="Date:" width="2in"/></item><group name="record" line="1px"><table orient="row" width="6in"><item field="@Time" width="2in"><caption value="Time:" width="2in"/></item><item field="@Status" ><caption value="Status:"/></item></table></group></table></group></body></report>}Method getAxisTime(val,yseries){Set tTime = $Piece(..AvaiDateTime,",",(val+1))Quit $ZTime(tTime)}Method getchartdata(ByRef var,chart){Do ##class(AETMON.Utility).DebugAETMON("AETMON.Report getchartdata")Try {Set sc = $System.Status.OK()Set tTestDate = "08/06/2019"Set pFrom = $ZDateH(tTestDate)Set pTo = $ZDateH(tTestDate)// Get a resultset containing Availability dataSet sc = ##class(AETMON.AvailabilityLog).GetAvailability(pFrom,pTo,.rs)Quit:$System.Status.IsError(sc)Set tCount = 0While (rs.%Next()) {Set var(tCount,0) = rs.%Get("availabilityStatus")Set var(tCount,1) = rs.%Get("CreatedTime")If $Increment(tCount)}}Catch(ex) {Set sc = ex.AsStatus()}Set tCreatedTimes = var(0,1) _ "," _ var(1,1)Do ##class(AETMON.Utility).DebugAETMON("AETMON.Report getchartdata ..AvaiDateTime = "_tCreatedTimes)Set ..AvaiDateTime = tCreatedTimesQuit sc}}
go to post Oliver Wilms · Aug 17, 2019 When I add the Business Metric to a Dashboard or Production Monitor, I see the most recent data for the Business Metric. I need to be able to go back in time and show data for selected dates and times. I think a Pivot Table is what I need. I tried to define a Cube based on my persistent class, but it did not work as expected.
go to post Oliver Wilms · Aug 17, 2019 I have added the Business Metric to my production monitor. It works good. However it only shows the most recent data for Availability. I need to be able to allow user to choose dates and times and show Availability status for the selected time period. I am able to run SQL query and show the data on a CSP page. However I am lacking the line graph. I tried to set up a cube but it is not working as expected.My persistent data is very simple class: s AETMON.AvailabilityLog Extends (%Persistent, %XML.Adaptor){Property CreatedDate As %Date;Property CreatedTime As %Time;Property availabilityStatus As %Boolean;Storage Default{<Data name="AvailabilityLogDefaultData"><Value name="1"><Value>%%CLASSNAME</Value></Value><Value name="2"><Value>CreatedDate</Value></Value><Value name="3"><Value>CreatedTime</Value></Value><Value name="4"><Value>availabilityStatus</Value></Value></Data><DataLocation>^AETMON.AvailabilityLogD</DataLocation><DefaultData>AvailabilityLogDefaultData</DefaultData><IdLocation>^AETMON.AvailabilityLogD</IdLocation><IndexLocation>^AETMON.AvailabilityLogI</IndexLocation><StreamLocation>^AETMON.AvailabilityLogS</StreamLocation><Type>%Library.CacheStorage</Type>}} I have properties for Date, Time, and boolean Status. My cube produced the class below: /// Class AETMON.Cube.Availability Extends %DeepSee.CubeDefinition [ DependsOn = AETMON.AvailabilityLog, ProcedureBlock ]{/// Cube definition from Architect.XData Cube [ XMLNamespace = "http://www.intersystems.com/deepsee" ]{<cube xmlns="http://www.intersystems.com/deepsee" name="Availability" displayName="Availability" disabled="false" abstract="false" sourceClass="AETMON.AvailabilityLog" countMeasureName="%COUNT" bucketSize="8" bitmapChunkInMemory="false" precompute="0" disableListingGroups="false"> <dimension name="availabilityStatus" displayName="Status" disabled="false" hasAll="false" allCaption="All availabilityStatus" allDisplayName="availabilityStatus" type="data" calendar="gregorian" iKnowType="entity" hidden="false" showHierarchies="default"> <hierarchy name="H1" disabled="false" hidden="false"> <level name="availabilityStatus" displayName="Status" disabled="false" sourceProperty="availabilityStatus" list="false" useDisplayValue="true" useAsFilter="true" hidden="false"> </level> </hierarchy> </dimension></cube>}Parameter DOMAIN;} When I try DeepSee Analyzer, I just see Working..., but no Count
go to post Oliver Wilms · Aug 14, 2019 Evgeny,Thank you for your comment. I am new to DeepSee and I do not know if I should created a cube for this. Or a Business Metric? Or just SQL Data??Really I just need to show a report that can be printed or exported with start and end dates and times. I saw that Dashboards are easy to access from Management Portal compared to opening a DeepSee Report.And I want to show a line graph.Maybe a Zen report which I have not really done yet either.I am not sure what to do ???
go to post Oliver Wilms · Jul 5, 2019 I am working on DTL to transform X12 HIPAA_5010:278Review into HIPAA_5010:278Response.My challenges are I do not know an elegant way to create multiple 2000E loops in the target. The source can have only one loop 2000E, I need to create as many 2000E loops as I find authorizations.On top of that, I may need to create possibly hundreds of 2000F loops under one or more 2000E loops. The source may have zero or many 2000F loops.The scenario I have been working on has zero 2000F loops and I need to create about 600 2000F loops in the target. Any guidance will be appreciated. I am not sure if subtransform will work because I can only create a Document or a Segment, not a Loop in a transformation.
go to post Oliver Wilms · Jun 20, 2019 Since I do not know how to create a new segment and then append to my target, I set x = target.OutputToString() and then append segments to my string as in Set x=x_"HL*5*4*0~...." and x=x_"SE*...~" and then set target=##class(EnsLib.EDI.X12.Document).ImportFromString(x).I feel there should be a better way than doing string manipulation using Document Map etc.
go to post Oliver Wilms · Jun 13, 2019 My problem was in the Response class definition. I had Property BillingCodes As %Collection.ArrayOfObj; I replaced it with Property BillingCodes As array Of xyz; Everything gets passed along in the Response object from one BPL to the calling one. Thanks!!
go to post Oliver Wilms · Jun 6, 2019 I got the same error occasionally when parsing X12 files. Lock table got filled up when saving a transaction that contains hundreds of objects.
go to post Oliver Wilms · Apr 24, 2019 Hopefully they will tell the provider of the files to NOT send files that way and we do not need to come up with a work-around.