workunit.hpp 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282
  1. /*##############################################################################
  2. HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. ############################################################################## */
  13. #ifndef WORKUNIT_INCL
  14. #define WORKUNIT_INCL
  15. #ifdef _WIN32
  16. #ifdef WORKUNIT_EXPORTS
  17. #define WORKUNIT_API __declspec(dllexport)
  18. #else
  19. #define WORKUNIT_API __declspec(dllimport)
  20. #endif
  21. #else
  22. #define WORKUNIT_API
  23. #endif
  24. #define MINIMUM_SCHEDULE_PRIORITY 0
  25. #define DEFAULT_SCHEDULE_PRIORITY 50
  26. #define MAXIMUM_SCHEDULE_PRIORITY 100
  27. #include "jiface.hpp"
  28. #include "errorlist.h"
  29. #include "jtime.hpp"
  30. #include "jsocket.hpp"
  31. #define CHEAP_UCHAR_DEF
  32. #ifdef _WIN32
  33. typedef wchar_t UChar;
  34. #else //__WIN32
  35. typedef unsigned short UChar;
  36. #endif //__WIN32
  37. // error codes
  38. #define QUERRREG_ADD_NAMEDQUERY QUERYREGISTRY_ERROR_START
  39. #define QUERRREG_REMOVE_NAMEDQUERY QUERYREGISTRY_ERROR_START+1
  40. #define QUERRREG_WUID QUERYREGISTRY_ERROR_START+2
  41. #define QUERRREG_DLL QUERYREGISTRY_ERROR_START+3
  42. #define QUERRREG_SETALIAS QUERYREGISTRY_ERROR_START+4
  43. #define QUERRREG_RESOLVEALIAS QUERYREGISTRY_ERROR_START+5
  44. #define QUERRREG_REMOVEALIAS QUERYREGISTRY_ERROR_START+6
  45. #define QUERRREG_QUERY_REGISTRY QUERYREGISTRY_ERROR_START+7
  46. #define QUERRREG_SUSPEND QUERYREGISTRY_ERROR_START+8
  47. #define QUERRREG_UNSUSPEND QUERYREGISTRY_ERROR_START+9
  48. #define QUERRREG_COMMENT QUERYREGISTRY_ERROR_START+10
  49. class CDateTime;
  50. interface ISetToXmlTransformer;
  51. interface ISecManager;
  52. interface ISecUser;
  53. class StringArray;
  54. class StringBuffer;
  55. typedef unsigned __int64 __uint64;
  56. interface IScmIterator : extends IInterface
  57. {
  58. virtual bool first() = 0;
  59. virtual bool next() = 0;
  60. virtual bool isValid() = 0;
  61. };
  62. interface IQueueSwitcher : extends IInterface
  63. {
  64. virtual void * getQ(const char * qname, const char * wuid) = 0;
  65. virtual void putQ(const char * qname, const char * wuid, void * qitem) = 0;
  66. virtual bool isAuto() = 0;
  67. };
  68. //! PriorityClass
  69. //! Not sure what the real current class values are -- TBD
  70. enum WUPriorityClass
  71. {
  72. PriorityClassUnknown = 0,
  73. PriorityClassLow = 1,
  74. PriorityClassNormal = 2,
  75. PriorityClassHigh = 3,
  76. PriorityClassSize = 4
  77. };
  78. enum WUQueryType
  79. {
  80. QueryTypeUnknown = 0,
  81. QueryTypeEcl = 1,
  82. QueryTypeSql = 2,
  83. QueryTypeXml = 3,
  84. QueryTypeAttribute = 4,
  85. QueryTypeSize = 5
  86. };
  87. enum WUState
  88. {
  89. WUStateUnknown = 0,
  90. WUStateCompiled = 1,
  91. WUStateRunning = 2,
  92. WUStateCompleted = 3,
  93. WUStateFailed = 4,
  94. WUStateArchived = 5,
  95. WUStateAborting = 6,
  96. WUStateAborted = 7,
  97. WUStateBlocked = 8,
  98. WUStateSubmitted = 9,
  99. WUStateScheduled = 10,
  100. WUStateCompiling = 11,
  101. WUStateWait = 12,
  102. WUStateUploadingFiles = 13,
  103. WUStateDebugPaused = 14,
  104. WUStateDebugRunning = 15,
  105. WUStatePaused = 16,
  106. WUStateSize = 17
  107. };
  108. enum WUAction
  109. {
  110. WUActionUnknown = 0,
  111. WUActionCompile = 1,
  112. WUActionCheck = 2,
  113. WUActionRun = 3,
  114. WUActionExecuteExisting = 4,
  115. WUActionPause = 5,
  116. WUActionPauseNow = 6,
  117. WUActionResume = 7,
  118. WUActionSize = 8
  119. };
  120. enum WUCompareMode
  121. {
  122. CompareModeOff = 0,
  123. CompareModeHole = 1,
  124. CompareModeThor = 2,
  125. CompareModeSize = 3
  126. };
  127. enum WUResultStatus
  128. {
  129. ResultStatusUndefined = 0,
  130. ResultStatusCalculated = 1,
  131. ResultStatusSupplied = 2,
  132. ResultStatusFailed = 3,
  133. ResultStatusPartial = 4,
  134. ResultStatusSize = 5
  135. };
  136. enum WUExceptionSeverity
  137. {
  138. ExceptionSeverityInformation = 0,
  139. ExceptionSeverityWarning = 1,
  140. ExceptionSeverityError = 2,
  141. ExceptionSeveritySize = 3
  142. };
  143. //! IConstWUGraph
  144. enum WUGraphType
  145. {
  146. GraphTypeAny = 0,
  147. GraphTypeProgress = 1,
  148. GraphTypeEcl = 2,
  149. GraphTypeActivities = 3,
  150. GraphTypeSubProgress = 4,
  151. GraphTypeSize = 5
  152. };
  153. interface IConstWUGraphIterator;
  154. interface ICsvToRawTransformer;
  155. interface IXmlToRawTransformer;
  156. interface IPropertyTree;
  157. interface IPropertyTreeIterator;
  158. interface IConstWUGraph : extends IInterface
  159. {
  160. virtual IStringVal & getXGMML(IStringVal & ret, bool mergeProgress) const = 0;
  161. virtual IStringVal & getDOT(IStringVal & ret) const = 0;
  162. virtual IStringVal & getName(IStringVal & ret) const = 0;
  163. virtual IStringVal & getLabel(IStringVal & ret) const = 0;
  164. virtual IStringVal & getTypeName(IStringVal & ret) const = 0;
  165. virtual WUGraphType getType() const = 0;
  166. virtual IPropertyTree * getXGMMLTree(bool mergeProgress) const = 0;
  167. virtual IPropertyTree * getXGMMLTreeRaw() const = 0;
  168. virtual bool isValid() const = 0;
  169. };
  170. interface IWUGraph : extends IConstWUGraph
  171. {
  172. virtual void setXGMML(const char * text) = 0;
  173. virtual void setXGMMLTree(IPropertyTree * tree, bool compress=true) = 0;
  174. virtual void setName(const char * name) = 0;
  175. virtual void setLabel(const char * name) = 0;
  176. virtual void setType(WUGraphType type) = 0;
  177. };
  178. interface IConstWUGraphIterator : extends IScmIterator
  179. {
  180. virtual IConstWUGraph & query() = 0;
  181. };
  182. //! IWUResult
  183. enum
  184. {
  185. ResultSequenceStored = -1,
  186. ResultSequencePersist = -2,
  187. ResultSequenceInternal = -3,
  188. ResultSequenceOnce = -4,
  189. };
  190. extern WORKUNIT_API bool isSpecialResultSequence(unsigned sequence);
  191. enum WUResultFormat
  192. {
  193. ResultFormatRaw = 0,
  194. ResultFormatXml = 1,
  195. ResultFormatXmlSet = 2,
  196. ResultFormatCsv = 3,
  197. ResultFormatSize = 4
  198. };
  199. interface IConstWUResult : extends IInterface
  200. {
  201. virtual WUResultStatus getResultStatus() const = 0;
  202. virtual IStringVal & getResultName(IStringVal & str) const = 0;
  203. virtual int getResultSequence() const = 0;
  204. virtual bool isResultScalar() const = 0;
  205. virtual IStringVal & getResultXml(IStringVal & str) const = 0;
  206. virtual unsigned getResultFetchSize() const = 0;
  207. virtual __int64 getResultTotalRowCount() const = 0;
  208. virtual __int64 getResultRowCount() const = 0;
  209. virtual void getResultDataset(IStringVal & ecl, IStringVal & defs) const = 0;
  210. virtual IStringVal & getResultLogicalName(IStringVal & ecl) const = 0;
  211. virtual IStringVal & getResultKeyField(IStringVal & ecl) const = 0;
  212. virtual unsigned getResultRequestedRows() const = 0;
  213. virtual __int64 getResultInt() const = 0;
  214. virtual bool getResultBool() const = 0;
  215. virtual double getResultReal() const = 0;
  216. virtual IStringVal & getResultString(IStringVal & str) const = 0;
  217. virtual IDataVal & getResultRaw(IDataVal & data, IXmlToRawTransformer * xmlTransformer, ICsvToRawTransformer * csvTransformer) const = 0;
  218. virtual IDataVal & getResultUnicode(IDataVal & data) const = 0;
  219. virtual IStringVal & getResultEclSchema(IStringVal & str) const = 0;
  220. virtual __int64 getResultRawSize(IXmlToRawTransformer * xmlTransformer, ICsvToRawTransformer * csvTransformer) const = 0;
  221. virtual IDataVal & getResultRaw(IDataVal & data, __int64 from, __int64 length, IXmlToRawTransformer * xmlTransformer, ICsvToRawTransformer * csvTransformer) const = 0;
  222. virtual IStringVal & getResultRecordSizeEntry(IStringVal & str) const = 0;
  223. virtual IStringVal & getResultTransformerEntry(IStringVal & str) const = 0;
  224. virtual __int64 getResultRowLimit() const = 0;
  225. virtual IStringVal & getResultFilename(IStringVal & str) const = 0;
  226. virtual WUResultFormat getResultFormat() const = 0;
  227. virtual unsigned getResultHash() const = 0;
  228. virtual void getResultDecimal(void * val, unsigned length, unsigned precision, bool isSigned) const = 0;
  229. virtual bool getResultIsAll() const = 0;
  230. };
  231. interface IWUResult : extends IConstWUResult
  232. {
  233. virtual void setResultStatus(WUResultStatus status) = 0;
  234. virtual void setResultName(const char * name) = 0;
  235. virtual void setResultSequence(unsigned seq) = 0;
  236. virtual void setResultSchemaRaw(unsigned len, const void * schema) = 0;
  237. virtual void setResultScalar(bool isScalar) = 0;
  238. virtual void setResultRaw(unsigned len, const void * data, WUResultFormat format) = 0;
  239. virtual void setResultFetchSize(unsigned rows) = 0;
  240. virtual void setResultTotalRowCount(__int64 rows) = 0;
  241. virtual void setResultRowCount(__int64 rows) = 0;
  242. virtual void setResultDataset(const char * ecl, const char * defs) = 0;
  243. virtual void setResultLogicalName(const char * logicalName) = 0;
  244. virtual void setResultKeyField(const char * name) = 0;
  245. virtual void setResultRequestedRows(unsigned rowcount) = 0;
  246. virtual void setResultInt(__int64 val) = 0;
  247. virtual void setResultBool(bool val) = 0;
  248. virtual void setResultReal(double val) = 0;
  249. virtual void setResultString(const char * val, unsigned length) = 0;
  250. virtual void setResultData(const void * val, unsigned length) = 0;
  251. virtual void setResultDecimal(const void * val, unsigned length) = 0;
  252. virtual void addResultRaw(unsigned len, const void * data, WUResultFormat format) = 0;
  253. virtual void setResultRecordSizeEntry(const char * val) = 0;
  254. virtual void setResultTransformerEntry(const char * val) = 0;
  255. virtual void setResultRowLimit(__int64 value) = 0;
  256. virtual void setResultFilename(const char * name) = 0;
  257. virtual void setResultUnicode(const void * val, unsigned length) = 0;
  258. virtual void setResultUInt(__uint64 val) = 0;
  259. virtual void setResultIsAll(bool value) = 0;
  260. virtual void setResultFormat(WUResultFormat format) = 0;
  261. virtual void setResultXML(const char * xml) = 0;
  262. virtual void setResultRow(unsigned len, const void * data) = 0;
  263. };
  264. interface IConstWUResultIterator : extends IScmIterator
  265. {
  266. virtual IConstWUResult & query() = 0;
  267. };
  268. //! IWUQuery
  269. enum WUFileType
  270. {
  271. FileTypeCpp = 0,
  272. FileTypeDll = 1,
  273. FileTypeResText = 2,
  274. FileTypeHintXml = 3,
  275. FileTypeXml = 4,
  276. FileTypeSize = 5
  277. };
  278. interface IConstWUAssociatedFile : extends IInterface
  279. {
  280. virtual WUFileType getType() const = 0;
  281. virtual IStringVal & getDescription(IStringVal & ret) const = 0;
  282. virtual IStringVal & getIp(IStringVal & ret) const = 0;
  283. virtual IStringVal & getName(IStringVal & ret) const = 0;
  284. virtual IStringVal & getNameTail(IStringVal & ret) const = 0;
  285. virtual unsigned getCrc() const = 0;
  286. };
  287. interface IConstWUAssociatedFileIterator : extends IScmIterator
  288. {
  289. virtual IConstWUAssociatedFile & query() = 0;
  290. };
  291. interface IConstWUQuery : extends IInterface
  292. {
  293. virtual WUQueryType getQueryType() const = 0;
  294. virtual IStringVal & getQueryText(IStringVal & str) const = 0;
  295. virtual IStringVal & getQueryName(IStringVal & str) const = 0;
  296. virtual IStringVal & getQueryDllName(IStringVal & str) const = 0;
  297. virtual unsigned getQueryDllCrc() const = 0;
  298. virtual IStringVal & getQueryCppName(IStringVal & str) const = 0;
  299. virtual IStringVal & getQueryResTxtName(IStringVal & str) const = 0;
  300. virtual IConstWUAssociatedFile * getAssociatedFile(WUFileType type, unsigned index) const = 0;
  301. virtual IConstWUAssociatedFileIterator & getAssociatedFiles() const = 0;
  302. virtual IStringVal & getQueryShortText(IStringVal & str) const = 0;
  303. virtual IStringVal & getQueryMainDefinition(IStringVal & str) const = 0;
  304. };
  305. interface IWUQuery : extends IConstWUQuery
  306. {
  307. virtual void setQueryType(WUQueryType qt) = 0;
  308. virtual void setQueryText(const char * pstr) = 0;
  309. virtual void setQueryName(const char * pstr) = 0;
  310. virtual void addAssociatedFile(WUFileType type, const char * name, const char * ip, const char * desc, unsigned crc) = 0;
  311. virtual void removeAssociatedFiles() = 0;
  312. virtual void setQueryMainDefinition(const char * str) = 0;
  313. };
  314. interface IConstWUWebServicesInfo : extends IInterface
  315. {
  316. virtual IStringVal & getModuleName(IStringVal & str) const = 0;
  317. virtual IStringVal & getAttributeName(IStringVal & str) const = 0;
  318. virtual IStringVal & getDefaultName(IStringVal & str) const = 0;
  319. virtual IStringVal & getInfo(const char * name, IStringVal & str) const = 0;
  320. virtual unsigned getWebServicesCRC() const = 0;
  321. };
  322. interface IWUWebServicesInfo : extends IConstWUWebServicesInfo
  323. {
  324. virtual void setModuleName(const char * pstr) = 0;
  325. virtual void setAttributeName(const char * pstr) = 0;
  326. virtual void setDefaultName(const char * pstr) = 0;
  327. virtual void setInfo(const char * name, const char * info) = 0;
  328. virtual void setWebServicesCRC(unsigned crc) = 0;
  329. };
  330. interface IConstWURoxieQueryInfo : extends IInterface
  331. {
  332. virtual IStringVal & getQueryInfo(IStringVal & str) const = 0;
  333. virtual IStringVal & getDefaultPackageInfo(IStringVal & str) const = 0;
  334. virtual IStringVal & getRoxieClusterName(IStringVal & str) const = 0;
  335. virtual IStringVal & getWuid(IStringVal & str) const = 0;
  336. };
  337. interface IWURoxieQueryInfo : extends IConstWURoxieQueryInfo
  338. {
  339. virtual void setQueryInfo(const char * info) = 0;
  340. virtual void setDefaultPackageInfo(const char * pstr, int len) = 0;
  341. virtual void setRoxieClusterName(const char * name) = 0;
  342. virtual void setWuid(const char * wuid) = 0;
  343. };
  344. //! IWUPlugin
  345. interface IConstWUPlugin : extends IInterface
  346. {
  347. virtual IStringVal & getPluginName(IStringVal & str) const = 0;
  348. virtual IStringVal & getPluginVersion(IStringVal & str) const = 0;
  349. virtual bool getPluginThor() const = 0;
  350. virtual bool getPluginHole() const = 0;
  351. };
  352. interface IWUPlugin : extends IConstWUPlugin
  353. {
  354. virtual void setPluginName(const char * str) = 0;
  355. virtual void setPluginVersion(const char * str) = 0;
  356. virtual void setPluginThor(bool flag) = 0;
  357. virtual void setPluginHole(bool flag) = 0;
  358. };
  359. interface IConstWUPluginIterator : extends IScmIterator
  360. {
  361. virtual IConstWUPlugin & query() = 0;
  362. };
  363. interface IConstWULibraryActivityIterator : extends IScmIterator
  364. {
  365. virtual unsigned query() const = 0;
  366. };
  367. interface IConstWULibrary : extends IInterface
  368. {
  369. virtual IStringVal & getName(IStringVal & str) const = 0;
  370. virtual IConstWULibraryActivityIterator * getActivities() const = 0;
  371. };
  372. interface IWULibrary : extends IConstWULibrary
  373. {
  374. virtual void setName(const char * str) = 0;
  375. virtual void addActivity(unsigned id) = 0;
  376. };
  377. interface IConstWULibraryIterator : extends IScmIterator
  378. {
  379. virtual IConstWULibrary & query() = 0;
  380. };
  381. //! IWUActivity
  382. interface IConstWUActivity : extends IInterface
  383. {
  384. virtual __int64 getId() const = 0;
  385. virtual unsigned getKind() const = 0;
  386. virtual IStringVal & getHelper(IStringVal & ret) const = 0;
  387. };
  388. interface IWUActivity : extends IConstWUActivity
  389. {
  390. virtual void setKind(unsigned id) = 0;
  391. virtual void setHelper(const char * str) = 0;
  392. };
  393. interface IConstWUActivityIterator : extends IScmIterator
  394. {
  395. virtual IConstWUActivity & query() = 0;
  396. };
  397. //! IWUException
  398. interface IConstWUException : extends IInterface
  399. {
  400. virtual IStringVal & getExceptionSource(IStringVal & str) const = 0;
  401. virtual IStringVal & getExceptionMessage(IStringVal & str) const = 0;
  402. virtual unsigned getExceptionCode() const = 0;
  403. virtual WUExceptionSeverity getSeverity() const = 0;
  404. virtual IStringVal & getTimeStamp(IStringVal & dt) const = 0;
  405. virtual IStringVal & getExceptionFileName(IStringVal & str) const = 0;
  406. virtual unsigned getExceptionLineNo() const = 0;
  407. virtual unsigned getExceptionColumn() const = 0;
  408. };
  409. interface IWUException : extends IConstWUException
  410. {
  411. virtual void setExceptionSource(const char * str) = 0;
  412. virtual void setExceptionMessage(const char * str) = 0;
  413. virtual void setExceptionCode(unsigned code) = 0;
  414. virtual void setSeverity(WUExceptionSeverity level) = 0;
  415. virtual void setTimeStamp(const char * dt) = 0;
  416. virtual void setExceptionFileName(const char * str) = 0;
  417. virtual void setExceptionLineNo(unsigned r) = 0;
  418. virtual void setExceptionColumn(unsigned c) = 0;
  419. };
  420. interface IConstWUExceptionIterator : extends IScmIterator
  421. {
  422. virtual IConstWUException & query() = 0;
  423. };
  424. enum ClusterType { NoCluster, HThorCluster, RoxieCluster, ThorLCRCluster };
  425. extern WORKUNIT_API ClusterType getClusterType(const char * platform, ClusterType dft = NoCluster);
  426. extern WORKUNIT_API const char *clusterTypeString(ClusterType clusterType, bool lcrSensitive);
  427. inline bool isThorCluster(ClusterType type) { return (type == ThorLCRCluster); }
  428. //! IClusterInfo
  429. interface IConstWUClusterInfo : extends IInterface
  430. {
  431. virtual IStringVal & getName(IStringVal & str) const = 0;
  432. virtual IStringVal & getScope(IStringVal & str) const = 0;
  433. virtual IStringVal & getThorQueue(IStringVal & str) const = 0;
  434. virtual unsigned getSize() const = 0;
  435. virtual ClusterType getPlatform() const = 0;
  436. virtual IStringVal & getAgentQueue(IStringVal & str) const = 0;
  437. virtual IStringVal & getServerQueue(IStringVal & str) const = 0;
  438. virtual IStringVal & getRoxieProcess(IStringVal & str) const = 0;
  439. virtual const StringArray & getThorProcesses() const = 0;
  440. virtual const SocketEndpointArray & getRoxieServers() const = 0;
  441. };
  442. //! IWorkflowItem
  443. enum WFType
  444. {
  445. WFTypeNormal = 0,
  446. WFTypeSuccess = 1,
  447. WFTypeFailure = 2,
  448. WFTypeRecovery = 3,
  449. WFTypeWait = 4,
  450. WFTypeSize = 5
  451. };
  452. enum WFMode
  453. {
  454. WFModeNormal = 0,
  455. WFModeCondition = 1,
  456. WFModeSequential = 2,
  457. WFModeParallel = 3,
  458. WFModePersist = 4,
  459. WFModeBeginWait = 5,
  460. WFModeWait = 6,
  461. WFModeOnce = 7,
  462. WFModeSize = 8
  463. };
  464. enum WFState
  465. {
  466. WFStateNull = 0,
  467. WFStateReqd = 1,
  468. WFStateDone = 2,
  469. WFStateFail = 3,
  470. WFStateSkip = 4,
  471. WFStateWait = 5,
  472. WFStateBlocked = 6,
  473. WFStateSize = 7
  474. };
  475. interface IWorkflowDependencyIterator : extends IScmIterator
  476. {
  477. virtual unsigned query() const = 0;
  478. };
  479. interface IWorkflowEvent : extends IInterface
  480. {
  481. virtual const char * queryName() const = 0;
  482. virtual const char * queryText() const = 0;
  483. virtual bool matches(const char * name, const char * text) const = 0;
  484. };
  485. interface IConstWorkflowItem : extends IInterface
  486. {
  487. virtual unsigned queryWfid() const = 0;
  488. virtual bool isScheduled() const = 0;
  489. virtual bool isScheduledNow() const = 0;
  490. virtual IWorkflowEvent * getScheduleEvent() const = 0;
  491. virtual unsigned querySchedulePriority() const = 0;
  492. virtual bool hasScheduleCount() const = 0;
  493. virtual unsigned queryScheduleCount() const = 0;
  494. virtual IWorkflowDependencyIterator * getDependencies() const = 0;
  495. virtual WFType queryType() const = 0;
  496. virtual WFMode queryMode() const = 0;
  497. virtual unsigned querySuccess() const = 0;
  498. virtual unsigned queryFailure() const = 0;
  499. virtual unsigned queryRecovery() const = 0;
  500. virtual unsigned queryRetriesAllowed() const = 0;
  501. virtual unsigned queryContingencyFor() const = 0;
  502. virtual IStringVal & getPersistName(IStringVal & val) const = 0;
  503. virtual unsigned queryPersistWfid() const = 0;
  504. virtual int queryPersistCopies() const = 0; // 0 - unmangled name, < 0 - use default, > 0 - max number
  505. virtual unsigned queryScheduleCountRemaining() const = 0;
  506. virtual WFState queryState() const = 0;
  507. virtual unsigned queryRetriesRemaining() const = 0;
  508. virtual int queryFailCode() const = 0;
  509. virtual const char * queryFailMessage() const = 0;
  510. virtual const char * queryEventName() const = 0;
  511. virtual const char * queryEventExtra() const = 0;
  512. virtual unsigned queryScheduledWfid() const = 0;
  513. virtual IStringVal & queryCluster(IStringVal & val) const = 0;
  514. };
  515. interface IRuntimeWorkflowItem : extends IConstWorkflowItem
  516. {
  517. virtual void setState(WFState state) = 0;
  518. virtual bool testAndDecRetries() = 0;
  519. virtual bool decAndTestScheduleCountRemaining() = 0;
  520. virtual void setFailInfo(int code, const char * message) = 0;
  521. virtual void reset() = 0;
  522. virtual void setEvent(const char * name, const char * extra) = 0;
  523. virtual void incScheduleCount() = 0;
  524. };
  525. interface IWorkflowItem : extends IRuntimeWorkflowItem
  526. {
  527. virtual void setScheduledNow() = 0;
  528. virtual void setScheduledOn(const char * name, const char * text) = 0;
  529. virtual void setSchedulePriority(unsigned priority) = 0;
  530. virtual void setScheduleCount(unsigned count) = 0;
  531. virtual void addDependency(unsigned wfid) = 0;
  532. virtual void setPersistInfo(const char * name, unsigned wfid, int maxCopies) = 0;
  533. virtual void syncRuntimeData(const IConstWorkflowItem & other) = 0;
  534. virtual void setScheduledWfid(unsigned wfid) = 0;
  535. virtual void setCluster(const char * cluster) = 0;
  536. };
  537. interface IConstWorkflowItemIterator : extends IScmIterator
  538. {
  539. virtual IConstWorkflowItem * query() const = 0;
  540. };
  541. interface IRuntimeWorkflowItemIterator : extends IConstWorkflowItemIterator
  542. {
  543. virtual IRuntimeWorkflowItem * get() const = 0;
  544. };
  545. interface IWorkflowItemIterator : extends IConstWorkflowItemIterator
  546. {
  547. virtual IWorkflowItem * get() const = 0;
  548. };
  549. interface IWorkflowItemArray : extends IInterface
  550. {
  551. virtual IRuntimeWorkflowItem & queryWfid(unsigned wfid) = 0;
  552. virtual unsigned count() const = 0;
  553. virtual IRuntimeWorkflowItemIterator * getSequenceIterator() = 0;
  554. virtual void addClone(const IConstWorkflowItem * other) = 0;
  555. virtual bool hasScheduling() const = 0;
  556. };
  557. enum LocalFileUploadType
  558. {
  559. UploadTypeFileSpray = 0,
  560. UploadTypeWUResult = 1,
  561. UploadTypeWUResultCsv = 2,
  562. UploadTypeWUResultXml = 3,
  563. UploadTypeSize = 4
  564. };
  565. interface IConstLocalFileUpload : extends IInterface
  566. {
  567. virtual unsigned queryID() const = 0;
  568. virtual LocalFileUploadType queryType() const = 0;
  569. virtual IStringVal & getSource(IStringVal & ret) const = 0;
  570. virtual IStringVal & getDestination(IStringVal & ret) const = 0;
  571. virtual IStringVal & getEventTag(IStringVal & ret) const = 0;
  572. };
  573. interface IConstLocalFileUploadIterator : extends IScmIterator
  574. {
  575. virtual IConstLocalFileUpload * get() = 0;
  576. };
  577. enum WUSubscribeOptions
  578. {
  579. SubscribeOptionRunningState = 0,
  580. SubscribeOptionAnyState = 1,
  581. SubscribeOptionAbort = 2,
  582. SubscribeOptionProgress = 3,
  583. SubscribeOptionAll = 4,
  584. SubscribeOptionSize = 5
  585. };
  586. interface IWUGraphProgress;
  587. interface IPropertyTree;
  588. enum WUGraphState
  589. {
  590. WUGraphUnknown = 0,
  591. WUGraphComplete = 1,
  592. WUGraphRunning = 2,
  593. WUGraphFailed = 3,
  594. WUGraphPaused = 4
  595. };
  596. enum WUFileKind
  597. {
  598. WUFileStandard = 0,
  599. WUFileTemporary = 1,
  600. WUFileOwned = 2,
  601. WUFileJobOwned = 3
  602. };
  603. typedef unsigned __int64 WUGraphIDType;
  604. typedef unsigned __int64 WUNodeIDType;
  605. interface IConstWUGraphProgress : extends IInterface
  606. {
  607. virtual IPropertyTree * queryProgressTree() = 0;
  608. virtual WUGraphState queryGraphState() = 0;
  609. virtual WUGraphState queryNodeState(WUGraphIDType nodeId) = 0;
  610. virtual IWUGraphProgress * update() = 0;
  611. virtual unsigned queryFormatVersion() = 0;
  612. };
  613. interface IWUGraphProgress : extends IConstWUGraphProgress
  614. {
  615. virtual IPropertyTree & updateEdge(WUGraphIDType nodeId, const char * edgeId) = 0;
  616. virtual IPropertyTree & updateNode(WUGraphIDType nodeId, WUNodeIDType id) = 0;
  617. virtual void setGraphState(WUGraphState state) = 0;
  618. virtual void setNodeState(WUGraphIDType nodeId, WUGraphState state) = 0;
  619. };
  620. interface IConstWUTimeStamp : extends IInterface
  621. {
  622. virtual IStringVal & getApplication(IStringVal & str) const = 0;
  623. virtual IStringVal & getEvent(IStringVal & str) const = 0;
  624. virtual IStringVal & getDate(IStringVal & dt) const = 0;
  625. };
  626. interface IConstWUTimeStampIterator : extends IScmIterator
  627. {
  628. virtual IConstWUTimeStamp & query() = 0;
  629. };
  630. interface IConstWUAppValue : extends IInterface
  631. {
  632. virtual IStringVal & getApplication(IStringVal & str) const = 0;
  633. virtual IStringVal & getName(IStringVal & str) const = 0;
  634. virtual IStringVal & getValue(IStringVal & str) const = 0;
  635. };
  636. interface IConstWUAppValueIterator : extends IScmIterator
  637. {
  638. virtual IConstWUAppValue & query() = 0;
  639. };
  640. //! IWorkUnit
  641. //! Provides high level access to WorkUnit "header" data.
  642. interface IWorkUnit;
  643. interface IUserDescriptor;
  644. interface IStringIterator : extends IScmIterator
  645. {
  646. virtual IStringVal & str(IStringVal & str) = 0;
  647. };
  648. interface IConstWorkUnit : extends IInterface
  649. {
  650. virtual bool aborting() const = 0;
  651. virtual void forceReload() = 0;
  652. virtual WUAction getAction() const = 0;
  653. virtual IStringVal& getActionEx(IStringVal & str) const = 0;
  654. virtual IStringVal & getApplicationValue(const char * application, const char * propname, IStringVal & str) const = 0;
  655. virtual int getApplicationValueInt(const char * application, const char * propname, int defVal) const = 0;
  656. virtual IConstWUAppValueIterator & getApplicationValues() const = 0;
  657. virtual bool hasWorkflow() const = 0;
  658. virtual unsigned queryEventScheduledCount() const = 0;
  659. virtual IPropertyTree * queryWorkflowTree() const = 0;
  660. virtual IConstWorkflowItemIterator * getWorkflowItems() const = 0;
  661. virtual IWorkflowItemArray * getWorkflowClone() const = 0;
  662. virtual IConstLocalFileUploadIterator * getLocalFileUploads() const = 0;
  663. virtual bool requiresLocalFileUpload() const = 0;
  664. virtual bool getIsQueryService() const = 0;
  665. virtual IStringVal & getClusterName(IStringVal & str) const = 0;
  666. virtual unsigned getCombineQueries() const = 0;
  667. virtual WUCompareMode getCompareMode() const = 0;
  668. virtual IStringVal & getCustomerId(IStringVal & str) const = 0;
  669. virtual bool hasDebugValue(const char * propname) const = 0;
  670. virtual IStringVal & getDebugValue(const char * propname, IStringVal & str) const = 0;
  671. virtual int getDebugValueInt(const char * propname, int defVal) const = 0;
  672. virtual __int64 getDebugValueInt64(const char * propname, __int64 defVal) const = 0;
  673. virtual bool getDebugValueBool(const char * propname, bool defVal) const = 0;
  674. virtual IStringIterator & getDebugValues() const = 0;
  675. virtual IStringIterator & getDebugValues(const char * prop) const = 0;
  676. virtual unsigned getExceptionCount() const = 0;
  677. virtual IConstWUExceptionIterator & getExceptions() const = 0;
  678. virtual IConstWUResult * getGlobalByName(const char * name) const = 0;
  679. virtual IConstWUGraphIterator & getGraphs(WUGraphType type) const = 0;
  680. virtual IConstWUGraph * getGraph(const char * name) const = 0;
  681. virtual IConstWUGraphProgress * getGraphProgress(const char * name) const = 0;
  682. virtual IStringVal & getJobName(IStringVal & str) const = 0;
  683. virtual IStringVal & getParentWuid(IStringVal & str) const = 0;
  684. virtual IConstWUPlugin * getPluginByName(const char * name) const = 0;
  685. virtual IConstWUPluginIterator & getPlugins() const = 0;
  686. virtual IConstWULibraryIterator & getLibraries() const = 0;
  687. virtual WUPriorityClass getPriority() const = 0;
  688. virtual int getPriorityLevel() const = 0;
  689. virtual IConstWUQuery * getQuery() const = 0;
  690. virtual bool getRescheduleFlag() const = 0;
  691. virtual IConstWUResult * getResultByName(const char * name) const = 0;
  692. virtual IConstWUResult * getResultBySequence(unsigned seq) const = 0;
  693. virtual unsigned getResultLimit() const = 0;
  694. virtual IConstWUResultIterator & getResults() const = 0;
  695. virtual IConstWUActivityIterator & getActivities() const = 0;
  696. virtual IConstWUActivity * getActivity(__int64 id) const = 0;
  697. virtual IStringVal & getScope(IStringVal & str) const = 0;
  698. virtual IStringVal & getSecurityToken(IStringVal & str) const = 0;
  699. virtual WUState getState() const = 0;
  700. virtual IStringVal & getStateEx(IStringVal & str) const = 0;
  701. virtual __int64 getAgentSession() const = 0;
  702. virtual unsigned getAgentPID() const = 0;
  703. virtual IStringVal & getStateDesc(IStringVal & str) const = 0;
  704. virtual IConstWUResult * getTemporaryByName(const char * name) const = 0;
  705. virtual IConstWUResultIterator & getTemporaries() const = 0;
  706. virtual bool getRunningGraph(IStringVal & graphName, WUGraphIDType & subId) const = 0;
  707. virtual unsigned getTimerCount(const char * timerName, const char * instance) const = 0;
  708. virtual unsigned getTimerDuration(const char * timerName, const char * instance) const = 0;
  709. virtual IStringVal & getTimeStamp(const char * name, const char * instance, IStringVal & str) const = 0;
  710. virtual IConstWUWebServicesInfo * getWebServicesInfo() const = 0;
  711. virtual IConstWURoxieQueryInfo * getRoxieQueryInfo() const = 0;
  712. virtual IStringIterator & getTimers() const = 0;
  713. virtual IConstWUTimeStampIterator & getTimeStamps() const = 0;
  714. virtual IStringVal & getUser(IStringVal & str) const = 0;
  715. virtual IStringVal & getWuScope(IStringVal & str) const = 0;
  716. virtual IConstWUResult * getVariableByName(const char * name) const = 0;
  717. virtual IConstWUResultIterator & getVariables() const = 0;
  718. virtual IStringVal & getWuid(IStringVal & str) const = 0;
  719. virtual bool isProtected() const = 0;
  720. virtual bool isPausing() const = 0;
  721. virtual IWorkUnit & lock() = 0;
  722. virtual bool reload() = 0;
  723. virtual void requestAbort() = 0;
  724. virtual void subscribe(WUSubscribeOptions options) = 0;
  725. virtual unsigned queryFileUsage(const char * filename) const = 0;
  726. virtual unsigned getCodeVersion() const = 0;
  727. virtual unsigned getWuidVersion() const = 0;
  728. virtual void getBuildVersion(IStringVal & buildVersion, IStringVal & eclVersion) const = 0;
  729. virtual bool isBilled() const = 0;
  730. virtual bool getWuDate(unsigned & year, unsigned & month, unsigned & day) = 0;
  731. virtual IPropertyTree * getDiskUsageStats() = 0;
  732. virtual IPropertyTreeIterator & getFileIterator() const = 0;
  733. virtual bool getCloneable() const = 0;
  734. virtual IUserDescriptor * queryUserDescriptor() const = 0;
  735. virtual IStringVal & getSnapshot(IStringVal & str) const = 0;
  736. virtual IJlibDateTime & getTimeScheduled(IJlibDateTime & val) const = 0;
  737. virtual IPropertyTreeIterator & getFilesReadIterator() const = 0;
  738. virtual void protect(bool protectMode) = 0;
  739. virtual IStringVal & getAllowedClusters(IStringVal & str) const = 0;
  740. virtual int getPriorityValue() const = 0;
  741. virtual void remoteCheckAccess(IUserDescriptor * user, bool writeaccess) const = 0;
  742. virtual bool getAllowAutoQueueSwitch() const = 0;
  743. virtual IConstWULibrary * getLibraryByName(const char * name) const = 0;
  744. virtual unsigned getGraphCount() const = 0;
  745. virtual unsigned getSourceFileCount() const = 0;
  746. virtual unsigned getResultCount() const = 0;
  747. virtual unsigned getVariableCount() const = 0;
  748. virtual unsigned getTimerCount() const = 0;
  749. virtual unsigned getApplicationValueCount() const = 0;
  750. virtual unsigned getDebugAgentListenerPort() const = 0;
  751. virtual IStringVal & getDebugAgentListenerIP(IStringVal & ip) const = 0;
  752. virtual IStringVal & getXmlParams(IStringVal & params) const = 0;
  753. virtual const IPropertyTree * getXmlParams() const = 0;
  754. virtual unsigned __int64 getHash() const = 0;
  755. virtual IStringIterator *getLogs(const char *type, const char *instance=NULL) const = 0;
  756. virtual IStringIterator *getProcesses(const char *type) const = 0;
  757. virtual IPropertyTreeIterator& getProcesses(const char *type, const char *instance) const = 0;
  758. };
  759. interface IDistributedFile;
  760. interface IWorkUnit : extends IConstWorkUnit
  761. {
  762. virtual void clearExceptions() = 0;
  763. virtual void commit() = 0;
  764. virtual IWUException * createException() = 0;
  765. virtual void setTimeStamp(const char * name, const char * instance, const char * event) = 0;
  766. virtual void addTimeStamp(const char * name, const char * instance, const char * event) = 0;
  767. virtual void addProcess(const char *type, const char *instance, unsigned pid, const char *log=NULL) = 0;
  768. virtual void setAction(WUAction action) = 0;
  769. virtual void setApplicationValue(const char * application, const char * propname, const char * value, bool overwrite) = 0;
  770. virtual void setApplicationValueInt(const char * application, const char * propname, int value, bool overwrite) = 0;
  771. virtual void incEventScheduledCount() = 0;
  772. virtual void setIsQueryService(bool cached) = 0;
  773. virtual void setClusterName(const char * value) = 0;
  774. virtual void setCombineQueries(unsigned combine) = 0;
  775. virtual void setCompareMode(WUCompareMode value) = 0;
  776. virtual void setCustomerId(const char * value) = 0;
  777. virtual void setDebugValue(const char * propname, const char * value, bool overwrite) = 0;
  778. virtual void setDebugValueInt(const char * propname, int value, bool overwrite) = 0;
  779. virtual void setJobName(const char * value) = 0;
  780. virtual void setPriority(WUPriorityClass cls) = 0;
  781. virtual void setPriorityLevel(int level) = 0;
  782. virtual void setRescheduleFlag(bool value) = 0;
  783. virtual void setResultLimit(unsigned value) = 0;
  784. virtual void setSecurityToken(const char * value) = 0;
  785. virtual void setState(WUState state) = 0;
  786. virtual void setStateEx(const char * text) = 0;
  787. virtual void setAgentSession(__int64 sessionId) = 0;
  788. virtual void setTimerInfo(const char * name, const char * instance, unsigned ms, unsigned count, unsigned __int64 max) = 0;
  789. virtual void setTracingValue(const char * propname, const char * value) = 0;
  790. virtual void setTracingValueInt(const char * propname, int value) = 0;
  791. virtual void setUser(const char * value) = 0;
  792. virtual void setWuScope(const char * value) = 0;
  793. virtual void setSnapshot(const char * value) = 0;
  794. virtual IWorkflowItemIterator * updateWorkflowItems() = 0;
  795. virtual void syncRuntimeWorkflow(IWorkflowItemArray * array) = 0;
  796. virtual IWorkflowItem * addWorkflowItem(unsigned wfid, WFType type, WFMode mode, unsigned success, unsigned failure, unsigned recovery, unsigned retriesAllowed, unsigned contingencyFor) = 0;
  797. virtual void resetWorkflow() = 0;
  798. virtual void schedule() = 0;
  799. virtual void deschedule() = 0;
  800. virtual unsigned addLocalFileUpload(LocalFileUploadType type, const char * source, const char * destination, const char * eventTag) = 0;
  801. virtual IWUResult * updateGlobalByName(const char * name) = 0;
  802. virtual IWUGraph * updateGraph(const char * name) = 0;
  803. virtual IWUQuery * updateQuery() = 0;
  804. virtual IWUWebServicesInfo * updateWebServicesInfo(bool create) = 0;
  805. virtual IWURoxieQueryInfo * updateRoxieQueryInfo(const char * wuid, const char * roxieClusterName) = 0;
  806. virtual IWUActivity * updateActivity(__int64 id) = 0;
  807. virtual IWUPlugin * updatePluginByName(const char * name) = 0;
  808. virtual IWULibrary * updateLibraryByName(const char * name) = 0;
  809. virtual IWUResult * updateResultByName(const char * name) = 0;
  810. virtual IWUResult * updateResultBySequence(unsigned seq) = 0;
  811. virtual IWUResult * updateTemporaryByName(const char * name) = 0;
  812. virtual IWUResult * updateVariableByName(const char * name) = 0;
  813. virtual void addFile(const char * fileName, StringArray * clusters, unsigned usageCount, WUFileKind fileKind, const char * graphOwner) = 0;
  814. virtual void releaseFile(const char * fileName) = 0;
  815. virtual void setCodeVersion(unsigned version, const char * buildVersion, const char * eclVersion) = 0;
  816. virtual void setBilled(bool value) = 0;
  817. virtual void deleteTempFiles(const char * graph, bool deleteOwned, bool deleteJobOwned) = 0;
  818. virtual void deleteTemporaries() = 0;
  819. virtual void addDiskUsageStats(__int64 avgNodeUsage, unsigned minNode, __int64 minNodeUsage, unsigned maxNode, __int64 maxNodeUsage, __int64 graphId) = 0;
  820. virtual void setCloneable(bool value) = 0;
  821. virtual void setIsClone(bool value) = 0;
  822. virtual void setTimeScheduled(const IJlibDateTime & val) = 0;
  823. virtual void noteFileRead(IDistributedFile * file) = 0;
  824. virtual void clearGraphProgress() = 0;
  825. virtual void resetBeforeGeneration() = 0;
  826. virtual bool switchThorQueue(const char * newcluster, IQueueSwitcher * qs) = 0;
  827. virtual void setAllowedClusters(const char * value) = 0;
  828. virtual void setAllowAutoQueueSwitch(bool val) = 0;
  829. virtual void setLibraryInformation(const char * name, unsigned interfaceHash, unsigned definitionHash) = 0;
  830. virtual void setDebugAgentListenerPort(unsigned port) = 0;
  831. virtual void setDebugAgentListenerIP(const char * ip) = 0;
  832. virtual void setXmlParams(const char *xml) = 0;
  833. virtual void setXmlParams(IPropertyTree *tree) = 0;
  834. virtual void setHash(unsigned __int64 hash) = 0;
  835. virtual void setResultInt(const char * name, unsigned sequence, __int64 val) = 0;
  836. virtual void setResultUInt(const char * name, unsigned sequence, unsigned __int64 val) = 0;
  837. virtual void setResultReal(const char *name, unsigned sequence, double val) = 0;
  838. virtual void setResultVarString(const char * stepname, unsigned sequence, const char *val) = 0;
  839. virtual void setResultVarUnicode(const char * stepname, unsigned sequence, UChar const *val) = 0;
  840. virtual void setResultString(const char * stepname, unsigned sequence, int len, const char *val) = 0;
  841. virtual void setResultData(const char * stepname, unsigned sequence, int len, const void *val) = 0;
  842. // virtual void doSetResultString(type_t type, const char *name, unsigned sequence, int len, const char *val) = 0;
  843. virtual void setResultRaw(const char * name, unsigned sequence, int len, const void *val) = 0;
  844. virtual void setResultSet(const char * name, unsigned sequence, bool isAll, size32_t len, const void *val, ISetToXmlTransformer *) = 0;
  845. virtual void setResultUnicode(const char * name, unsigned sequence, int len, UChar const * val) = 0;
  846. virtual void setResultBool(const char *name, unsigned sequence, bool val) = 0;
  847. virtual void setResultDecimal(const char *name, unsigned sequence, int len, int precision, bool isSigned, const void *val) = 0;
  848. virtual void setResultDataset(const char * name, unsigned sequence, size32_t len, const void *val, unsigned numRows, bool extend) = 0;
  849. };
  850. interface IConstWorkUnitIterator : extends IScmIterator
  851. {
  852. virtual IConstWorkUnit & query() = 0;
  853. };
  854. //! IWUTimers
  855. interface IWUTimers : extends IInterface
  856. {
  857. virtual void setTrigger(const IJlibDateTime & dt) = 0;
  858. virtual IJlibDateTime & getTrigger(IJlibDateTime & dt) const = 0;
  859. virtual void setExpiration(const IJlibDateTime & dt) = 0;
  860. virtual IJlibDateTime & getExpiration(IJlibDateTime & dt) const = 0;
  861. virtual void setSubmission(const IJlibDateTime & dt) = 0;
  862. virtual IJlibDateTime & getSubmission(IJlibDateTime & dt) const = 0;
  863. };
  864. //! IWUFactory
  865. //! Used to instantiate WorkUnit components.
  866. class MemoryBuffer; // should define an SCMinterface for it
  867. interface ILocalWorkUnit : extends IWorkUnit
  868. {
  869. virtual void serialize(MemoryBuffer & tgt) = 0;
  870. virtual void deserialize(MemoryBuffer & src) = 0;
  871. virtual void loadXML(const char * xml) = 0;
  872. virtual IConstWorkUnit * unlock() = 0;
  873. };
  874. enum WUSortField
  875. {
  876. WUSFuser = 1,
  877. WUSFcluster = 2,
  878. WUSFjob = 3,
  879. WUSFstate = 4,
  880. WUSFpriority = 5,
  881. WUSFwuid = 6,
  882. WUSFwuidhigh = 7,
  883. WUSFfileread = 8,
  884. WUSFroxiecluster = 9,
  885. WUSFprotected = 10,
  886. WUSFbatchloginid = 11,
  887. WUSFbatchcustomername = 12,
  888. WUSFbatchpriority = 13,
  889. WUSFbatchinputreccount = 14,
  890. WUSFbatchtimeuploaded = 15,
  891. WUSFbatchtimecompleted = 16,
  892. WUSFbatchmachine = 17,
  893. WUSFbatchinputfile = 18,
  894. WUSFbatchoutputfile = 19,
  895. WUSFtotalthortime = 20,
  896. WUSFterm = 0,
  897. WUSFreverse = 256,
  898. WUSFnocase = 512,
  899. WUSFnumeric = 1024,
  900. WUSFwild = 2048
  901. };
  902. enum WUQuerySortField
  903. {
  904. WUQSFId = 1,
  905. WUQSFname = 2,
  906. WUQSFwuid = 3,
  907. WUQSFdll = 4,
  908. WUQSFmemoryLimit = 5,
  909. WUQSFmemoryLimitHi = 6,
  910. WUQSFtimeLimit = 7,
  911. WUQSFtimeLimitHi = 8,
  912. WUQSFwarnTimeLimit = 9,
  913. WUQSFwarnTimeLimitHi = 10,
  914. WUQSFpriority = 11,
  915. WUQSFpriorityHi = 12,
  916. WUQSFQuerySet = 13,
  917. WUQSFterm = 0,
  918. WUQSFreverse = 256,
  919. WUQSFnocase = 512,
  920. WUQSFnumeric = 1024,
  921. WUQSFwild = 2048
  922. };
  923. typedef IIteratorOf<IPropertyTree> IConstQuerySetQueryIterator;
  924. interface IWorkUnitFactory : extends IInterface
  925. {
  926. virtual IWorkUnit * createWorkUnit(const char * parentWuid, const char * app, const char * user) = 0;
  927. virtual bool deleteWorkUnit(const char * wuid) = 0;
  928. virtual IConstWorkUnit * openWorkUnit(const char * wuid, bool lock) = 0;
  929. virtual IConstWorkUnitIterator * getWorkUnitsByOwner(const char * owner) = 0;
  930. virtual IWorkUnit * updateWorkUnit(const char * wuid) = 0;
  931. virtual int setTracingLevel(int newlevel) = 0;
  932. virtual IWorkUnit * createNamedWorkUnit(const char * wuid, const char * parentWuid, const char * app, const char * user) = 0;
  933. virtual IConstWorkUnitIterator * getWorkUnitsByState(WUState state) = 0;
  934. virtual IConstWorkUnitIterator * getWorkUnitsByECL(const char * ecl) = 0;
  935. virtual IConstWorkUnitIterator * getWorkUnitsByCluster(const char * cluster) = 0;
  936. virtual IConstWorkUnitIterator * getWorkUnitsByXPath(const char * xpath) = 0;
  937. virtual IConstWorkUnitIterator * getWorkUnitsSorted(WUSortField * sortorder, WUSortField * filters, const void * filterbuf, unsigned startoffset, unsigned maxnum, const char * queryowner, __int64 * cachehint, unsigned *total) = 0;
  938. virtual unsigned numWorkUnits() = 0;
  939. virtual unsigned numWorkUnitsFiltered(WUSortField * filters, const void * filterbuf) = 0;
  940. virtual void descheduleAllWorkUnits() = 0;
  941. virtual bool deleteWorkUnitEx(const char * wuid) = 0;
  942. virtual IConstQuerySetQueryIterator * getQuerySetQueriesSorted(WUQuerySortField *sortorder, WUQuerySortField *filters, const void *filterbuf, unsigned startoffset, unsigned maxnum, __int64 *cachehint, unsigned *total) = 0;
  943. };
  944. interface IWorkflowScheduleConnection : extends IInterface
  945. {
  946. virtual void lock() = 0;
  947. virtual void unlock() = 0;
  948. virtual void setActive() = 0;
  949. virtual void resetActive() = 0;
  950. virtual bool queryActive() = 0;
  951. virtual bool pull(IWorkflowItemArray * workflow) = 0;
  952. virtual void push(const char * name, const char * text) = 0;
  953. };
  954. interface IExtendedWUInterface
  955. {
  956. virtual unsigned calculateHash(unsigned prevHash) = 0;
  957. virtual void copyWorkUnit(IConstWorkUnit *cached, bool all) = 0;
  958. virtual bool archiveWorkUnit(const char *base,bool del,bool ignoredllerrors,bool deleteOwned) = 0;
  959. virtual void packWorkUnit(bool pack=true) = 0;
  960. };
  961. struct WorkunitUpdate : public Owned<IWorkUnit>
  962. {
  963. public:
  964. WorkunitUpdate(IWorkUnit *wu) : Owned<IWorkUnit>(wu) { }
  965. ~WorkunitUpdate() { if (get()) get()->commit(); }
  966. };
  967. extern WORKUNIT_API IStringVal &getEclCCServerQueueNames(IStringVal &ret, const char *process);
  968. extern WORKUNIT_API IStringVal &getEclServerQueueNames(IStringVal &ret, const char *process);
  969. extern WORKUNIT_API IStringVal &getEclSchedulerQueueNames(IStringVal &ret, const char *process);
  970. extern WORKUNIT_API IStringVal &getAgentQueueNames(IStringVal &ret, const char *process);
  971. extern WORKUNIT_API IStringVal &getRoxieQueueNames(IStringVal &ret, const char *process);
  972. extern WORKUNIT_API IStringVal &getThorQueueNames(IStringVal &ret, const char *process);
  973. extern WORKUNIT_API StringBuffer &getClusterThorQueueName(StringBuffer &ret, const char *cluster);
  974. extern WORKUNIT_API StringBuffer &getClusterThorGroupName(StringBuffer &ret, const char *cluster);
  975. extern WORKUNIT_API StringBuffer &getClusterRoxieQueueName(StringBuffer &ret, const char *cluster);
  976. extern WORKUNIT_API StringBuffer &getClusterEclCCServerQueueName(StringBuffer &ret, const char *cluster);
  977. extern WORKUNIT_API StringBuffer &getClusterEclServerQueueName(StringBuffer &ret, const char *cluster);
  978. extern WORKUNIT_API StringBuffer &getClusterEclAgentQueueName(StringBuffer &ret, const char *cluster);
  979. extern WORKUNIT_API IStringIterator *getTargetClusters(const char *processType, const char *processName);
  980. extern WORKUNIT_API bool validateTargetClusterName(const char *clustname);
  981. extern WORKUNIT_API IConstWUClusterInfo* getTargetClusterInfo(const char *clustname);
  982. typedef IArrayOf<IConstWUClusterInfo> CConstWUClusterInfoArray;
  983. extern WORKUNIT_API unsigned getEnvironmentClusterInfo(CConstWUClusterInfoArray &clusters);
  984. extern WORKUNIT_API unsigned getEnvironmentClusterInfo(IPropertyTree* environmentRoot, CConstWUClusterInfoArray &clusters);
  985. extern WORKUNIT_API void getRoxieProcessServers(const char *process, SocketEndpointArray &servers);
  986. extern WORKUNIT_API bool isProcessCluster(const char *remoteDali, const char *process);
  987. extern WORKUNIT_API bool isProcessCluster(const char *process);
  988. extern WORKUNIT_API bool getWorkUnitCreateTime(const char *wuid,CDateTime &time); // based on WUID
  989. extern WORKUNIT_API bool restoreWorkUnit(const char *base,const char *wuid);
  990. extern WORKUNIT_API void clientShutdownWorkUnit();
  991. extern WORKUNIT_API IExtendedWUInterface * queryExtendedWU(IWorkUnit * wu);
  992. extern WORKUNIT_API unsigned getEnvironmentThorClusterNames(StringArray &thorNames, StringArray &groupNames, StringArray &targetNames, StringArray &queueNames);
  993. extern WORKUNIT_API unsigned getEnvironmentHThorClusterNames(StringArray &eclAgentNames, StringArray &groupNames, StringArray &targetNames);
  994. extern WORKUNIT_API StringBuffer &formatGraphTimerLabel(StringBuffer &str, const char *graphName, unsigned subGraphNum=0, unsigned __int64 subId=0);
  995. extern WORKUNIT_API bool parseGraphTimerLabel(const char *label, StringBuffer &graphName, unsigned &subGraphNum, unsigned __int64 &subId);
  996. extern WORKUNIT_API void addExceptionToWorkunit(IWorkUnit * wu, WUExceptionSeverity severity, const char * source, unsigned code, const char * text, const char * filename, unsigned lineno, unsigned column);
  997. extern WORKUNIT_API IWorkUnitFactory * getWorkUnitFactory();
  998. extern WORKUNIT_API IWorkUnitFactory * getSecWorkUnitFactory(ISecManager &secmgr, ISecUser &secuser);
  999. extern WORKUNIT_API IWorkUnitFactory * getWorkUnitFactory(ISecManager *secmgr, ISecUser *secuser);
  1000. extern WORKUNIT_API ILocalWorkUnit* createLocalWorkUnit();
  1001. extern WORKUNIT_API IStringVal& exportWorkUnitToXML(const IConstWorkUnit *wu, IStringVal &str, bool unpack);
  1002. extern WORKUNIT_API StringBuffer &exportWorkUnitToXML(const IConstWorkUnit *wu, StringBuffer &str, bool unpack);
  1003. extern WORKUNIT_API void exportWorkUnitToXMLFile(const IConstWorkUnit *wu, const char * filename, unsigned extraXmlFlags, bool unpack);
  1004. extern WORKUNIT_API void submitWorkUnit(const char *wuid, const char *username, const char *password);
  1005. extern WORKUNIT_API void abortWorkUnit(const char *wuid);
  1006. extern WORKUNIT_API void submitWorkUnit(const char *wuid, ISecManager *secmgr, ISecUser *secuser);
  1007. extern WORKUNIT_API void abortWorkUnit(const char *wuid, ISecManager *secmgr, ISecUser *secuser);
  1008. extern WORKUNIT_API void secSubmitWorkUnit(const char *wuid, ISecManager &secmgr, ISecUser &secuser);
  1009. extern WORKUNIT_API void secAbortWorkUnit(const char *wuid, ISecManager &secmgr, ISecUser &secuser);
  1010. extern WORKUNIT_API IWUResult * updateWorkUnitResult(IWorkUnit * w, const char *name, unsigned sequence);
  1011. extern WORKUNIT_API IConstWUResult * getWorkUnitResult(IConstWorkUnit * w, const char *name, unsigned sequence);
  1012. //returns a state code. WUStateUnknown == timeout
  1013. extern WORKUNIT_API WUState waitForWorkUnitToComplete(const char * wuid, int timeout = -1, bool returnOnWaitState = false);
  1014. extern WORKUNIT_API bool waitForWorkUnitToCompile(const char * wuid, int timeout = -1);
  1015. extern WORKUNIT_API WUState secWaitForWorkUnitToComplete(const char * wuid, ISecManager &secmgr, ISecUser &secuser, int timeout = -1, bool returnOnWaitState = false);
  1016. extern WORKUNIT_API bool secWaitForWorkUnitToCompile(const char * wuid, ISecManager &secmgr, ISecUser &secuser, int timeout = -1);
  1017. extern WORKUNIT_API bool secDebugWorkunit(const char * wuid, ISecManager &secmgr, ISecUser &secuser, const char *command, StringBuffer &response);
  1018. extern WORKUNIT_API IStringVal& createToken(const char *wuid, const char *user, const char *password, IStringVal &str);
  1019. // This latter is temporary - tokens will be replaced by something more secure
  1020. extern WORKUNIT_API void extractToken(const char *token, const char *wuid, IStringVal &user, IStringVal &password);
  1021. extern WORKUNIT_API WUState getWorkUnitState(const char* state);
  1022. extern WORKUNIT_API IWorkflowScheduleConnection * getWorkflowScheduleConnection(char const * wuid);
  1023. extern WORKUNIT_API const char *skipLeadingXml(const char *text);
  1024. extern WORKUNIT_API bool isArchiveQuery(const char * text);
  1025. extern WORKUNIT_API bool isQueryManifest(const char * text);
  1026. extern WORKUNIT_API IPropertyTree * resolveDefinitionInArchive(IPropertyTree * archive, const char * path);
  1027. inline bool isLibrary(IConstWorkUnit * wu) { return wu->getApplicationValueInt("LibraryModule", "interfaceHash", 0) != 0; }
  1028. extern WORKUNIT_API bool looksLikeAWuid(const char * wuid);
  1029. enum WUQueryActivationOptions
  1030. {
  1031. DO_NOT_ACTIVATE = 0,
  1032. MAKE_ACTIVATE= 1,
  1033. ACTIVATE_SUSPEND_PREVIOUS = 2,
  1034. ACTIVATE_DELETE_PREVIOUS = 3,
  1035. DO_NOT_ACTIVATE_LOAD_DATA_ONLY = 4,
  1036. MAKE_ACTIVATE_LOAD_DATA_ONLY = 5
  1037. };
  1038. extern WORKUNIT_API int calcPriorityValue(const IPropertyTree * p); // Calls to this should really go through the workunit interface.
  1039. extern WORKUNIT_API IPropertyTree * addNamedQuery(IPropertyTree * queryRegistry, const char * name, const char * wuid, const char * dll, bool library, const char *userid); // result not linked
  1040. extern WORKUNIT_API void removeNamedQuery(IPropertyTree * queryRegistry, const char * id);
  1041. extern WORKUNIT_API void removeWuidFromNamedQueries(IPropertyTree * queryRegistry, const char * wuid);
  1042. extern WORKUNIT_API void removeDllFromNamedQueries(IPropertyTree * queryRegistry, const char * dll);
  1043. extern WORKUNIT_API void removeAliasesFromNamedQuery(IPropertyTree * queryRegistry, const char * id);
  1044. extern WORKUNIT_API void setQueryAlias(IPropertyTree * queryRegistry, const char * name, const char * value);
  1045. extern WORKUNIT_API IPropertyTree * getQueryById(IPropertyTree * queryRegistry, const char *queryid);
  1046. extern WORKUNIT_API IPropertyTree * getQueryById(const char *queryset, const char *queryid, bool readonly);
  1047. extern WORKUNIT_API IPropertyTree * resolveQueryAlias(IPropertyTree * queryRegistry, const char * alias);
  1048. extern WORKUNIT_API IPropertyTree * resolveQueryAlias(const char *queryset, const char *alias, bool readonly);
  1049. extern WORKUNIT_API IPropertyTree * getQueryRegistry(const char * wsEclId, bool readonly);
  1050. extern WORKUNIT_API IPropertyTree * getQueryRegistryRoot();
  1051. extern WORKUNIT_API void setQueryCommentForNamedQuery(IPropertyTree * queryRegistry, const char *id, const char *queryComment);
  1052. extern WORKUNIT_API void setQuerySuspendedState(IPropertyTree * queryRegistry, const char * name, bool suspend, const char *userid);
  1053. extern WORKUNIT_API IPropertyTree * addNamedPackageSet(IPropertyTree * packageRegistry, const char * name, IPropertyTree *packageInfo, bool overWrite); // result not linked
  1054. extern WORKUNIT_API void removeNamedPackage(IPropertyTree * packageRegistry, const char * id);
  1055. extern WORKUNIT_API IPropertyTree * getPackageSetRegistry(const char * wsEclId, bool readonly);
  1056. extern WORKUNIT_API void addQueryToQuerySet(IWorkUnit *workunit, const char *querySetName, const char *queryName, IPropertyTree *packageInfo, WUQueryActivationOptions activateOption, StringBuffer &newQueryId, const char *userid);
  1057. extern WORKUNIT_API bool removeQuerySetAlias(const char *querySetName, const char *alias);
  1058. extern WORKUNIT_API void addQuerySetAlias(const char *querySetName, const char *alias, const char *id);
  1059. extern WORKUNIT_API void setSuspendQuerySetQuery(const char *querySetName, const char *id, bool suspend, const char *userid);
  1060. extern WORKUNIT_API void deleteQuerySetQuery(const char *querySetName, const char *id);
  1061. extern WORKUNIT_API const char *queryIdFromQuerySetWuid(const char *querySetName, const char *wuid, IStringVal &id);
  1062. extern WORKUNIT_API void removeQuerySetAliasesFromNamedQuery(const char *querySetName, const char * id);
  1063. extern WORKUNIT_API void setQueryCommentForNamedQuery(const char *querySetName, const char *id, const char *comment);
  1064. extern WORKUNIT_API void associateLocalFile(IWUQuery * query, WUFileType type, const char * name, const char * description, unsigned crc);
  1065. extern WORKUNIT_API const char *getTargetClusterComponentName(const char *clustname, const char *processType, StringBuffer &name);
  1066. extern WORKUNIT_API void descheduleWorkunit(char const * wuid);
  1067. #if 0
  1068. void WORKUNIT_API testWorkflow();
  1069. #endif
  1070. #endif