@@ -11,32 +11,100 @@ Also has functionality for getting information about cubes, dashboards and widge
1111<Method name =" GetResultSet" >
1212<Description ><![CDATA[
1313Transforms MDX query into executed <b>MDX2JSON.ResultSet</b>.<br>
14- <b>pMDX </b> - String containing MDX query.<br>
15- <b>pStatus </b> - Status of query execution.<br>]]> </Description >
14+ <b>MDX </b> - String containing MDX query.<br>
15+ <b>Status </b> - Status of query execution.<br>]]> </Description >
1616<ClassMethod >1</ClassMethod >
17- <FormalSpec >pMDX :%String,*pStatus </FormalSpec >
17+ <FormalSpec >MDX :%String,*Status </FormalSpec >
1818<ReturnType >MDX2JSON.ResultSet</ReturnType >
1919<Implementation ><![CDATA[
20- set Params = ""
21- set pStatus = $$$OK
20+ set Status = $$$OK
21+ set RS = ##class(MDX2JSON.ResultSet).%New()
22+ set Status = RS.%PrepareMDX(MDX)
23+ return RS
24+ ]]> </Implementation >
25+ </Method >
26+
27+ <Method name =" GetResultSetFromQuery" >
28+ <Description ><![CDATA[
29+ Transforms MDX query into executed <b>MDX2JSON.ResultSet</b>.<br>
30+ <b>MDX</b> - String containing MDX query.<br>
31+ <b>Status</b> - Status of query execution.<br>]]> </Description >
32+ <ClassMethod >1</ClassMethod >
33+ <FormalSpec >CubeKey:%String,QueryKey:%String,*Status</FormalSpec >
34+ <ReturnType >MDX2JSON.ResultSet</ReturnType >
35+ <Implementation ><![CDATA[
36+ set Status = $$$OK
2237 set RS = ##class(MDX2JSON.ResultSet).%New()
23- set pStatus = RS.%PrepareMDX(pMDX)
24- return:$$$ISERR(pStatus) RS
25- set pStatus = RS.%ExecuteAsynch(,.Params,1)
38+ set Status = RS.%PrepareKey(CubeKey, QueryKey)
39+ return:$$$ISERR(Status) RS
40+
41+ do:$$$ISOK(Status) RS.%GetQueryText()
2642 return RS
2743]]> </Implementation >
2844</Method >
2945
46+ <Method name =" ExecuteResultSet" >
47+ <ClassMethod >1</ClassMethod >
48+ <FormalSpec >RS:MDX2JSON.ResultSet,QueryKey:%String="",Timeout:%Integer=0</FormalSpec >
49+ <ReturnType >%Status</ReturnType >
50+ <Implementation ><![CDATA[
51+ set Params = ""
52+ set Status = $$$OK
53+
54+ if Timeout = 0 {
55+ set Status = RS.%ExecuteAsynch(QueryKey ,.Params, $$$YES)
56+ } else {
57+ set Status = RS.%ExecuteAsynch(QueryKey ,.Params, $$$NO)
58+ set TimeElapsed = 0
59+ set QueryStatus = 0
60+ while (TimeElapsed < Timeout)&&(QueryStatus<100)&&($$$ISOK(Status)) {
61+ hang .01
62+ set TimeElapsed = TimeElapsed + .01
63+ // Check query status again
64+ set QueryStatus = RS.%GetStatus(,.Status)
65+ }
66+ }
67+
68+ quit Status
69+ ]]> </Implementation >
70+ </Method >
71+
3072<Method name =" WriteJSONfromMDX" >
3173<Description ><![CDATA[
3274Automatic processing of MDX query and outputting resulting JSON.<br>
33- <b>pMDX </b> - String containing MDX query.<br>]]> </Description >
75+ <b>MDX </b> - String containing MDX query.<br>]]> </Description >
3476<ClassMethod >1</ClassMethod >
35- <FormalSpec >pMDX :%String</FormalSpec >
77+ <FormalSpec >MDX :%String,Timeout:%Integer=0 </FormalSpec >
3678<ReturnType >%Status</ReturnType >
3779<Implementation ><![CDATA[
3880 #dim RS As MDX2JSON.ResultSet
39- set RS = ..GetResultSet(pMDX,.st)
81+ set RS = ..GetResultSet(MDX, .st)
82+ return:$$$ISERR(st) st
83+
84+ set st = ..ExecuteResultSet(RS, , Timeout)
85+ return:$$$ISERR(st) st
86+
87+ set obj = RS.ToProxyObject(.st)
88+ return:$$$ISERR(st) st
89+ $$$DynObjToJSON(obj)
90+
91+ return $$$OK
92+ ]]> </Implementation >
93+ </Method >
94+
95+ <Method name =" WriteJSONfromQuery" >
96+ <Description ><![CDATA[
97+ Automatic processing of MDX query and outputting resulting JSON.<br>
98+ <b>MDX</b> - String containing MDX query.<br>]]> </Description >
99+ <ClassMethod >1</ClassMethod >
100+ <FormalSpec >CubeKey:%String,QueryKey:%String,Timeout:%Integer=0</FormalSpec >
101+ <ReturnType >%Status</ReturnType >
102+ <Implementation ><![CDATA[
103+ #dim RS As MDX2JSON.ResultSet
104+ set RS = ..GetResultSetFromQuery(CubeKey, QueryKey, .st)
105+ return:$$$ISERR(st) st
106+
107+ set st = ..ExecuteResultSet(RS, , Timeout)
40108 return:$$$ISERR(st) st
41109
42110 set obj = RS.ToProxyObject(.st)
0 commit comments