workunit.hpp 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218
  1. /*##############################################################################
  2. Copyright (C) 2011 HPCC Systems.
  3. All rights reserved. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU Affero General Public License as
  5. published by the Free Software Foundation, either version 3 of the
  6. License, or (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU Affero General Public License for more details.
  11. You should have received a copy of the GNU Affero General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. ############################################################################## */
  14. #ifndef WORKUNIT_INCL
  15. #define WORKUNIT_INCL
  16. #ifdef _WIN32
  17. #ifdef WORKUNIT_EXPORTS
  18. #define WORKUNIT_API __declspec(dllexport)
  19. #else
  20. #define WORKUNIT_API __declspec(dllimport)
  21. #endif
  22. #else
  23. #define WORKUNIT_API
  24. #endif
  25. #define MINIMUM_SCHEDULE_PRIORITY 0
  26. #define DEFAULT_SCHEDULE_PRIORITY 50
  27. #define MAXIMUM_SCHEDULE_PRIORITY 100
  28. #include "jiface.hpp"
  29. #include "errorlist.h"
  30. #include "jtime.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 bool isValid() const = 0;
  168. };
  169. interface IWUGraph : extends IConstWUGraph
  170. {
  171. virtual void setXGMML(const char * text) = 0;
  172. virtual void setXGMMLTree(IPropertyTree * tree) = 0;
  173. virtual void setName(const char * name) = 0;
  174. virtual void setType(WUGraphType type) = 0;
  175. };
  176. interface IConstWUGraphIterator : extends IScmIterator
  177. {
  178. virtual IConstWUGraph & query() = 0;
  179. };
  180. //! IWUResult
  181. enum
  182. {
  183. ResultSequenceStored = -1,
  184. ResultSequencePersist = -2,
  185. ResultSequenceInternal = -3,
  186. ResultSequenceOnce = -4,
  187. };
  188. extern WORKUNIT_API bool isSpecialResultSequence(unsigned sequence);
  189. enum WUResultFormat
  190. {
  191. ResultFormatRaw = 0,
  192. ResultFormatXml = 1,
  193. ResultFormatXmlSet = 2,
  194. ResultFormatCsv = 3,
  195. ResultFormatSize = 4
  196. };
  197. interface IConstWUResult : extends IInterface
  198. {
  199. virtual WUResultStatus getResultStatus() const = 0;
  200. virtual IStringVal & getResultName(IStringVal & str) const = 0;
  201. virtual int getResultSequence() const = 0;
  202. virtual bool isResultScalar() const = 0;
  203. virtual IStringVal & getResultXml(IStringVal & str) const = 0;
  204. virtual unsigned getResultFetchSize() const = 0;
  205. virtual __int64 getResultTotalRowCount() const = 0;
  206. virtual __int64 getResultRowCount() const = 0;
  207. virtual void getResultDataset(IStringVal & ecl, IStringVal & defs) const = 0;
  208. virtual IStringVal & getResultLogicalName(IStringVal & ecl) const = 0;
  209. virtual IStringVal & getResultKeyField(IStringVal & ecl) const = 0;
  210. virtual unsigned getResultRequestedRows() const = 0;
  211. virtual __int64 getResultInt() const = 0;
  212. virtual bool getResultBool() const = 0;
  213. virtual double getResultReal() const = 0;
  214. virtual IStringVal & getResultString(IStringVal & str) const = 0;
  215. virtual IDataVal & getResultRaw(IDataVal & data, IXmlToRawTransformer * xmlTransformer, ICsvToRawTransformer * csvTransformer) const = 0;
  216. virtual IDataVal & getResultUnicode(IDataVal & data) const = 0;
  217. virtual IStringVal & getResultEclSchema(IStringVal & str) const = 0;
  218. virtual __int64 getResultRawSize(IXmlToRawTransformer * xmlTransformer, ICsvToRawTransformer * csvTransformer) const = 0;
  219. virtual IDataVal & getResultRaw(IDataVal & data, __int64 from, __int64 length, IXmlToRawTransformer * xmlTransformer, ICsvToRawTransformer * csvTransformer) const = 0;
  220. virtual IStringVal & getResultRecordSizeEntry(IStringVal & str) const = 0;
  221. virtual IStringVal & getResultTransformerEntry(IStringVal & str) const = 0;
  222. virtual __int64 getResultRowLimit() const = 0;
  223. virtual IStringVal & getResultFilename(IStringVal & str) const = 0;
  224. virtual WUResultFormat getResultFormat() const = 0;
  225. virtual unsigned getResultHash() const = 0;
  226. virtual void getResultDecimal(void * val, unsigned length, unsigned precision, bool isSigned) const = 0;
  227. virtual bool getResultIsAll() const = 0;
  228. };
  229. interface IWUResult : extends IConstWUResult
  230. {
  231. virtual void setResultStatus(WUResultStatus status) = 0;
  232. virtual void setResultName(const char * name) = 0;
  233. virtual void setResultSequence(unsigned seq) = 0;
  234. virtual void setResultSchemaRaw(unsigned len, const void * schema) = 0;
  235. virtual void setResultScalar(bool isScalar) = 0;
  236. virtual void setResultRaw(unsigned len, const void * data, WUResultFormat format) = 0;
  237. virtual void setResultFetchSize(unsigned rows) = 0;
  238. virtual void setResultTotalRowCount(__int64 rows) = 0;
  239. virtual void setResultRowCount(__int64 rows) = 0;
  240. virtual void setResultDataset(const char * ecl, const char * defs) = 0;
  241. virtual void setResultLogicalName(const char * logicalName) = 0;
  242. virtual void setResultKeyField(const char * name) = 0;
  243. virtual void setResultRequestedRows(unsigned rowcount) = 0;
  244. virtual void setResultInt(__int64 val) = 0;
  245. virtual void setResultBool(bool val) = 0;
  246. virtual void setResultReal(double val) = 0;
  247. virtual void setResultString(const char * val, unsigned length) = 0;
  248. virtual void setResultData(const void * val, unsigned length) = 0;
  249. virtual void setResultDecimal(const void * val, unsigned length) = 0;
  250. virtual void addResultRaw(unsigned len, const void * data, WUResultFormat format) = 0;
  251. virtual void setResultRecordSizeEntry(const char * val) = 0;
  252. virtual void setResultTransformerEntry(const char * val) = 0;
  253. virtual void setResultRowLimit(__int64 value) = 0;
  254. virtual void setResultFilename(const char * name) = 0;
  255. virtual void setResultUnicode(const void * val, unsigned length) = 0;
  256. virtual void setResultUInt(__uint64 val) = 0;
  257. virtual void setResultIsAll(bool value) = 0;
  258. virtual void setResultFormat(WUResultFormat format) = 0;
  259. virtual void setResultXML(const char * xml) = 0;
  260. };
  261. interface IConstWUResultIterator : extends IScmIterator
  262. {
  263. virtual IConstWUResult & query() = 0;
  264. };
  265. //! IWUQuery
  266. enum WUFileType
  267. {
  268. FileTypeCpp = 0,
  269. FileTypeDll = 1,
  270. FileTypeResText = 2,
  271. FileTypeHintXml = 3,
  272. FileTypeSize = 4
  273. };
  274. interface IConstWUAssociatedFile : extends IInterface
  275. {
  276. virtual WUFileType getType() const = 0;
  277. virtual IStringVal & getDescription(IStringVal & ret) const = 0;
  278. virtual IStringVal & getIp(IStringVal & ret) const = 0;
  279. virtual IStringVal & getName(IStringVal & ret) const = 0;
  280. virtual IStringVal & getNameTail(IStringVal & ret) const = 0;
  281. virtual unsigned getCrc() const = 0;
  282. };
  283. interface IConstWUAssociatedFileIterator : extends IScmIterator
  284. {
  285. virtual IConstWUAssociatedFile & query() = 0;
  286. };
  287. interface IConstWUQuery : extends IInterface
  288. {
  289. virtual WUQueryType getQueryType() const = 0;
  290. virtual IStringVal & getQueryText(IStringVal & str) const = 0;
  291. virtual IStringVal & getQueryName(IStringVal & str) const = 0;
  292. virtual IStringVal & getQueryDllName(IStringVal & str) const = 0;
  293. virtual unsigned getQueryDllCrc() const = 0;
  294. virtual IStringVal & getQueryCppName(IStringVal & str) const = 0;
  295. virtual IStringVal & getQueryResTxtName(IStringVal & str) const = 0;
  296. virtual IConstWUAssociatedFile * getAssociatedFile(WUFileType type, unsigned index) const = 0;
  297. virtual IConstWUAssociatedFileIterator & getAssociatedFiles() const = 0;
  298. virtual IStringVal & getQueryShortText(IStringVal & str) const = 0;
  299. };
  300. interface IWUQuery : extends IConstWUQuery
  301. {
  302. virtual void setQueryType(WUQueryType qt) = 0;
  303. virtual void setQueryText(const char * pstr) = 0;
  304. virtual void setQueryName(const char * pstr) = 0;
  305. virtual void addAssociatedFile(WUFileType type, const char * name, const char * ip, const char * desc, unsigned crc) = 0;
  306. virtual void removeAssociatedFiles() = 0;
  307. };
  308. interface IConstWUWebServicesInfo : extends IInterface
  309. {
  310. virtual IStringVal & getModuleName(IStringVal & str) const = 0;
  311. virtual IStringVal & getAttributeName(IStringVal & str) const = 0;
  312. virtual IStringVal & getDefaultName(IStringVal & str) const = 0;
  313. virtual IStringVal & getInfo(const char * name, IStringVal & str) const = 0;
  314. virtual unsigned getWebServicesCRC() const = 0;
  315. };
  316. interface IWUWebServicesInfo : extends IConstWUWebServicesInfo
  317. {
  318. virtual void setModuleName(const char * pstr) = 0;
  319. virtual void setAttributeName(const char * pstr) = 0;
  320. virtual void setDefaultName(const char * pstr) = 0;
  321. virtual void setInfo(const char * name, const char * info) = 0;
  322. virtual void setWebServicesCRC(unsigned crc) = 0;
  323. };
  324. interface IConstWURoxieQueryInfo : extends IInterface
  325. {
  326. virtual IStringVal & getQueryInfo(IStringVal & str) const = 0;
  327. virtual IStringVal & getDefaultPackageInfo(IStringVal & str) const = 0;
  328. virtual IStringVal & getRoxieClusterName(IStringVal & str) const = 0;
  329. virtual IStringVal & getWuid(IStringVal & str) const = 0;
  330. };
  331. interface IWURoxieQueryInfo : extends IConstWURoxieQueryInfo
  332. {
  333. virtual void setQueryInfo(const char * info) = 0;
  334. virtual void setDefaultPackageInfo(const char * pstr, int len) = 0;
  335. virtual void setRoxieClusterName(const char * name) = 0;
  336. virtual void setWuid(const char * wuid) = 0;
  337. };
  338. //! IWUPlugin
  339. interface IConstWUPlugin : extends IInterface
  340. {
  341. virtual IStringVal & getPluginName(IStringVal & str) const = 0;
  342. virtual IStringVal & getPluginVersion(IStringVal & str) const = 0;
  343. virtual bool getPluginThor() const = 0;
  344. virtual bool getPluginHole() const = 0;
  345. };
  346. interface IWUPlugin : extends IConstWUPlugin
  347. {
  348. virtual void setPluginName(const char * str) = 0;
  349. virtual void setPluginVersion(const char * str) = 0;
  350. virtual void setPluginThor(bool flag) = 0;
  351. virtual void setPluginHole(bool flag) = 0;
  352. };
  353. interface IConstWUPluginIterator : extends IScmIterator
  354. {
  355. virtual IConstWUPlugin & query() = 0;
  356. };
  357. interface IConstWULibraryActivityIterator : extends IScmIterator
  358. {
  359. virtual unsigned query() const = 0;
  360. };
  361. interface IConstWULibrary : extends IInterface
  362. {
  363. virtual IStringVal & getName(IStringVal & str) const = 0;
  364. virtual IConstWULibraryActivityIterator * getActivities() const = 0;
  365. };
  366. interface IWULibrary : extends IConstWULibrary
  367. {
  368. virtual void setName(const char * str) = 0;
  369. virtual void addActivity(unsigned id) = 0;
  370. };
  371. interface IConstWULibraryIterator : extends IScmIterator
  372. {
  373. virtual IConstWULibrary & query() = 0;
  374. };
  375. //! IWUActivity
  376. interface IConstWUActivity : extends IInterface
  377. {
  378. virtual __int64 getId() const = 0;
  379. virtual unsigned getKind() const = 0;
  380. virtual IStringVal & getHelper(IStringVal & ret) const = 0;
  381. };
  382. interface IWUActivity : extends IConstWUActivity
  383. {
  384. virtual void setKind(unsigned id) = 0;
  385. virtual void setHelper(const char * str) = 0;
  386. };
  387. interface IConstWUActivityIterator : extends IScmIterator
  388. {
  389. virtual IConstWUActivity & query() = 0;
  390. };
  391. //! IWUException
  392. interface IConstWUException : extends IInterface
  393. {
  394. virtual IStringVal & getExceptionSource(IStringVal & str) const = 0;
  395. virtual IStringVal & getExceptionMessage(IStringVal & str) const = 0;
  396. virtual unsigned getExceptionCode() const = 0;
  397. virtual WUExceptionSeverity getSeverity() const = 0;
  398. virtual IStringVal & getTimeStamp(IStringVal & dt) const = 0;
  399. virtual IStringVal & getExceptionFileName(IStringVal & str) const = 0;
  400. virtual unsigned getExceptionLineNo() const = 0;
  401. virtual unsigned getExceptionColumn() const = 0;
  402. };
  403. interface IWUException : extends IConstWUException
  404. {
  405. virtual void setExceptionSource(const char * str) = 0;
  406. virtual void setExceptionMessage(const char * str) = 0;
  407. virtual void setExceptionCode(unsigned code) = 0;
  408. virtual void setSeverity(WUExceptionSeverity level) = 0;
  409. virtual void setTimeStamp(const char * dt) = 0;
  410. virtual void setExceptionFileName(const char * str) = 0;
  411. virtual void setExceptionLineNo(unsigned r) = 0;
  412. virtual void setExceptionColumn(unsigned c) = 0;
  413. };
  414. interface IConstWUExceptionIterator : extends IScmIterator
  415. {
  416. virtual IConstWUException & query() = 0;
  417. };
  418. //! IClusterInfo
  419. interface IConstWUClusterInfo : extends IInterface
  420. {
  421. virtual IStringVal & getName(IStringVal & str) const = 0;
  422. virtual IStringVal & getScope(IStringVal & str) const = 0;
  423. virtual IStringVal & getThorQueue(IStringVal & str) const = 0;
  424. virtual unsigned getSize() const = 0;
  425. virtual IStringVal & getPlatform(IStringVal & str) const = 0;
  426. virtual IStringVal & getAgentQueue(IStringVal & str) const = 0;
  427. virtual IStringVal & getRoxieQueue(IStringVal & str) const = 0;
  428. virtual IStringVal & getServerQueue(IStringVal & str) const = 0;
  429. virtual IStringVal & getQuerySetName(IStringVal & str) const = 0;
  430. virtual IStringVal & getRoxieProcess(IStringVal & str) const = 0;
  431. virtual const StringArray & getThorProcesses() const = 0;
  432. };
  433. //! IWorkflowItem
  434. enum WFType
  435. {
  436. WFTypeNormal = 0,
  437. WFTypeSuccess = 1,
  438. WFTypeFailure = 2,
  439. WFTypeRecovery = 3,
  440. WFTypeWait = 4,
  441. WFTypeSize = 5
  442. };
  443. enum WFMode
  444. {
  445. WFModeNormal = 0,
  446. WFModeCondition = 1,
  447. WFModeSequential = 2,
  448. WFModeParallel = 3,
  449. WFModePersist = 4,
  450. WFModeBeginWait = 5,
  451. WFModeWait = 6,
  452. WFModeOnce = 7,
  453. WFModeSize = 8
  454. };
  455. enum WFState
  456. {
  457. WFStateNull = 0,
  458. WFStateReqd = 1,
  459. WFStateDone = 2,
  460. WFStateFail = 3,
  461. WFStateSkip = 4,
  462. WFStateWait = 5,
  463. WFStateBlocked = 6,
  464. WFStateSize = 7
  465. };
  466. interface IWorkflowDependencyIterator : extends IScmIterator
  467. {
  468. virtual unsigned query() const = 0;
  469. };
  470. interface IWorkflowEvent : extends IInterface
  471. {
  472. virtual const char * queryName() const = 0;
  473. virtual const char * queryText() const = 0;
  474. virtual bool matches(const char * name, const char * text) const = 0;
  475. };
  476. interface IConstWorkflowItem : extends IInterface
  477. {
  478. virtual unsigned queryWfid() const = 0;
  479. virtual bool isScheduled() const = 0;
  480. virtual bool isScheduledNow() const = 0;
  481. virtual IWorkflowEvent * getScheduleEvent() const = 0;
  482. virtual unsigned querySchedulePriority() const = 0;
  483. virtual bool hasScheduleCount() const = 0;
  484. virtual unsigned queryScheduleCount() const = 0;
  485. virtual IWorkflowDependencyIterator * getDependencies() const = 0;
  486. virtual WFType queryType() const = 0;
  487. virtual WFMode queryMode() const = 0;
  488. virtual unsigned querySuccess() const = 0;
  489. virtual unsigned queryFailure() const = 0;
  490. virtual unsigned queryRecovery() const = 0;
  491. virtual unsigned queryRetriesAllowed() const = 0;
  492. virtual unsigned queryContingencyFor() const = 0;
  493. virtual IStringVal & getPersistName(IStringVal & val) const = 0;
  494. virtual unsigned queryPersistWfid() const = 0;
  495. virtual unsigned queryScheduleCountRemaining() const = 0;
  496. virtual WFState queryState() const = 0;
  497. virtual unsigned queryRetriesRemaining() const = 0;
  498. virtual int queryFailCode() const = 0;
  499. virtual const char * queryFailMessage() const = 0;
  500. virtual const char * queryEventName() const = 0;
  501. virtual const char * queryEventExtra() const = 0;
  502. virtual unsigned queryScheduledWfid() const = 0;
  503. virtual IStringVal & queryCluster(IStringVal & val) const = 0;
  504. };
  505. interface IRuntimeWorkflowItem : extends IConstWorkflowItem
  506. {
  507. virtual void setState(WFState state) = 0;
  508. virtual bool testAndDecRetries() = 0;
  509. virtual bool decAndTestScheduleCountRemaining() = 0;
  510. virtual void setFailInfo(int code, const char * message) = 0;
  511. virtual void reset() = 0;
  512. virtual void setEvent(const char * name, const char * extra) = 0;
  513. virtual void incScheduleCount() = 0;
  514. };
  515. interface IWorkflowItem : extends IRuntimeWorkflowItem
  516. {
  517. virtual void setScheduledNow() = 0;
  518. virtual void setScheduledOn(const char * name, const char * text) = 0;
  519. virtual void setSchedulePriority(unsigned priority) = 0;
  520. virtual void setScheduleCount(unsigned count) = 0;
  521. virtual void addDependency(unsigned wfid) = 0;
  522. virtual void setPersistInfo(const char * name, unsigned wfid) = 0;
  523. virtual void syncRuntimeData(const IConstWorkflowItem & other) = 0;
  524. virtual void setScheduledWfid(unsigned wfid) = 0;
  525. virtual void setCluster(const char * cluster) = 0;
  526. };
  527. interface IConstWorkflowItemIterator : extends IScmIterator
  528. {
  529. virtual IConstWorkflowItem * query() const = 0;
  530. };
  531. interface IRuntimeWorkflowItemIterator : extends IConstWorkflowItemIterator
  532. {
  533. virtual IRuntimeWorkflowItem * get() const = 0;
  534. };
  535. interface IWorkflowItemIterator : extends IConstWorkflowItemIterator
  536. {
  537. virtual IWorkflowItem * get() const = 0;
  538. };
  539. interface IWorkflowItemArray : extends IInterface
  540. {
  541. virtual IRuntimeWorkflowItem & queryWfid(unsigned wfid) = 0;
  542. virtual unsigned count() const = 0;
  543. virtual IRuntimeWorkflowItemIterator * getSequenceIterator() = 0;
  544. virtual void addClone(const IConstWorkflowItem * other) = 0;
  545. virtual bool hasScheduling() const = 0;
  546. };
  547. enum LocalFileUploadType
  548. {
  549. UploadTypeFileSpray = 0,
  550. UploadTypeWUResult = 1,
  551. UploadTypeWUResultCsv = 2,
  552. UploadTypeWUResultXml = 3,
  553. UploadTypeSize = 4
  554. };
  555. interface IConstLocalFileUpload : extends IInterface
  556. {
  557. virtual unsigned queryID() const = 0;
  558. virtual LocalFileUploadType queryType() const = 0;
  559. virtual IStringVal & getSource(IStringVal & ret) const = 0;
  560. virtual IStringVal & getDestination(IStringVal & ret) const = 0;
  561. virtual IStringVal & getEventTag(IStringVal & ret) const = 0;
  562. };
  563. interface IConstLocalFileUploadIterator : extends IScmIterator
  564. {
  565. virtual IConstLocalFileUpload * get() = 0;
  566. };
  567. enum WUSubscribeOptions
  568. {
  569. SubscribeOptionRunningState = 0,
  570. SubscribeOptionAnyState = 1,
  571. SubscribeOptionAbort = 2,
  572. SubscribeOptionProgress = 3,
  573. SubscribeOptionAll = 4,
  574. SubscribeOptionSize = 5
  575. };
  576. interface IWUGraphProgress;
  577. interface IPropertyTree;
  578. enum WUGraphState
  579. {
  580. WUGraphUnknown = 0,
  581. WUGraphComplete = 1,
  582. WUGraphRunning = 2,
  583. WUGraphFailed = 3,
  584. WUGraphPaused = 4
  585. };
  586. enum WUFileKind
  587. {
  588. WUFileStandard = 0,
  589. WUFileTemporary = 1,
  590. WUFileOwned = 2,
  591. WUFileJobOwned = 3
  592. };
  593. typedef unsigned __int64 WUGraphIDType;
  594. typedef unsigned __int64 WUNodeIDType;
  595. interface IConstWUGraphProgress : extends IInterface
  596. {
  597. virtual IPropertyTree * queryProgressTree() = 0;
  598. virtual WUGraphState queryGraphState() = 0;
  599. virtual WUGraphState queryNodeState(WUGraphIDType nodeId) = 0;
  600. virtual IWUGraphProgress * update() = 0;
  601. virtual unsigned queryFormatVersion() = 0;
  602. };
  603. interface IWUGraphProgress : extends IConstWUGraphProgress
  604. {
  605. virtual IPropertyTree & updateEdge(WUGraphIDType nodeId, const char * edgeId) = 0;
  606. virtual IPropertyTree & updateNode(WUGraphIDType nodeId, WUNodeIDType id) = 0;
  607. virtual void setGraphState(WUGraphState state) = 0;
  608. virtual void setNodeState(WUGraphIDType nodeId, WUGraphState state) = 0;
  609. };
  610. interface IConstWUTimeStamp : extends IInterface
  611. {
  612. virtual IStringVal & getApplication(IStringVal & str) const = 0;
  613. virtual IStringVal & getEvent(IStringVal & str) const = 0;
  614. virtual IStringVal & getDate(IStringVal & dt) const = 0;
  615. };
  616. interface IConstWUTimeStampIterator : extends IScmIterator
  617. {
  618. virtual IConstWUTimeStamp & query() = 0;
  619. };
  620. interface IConstWUAppValue : extends IInterface
  621. {
  622. virtual IStringVal & getApplication(IStringVal & str) const = 0;
  623. virtual IStringVal & getName(IStringVal & str) const = 0;
  624. virtual IStringVal & getValue(IStringVal & str) const = 0;
  625. };
  626. interface IConstWUAppValueIterator : extends IScmIterator
  627. {
  628. virtual IConstWUAppValue & query() = 0;
  629. };
  630. //! IWorkUnit
  631. //! Provides high level access to WorkUnit "header" data.
  632. interface IWorkUnit;
  633. interface IUserDescriptor;
  634. interface IStringIterator : extends IScmIterator
  635. {
  636. virtual IStringVal & str(IStringVal & str) = 0;
  637. };
  638. interface IConstWorkUnit : extends IInterface
  639. {
  640. virtual bool aborting() const = 0;
  641. virtual void forceReload() = 0;
  642. virtual WUAction getAction() const = 0;
  643. virtual IStringVal& getActionEx(IStringVal & str) const = 0;
  644. virtual IStringVal & getApplicationValue(const char * application, const char * propname, IStringVal & str) const = 0;
  645. virtual int getApplicationValueInt(const char * application, const char * propname, int defVal) const = 0;
  646. virtual IConstWUAppValueIterator & getApplicationValues() const = 0;
  647. virtual bool hasWorkflow() const = 0;
  648. virtual unsigned queryEventScheduledCount() const = 0;
  649. virtual IPropertyTree * queryWorkflowTree() const = 0;
  650. virtual IConstWorkflowItemIterator * getWorkflowItems() const = 0;
  651. virtual IWorkflowItemArray * getWorkflowClone() const = 0;
  652. virtual IConstLocalFileUploadIterator * getLocalFileUploads() const = 0;
  653. virtual bool requiresLocalFileUpload() const = 0;
  654. virtual bool getIsQueryService() const = 0;
  655. virtual IStringVal & getClusterName(IStringVal & str) const = 0;
  656. virtual unsigned getCombineQueries() const = 0;
  657. virtual WUCompareMode getCompareMode() const = 0;
  658. virtual IStringVal & getCustomerId(IStringVal & str) const = 0;
  659. virtual bool hasDebugValue(const char * propname) const = 0;
  660. virtual IStringVal & getDebugValue(const char * propname, IStringVal & str) const = 0;
  661. virtual int getDebugValueInt(const char * propname, int defVal) const = 0;
  662. virtual __int64 getDebugValueInt64(const char * propname, __int64 defVal) const = 0;
  663. virtual bool getDebugValueBool(const char * propname, bool defVal) const = 0;
  664. virtual IStringIterator & getDebugValues() const = 0;
  665. virtual IStringIterator & getDebugValues(const char * prop) const = 0;
  666. virtual unsigned getExceptionCount() const = 0;
  667. virtual IConstWUExceptionIterator & getExceptions() const = 0;
  668. virtual IConstWUResult * getGlobalByName(const char * name) const = 0;
  669. virtual IConstWUGraphIterator & getGraphs(WUGraphType type) const = 0;
  670. virtual IConstWUGraph * getGraph(const char * name) const = 0;
  671. virtual IConstWUGraphProgress * getGraphProgress(const char * name) const = 0;
  672. virtual IStringVal & getJobName(IStringVal & str) const = 0;
  673. virtual IStringVal & getParentWuid(IStringVal & str) const = 0;
  674. virtual IConstWUPlugin * getPluginByName(const char * name) const = 0;
  675. virtual IConstWUPluginIterator & getPlugins() const = 0;
  676. virtual IConstWULibraryIterator & getLibraries() const = 0;
  677. virtual WUPriorityClass getPriority() const = 0;
  678. virtual int getPriorityLevel() const = 0;
  679. virtual IConstWUQuery * getQuery() const = 0;
  680. virtual bool getRescheduleFlag() const = 0;
  681. virtual IConstWUResult * getResultByName(const char * name) const = 0;
  682. virtual IConstWUResult * getResultBySequence(unsigned seq) const = 0;
  683. virtual unsigned getResultLimit() const = 0;
  684. virtual IConstWUResultIterator & getResults() const = 0;
  685. virtual IConstWUActivityIterator & getActivities() const = 0;
  686. virtual IConstWUActivity * getActivity(__int64 id) const = 0;
  687. virtual IStringVal & getScope(IStringVal & str) const = 0;
  688. virtual IStringVal & getSecurityToken(IStringVal & str) const = 0;
  689. virtual WUState getState() const = 0;
  690. virtual IStringVal & getStateEx(IStringVal & str) const = 0;
  691. virtual __int64 getAgentSession() const = 0;
  692. virtual unsigned getAgentPID() const = 0;
  693. virtual IStringVal & getStateDesc(IStringVal & str) const = 0;
  694. virtual IConstWUResult * getTemporaryByName(const char * name) const = 0;
  695. virtual IConstWUResultIterator & getTemporaries() const = 0;
  696. virtual bool getRunningGraph(IStringVal & graphName, WUGraphIDType & subId) const = 0;
  697. virtual unsigned getTimerCount(const char * timerName, const char * instance) const = 0;
  698. virtual unsigned getTimerDuration(const char * timerName, const char * instance) const = 0;
  699. virtual IStringVal & getTimeStamp(const char * name, const char * instance, IStringVal & str) const = 0;
  700. virtual IConstWUWebServicesInfo * getWebServicesInfo() const = 0;
  701. virtual IConstWURoxieQueryInfo * getRoxieQueryInfo() const = 0;
  702. virtual IStringIterator & getTimers() const = 0;
  703. virtual IConstWUTimeStampIterator & getTimeStamps() const = 0;
  704. virtual IStringVal & getUser(IStringVal & str) const = 0;
  705. virtual IStringVal & getWuScope(IStringVal & str) const = 0;
  706. virtual IConstWUResult * getVariableByName(const char * name) const = 0;
  707. virtual IConstWUResultIterator & getVariables() const = 0;
  708. virtual IStringVal & getWuid(IStringVal & str) const = 0;
  709. virtual bool isProtected() const = 0;
  710. virtual bool isPausing() const = 0;
  711. virtual IWorkUnit & lock() = 0;
  712. virtual bool reload() = 0;
  713. virtual void requestAbort() = 0;
  714. virtual void subscribe(WUSubscribeOptions options) = 0;
  715. virtual unsigned queryFileUsage(const char * filename) const = 0;
  716. virtual unsigned getCodeVersion() const = 0;
  717. virtual void getBuildVersion(IStringVal & buildVersion, IStringVal & eclVersion) const = 0;
  718. virtual bool isBilled() const = 0;
  719. virtual bool getWuDate(unsigned & year, unsigned & month, unsigned & day) = 0;
  720. virtual IPropertyTree * getDiskUsageStats() = 0;
  721. virtual IPropertyTreeIterator & getFileIterator() const = 0;
  722. virtual bool getCloneable() const = 0;
  723. virtual IUserDescriptor * getUserDescriptor() const = 0;
  724. virtual IStringVal & getSnapshot(IStringVal & str) const = 0;
  725. virtual IJlibDateTime & getTimeScheduled(IJlibDateTime & val) const = 0;
  726. virtual IPropertyTreeIterator & getFilesReadIterator() const = 0;
  727. virtual void protect(bool protectMode) = 0;
  728. virtual IStringVal & getAllowedClusters(IStringVal & str) const = 0;
  729. virtual int getPriorityValue() const = 0;
  730. virtual void remoteCheckAccess(IUserDescriptor * user, bool writeaccess) const = 0;
  731. virtual bool getAllowAutoQueueSwitch() const = 0;
  732. virtual IConstWULibrary * getLibraryByName(const char * name) const = 0;
  733. virtual unsigned getGraphCount() const = 0;
  734. virtual unsigned getSourceFileCount() const = 0;
  735. virtual unsigned getResultCount() const = 0;
  736. virtual unsigned getVariableCount() const = 0;
  737. virtual unsigned getTimerCount() const = 0;
  738. virtual unsigned getApplicationValueCount() const = 0;
  739. virtual unsigned getDebugAgentListenerPort() const = 0;
  740. virtual IStringVal & getDebugAgentListenerIP(IStringVal & ip) const = 0;
  741. virtual IStringVal & getXmlParams(IStringVal & params) const = 0;
  742. virtual const IPropertyTree * getXmlParams() const = 0;
  743. virtual unsigned __int64 getHash() const = 0;
  744. };
  745. interface IDistributedFile;
  746. interface IWorkUnit : extends IConstWorkUnit
  747. {
  748. virtual void clearExceptions() = 0;
  749. virtual void commit() = 0;
  750. virtual IWUException * createException() = 0;
  751. virtual void setTimeStamp(const char * name, const char * instance, const char * event) = 0;
  752. virtual void addTimeStamp(const char * name, const char * instance, const char * event) = 0;
  753. virtual void setAction(WUAction action) = 0;
  754. virtual void setApplicationValue(const char * application, const char * propname, const char * value, bool overwrite) = 0;
  755. virtual void setApplicationValueInt(const char * application, const char * propname, int value, bool overwrite) = 0;
  756. virtual void incEventScheduledCount() = 0;
  757. virtual void setIsQueryService(bool cached) = 0;
  758. virtual void setClusterName(const char * value) = 0;
  759. virtual void setCombineQueries(unsigned combine) = 0;
  760. virtual void setCompareMode(WUCompareMode value) = 0;
  761. virtual void setCustomerId(const char * value) = 0;
  762. virtual void setDebugValue(const char * propname, const char * value, bool overwrite) = 0;
  763. virtual void setDebugValueInt(const char * propname, int value, bool overwrite) = 0;
  764. virtual void setJobName(const char * value) = 0;
  765. virtual void setPriority(WUPriorityClass cls) = 0;
  766. virtual void setPriorityLevel(int level) = 0;
  767. virtual void setRescheduleFlag(bool value) = 0;
  768. virtual void setResultLimit(unsigned value) = 0;
  769. virtual void setSecurityToken(const char * value) = 0;
  770. virtual void setState(WUState state) = 0;
  771. virtual void setStateEx(const char * text) = 0;
  772. virtual void setAgentSession(__int64 sessionId) = 0;
  773. virtual void setAgentPID(unsigned pid) = 0;
  774. virtual void setTimerInfo(const char * name, const char * instance, unsigned ms, unsigned count, unsigned max) = 0;
  775. virtual void setTracingValue(const char * propname, const char * value) = 0;
  776. virtual void setTracingValueInt(const char * propname, int value) = 0;
  777. virtual void setUser(const char * value) = 0;
  778. virtual void setWuScope(const char * value) = 0;
  779. virtual void setSnapshot(const char * value) = 0;
  780. virtual IWorkflowItemIterator * updateWorkflowItems() = 0;
  781. virtual void syncRuntimeWorkflow(IWorkflowItemArray * array) = 0;
  782. virtual IWorkflowItem * addWorkflowItem(unsigned wfid, WFType type, WFMode mode, unsigned success, unsigned failure, unsigned recovery, unsigned retriesAllowed, unsigned contingencyFor) = 0;
  783. virtual void resetWorkflow() = 0;
  784. virtual void schedule() = 0;
  785. virtual void deschedule() = 0;
  786. virtual unsigned addLocalFileUpload(LocalFileUploadType type, const char * source, const char * destination, const char * eventTag) = 0;
  787. virtual IWUResult * updateGlobalByName(const char * name) = 0;
  788. virtual IWUGraph * updateGraph(const char * name) = 0;
  789. virtual IWUQuery * updateQuery() = 0;
  790. virtual IWUWebServicesInfo * updateWebServicesInfo(bool create) = 0;
  791. virtual IWURoxieQueryInfo * updateRoxieQueryInfo(const char * wuid, const char * roxieClusterName) = 0;
  792. virtual IWUActivity * updateActivity(__int64 id) = 0;
  793. virtual IWUPlugin * updatePluginByName(const char * name) = 0;
  794. virtual IWULibrary * updateLibraryByName(const char * name) = 0;
  795. virtual IWUResult * updateResultByName(const char * name) = 0;
  796. virtual IWUResult * updateResultBySequence(unsigned seq) = 0;
  797. virtual IWUResult * updateTemporaryByName(const char * name) = 0;
  798. virtual IWUResult * updateVariableByName(const char * name) = 0;
  799. virtual void addFile(const char * fileName, StringArray * clusters, unsigned usageCount, WUFileKind fileKind, const char * graphOwner) = 0;
  800. virtual void releaseFile(const char * fileName) = 0;
  801. virtual void setCodeVersion(unsigned version, const char * buildVersion, const char * eclVersion) = 0;
  802. virtual void setBilled(bool value) = 0;
  803. virtual void deleteTempFiles(const char * graph, bool deleteOwned, bool deleteJobOwned) = 0;
  804. virtual void addDiskUsageStats(__int64 avgNodeUsage, unsigned minNode, __int64 minNodeUsage, unsigned maxNode, __int64 maxNodeUsage, __int64 graphId) = 0;
  805. virtual void setCloneable(bool value) = 0;
  806. virtual void setIsClone(bool value) = 0;
  807. virtual void setTimeScheduled(const IJlibDateTime & val) = 0;
  808. virtual void noteFileRead(IDistributedFile * file) = 0;
  809. virtual void clearGraphProgress() = 0;
  810. virtual void resetBeforeGeneration() = 0;
  811. virtual bool switchThorQueue(const char * newcluster, IQueueSwitcher * qs) = 0;
  812. virtual void setAllowedClusters(const char * value) = 0;
  813. virtual void setAllowAutoQueueSwitch(bool val) = 0;
  814. virtual void setLibraryInformation(const char * name, unsigned interfaceHash, unsigned definitionHash) = 0;
  815. virtual void setDebugAgentListenerPort(unsigned port) = 0;
  816. virtual void setDebugAgentListenerIP(const char * ip) = 0;
  817. virtual void setXmlParams(const char *xml) = 0;
  818. virtual void setXmlParams(IPropertyTree *tree) = 0;
  819. virtual void setHash(unsigned __int64 hash) = 0;
  820. virtual void setResultInt(const char * name, unsigned sequence, __int64 val) = 0;
  821. virtual void setResultUInt(const char * name, unsigned sequence, unsigned __int64 val) = 0;
  822. virtual void setResultReal(const char *name, unsigned sequence, double val) = 0;
  823. virtual void setResultVarString(const char * stepname, unsigned sequence, const char *val) = 0;
  824. virtual void setResultVarUnicode(const char * stepname, unsigned sequence, UChar const *val) = 0;
  825. virtual void setResultString(const char * stepname, unsigned sequence, int len, const char *val) = 0;
  826. virtual void setResultData(const char * stepname, unsigned sequence, int len, const void *val) = 0;
  827. // virtual void doSetResultString(type_t type, const char *name, unsigned sequence, int len, const char *val) = 0;
  828. virtual void setResultRaw(const char * name, unsigned sequence, int len, const void *val) = 0;
  829. virtual void setResultSet(const char * name, unsigned sequence, bool isAll, size32_t len, const void *val, ISetToXmlTransformer *) = 0;
  830. virtual void setResultUnicode(const char * name, unsigned sequence, int len, UChar const * val) = 0;
  831. virtual void setResultBool(const char *name, unsigned sequence, bool val) = 0;
  832. virtual void setResultDecimal(const char *name, unsigned sequence, int len, int precision, bool isSigned, const void *val) = 0;
  833. virtual void setResultDataset(const char * name, unsigned sequence, size32_t len, const void *val, unsigned numRows, bool extend) = 0;
  834. };
  835. interface IConstWorkUnitIterator : extends IScmIterator
  836. {
  837. virtual IConstWorkUnit & query() = 0;
  838. };
  839. //! IWUTimers
  840. interface IWUTimers : extends IInterface
  841. {
  842. virtual void setTrigger(const IJlibDateTime & dt) = 0;
  843. virtual IJlibDateTime & getTrigger(IJlibDateTime & dt) const = 0;
  844. virtual void setExpiration(const IJlibDateTime & dt) = 0;
  845. virtual IJlibDateTime & getExpiration(IJlibDateTime & dt) const = 0;
  846. virtual void setSubmission(const IJlibDateTime & dt) = 0;
  847. virtual IJlibDateTime & getSubmission(IJlibDateTime & dt) const = 0;
  848. };
  849. //! IWUFactory
  850. //! Used to instantiate WorkUnit components.
  851. class MemoryBuffer; // should define an SCMinterface for it
  852. interface ILocalWorkUnit : extends IWorkUnit
  853. {
  854. virtual void serialize(MemoryBuffer & tgt) = 0;
  855. virtual void deserialize(MemoryBuffer & src) = 0;
  856. virtual void loadXML(const char * xml) = 0;
  857. virtual IConstWorkUnit * unlock() = 0;
  858. };
  859. enum WUSortField
  860. {
  861. WUSFuser = 1,
  862. WUSFcluster = 2,
  863. WUSFjob = 3,
  864. WUSFstate = 4,
  865. WUSFpriority = 5,
  866. WUSFwuid = 6,
  867. WUSFwuidhigh = 7,
  868. WUSFfileread = 8,
  869. WUSFroxiecluster = 9,
  870. WUSFprotected = 10,
  871. WUSFbatchloginid = 11,
  872. WUSFbatchcustomername = 12,
  873. WUSFbatchpriority = 13,
  874. WUSFbatchinputreccount = 14,
  875. WUSFbatchtimeuploaded = 15,
  876. WUSFbatchtimecompleted = 16,
  877. WUSFbatchmachine = 17,
  878. WUSFbatchinputfile = 18,
  879. WUSFbatchoutputfile = 19,
  880. WUSFtotalthortime = 20,
  881. WUSFterm = 0,
  882. WUSFreverse = 256,
  883. WUSFnocase = 512,
  884. WUSFnumeric = 1024,
  885. WUSFwild = 2048
  886. };
  887. interface IWorkUnitFactory : extends IInterface
  888. {
  889. virtual IWorkUnit * createWorkUnit(const char * parentWuid, const char * app, const char * user) = 0;
  890. virtual bool deleteWorkUnit(const char * wuid) = 0;
  891. virtual IConstWorkUnit * openWorkUnit(const char * wuid, bool lock) = 0;
  892. virtual IConstWorkUnitIterator * getWorkUnitsByOwner(const char * owner) = 0;
  893. virtual IWorkUnit * updateWorkUnit(const char * wuid) = 0;
  894. virtual int setTracingLevel(int newlevel) = 0;
  895. virtual IWorkUnit * createNamedWorkUnit(const char * wuid, const char * parentWuid, const char * app, const char * user) = 0;
  896. virtual IConstWorkUnitIterator * getWorkUnitsByState(WUState state) = 0;
  897. virtual IConstWorkUnitIterator * getWorkUnitsByECL(const char * ecl) = 0;
  898. virtual IConstWorkUnitIterator * getWorkUnitsByCluster(const char * cluster) = 0;
  899. virtual IConstWorkUnitIterator * getWorkUnitsByXPath(const char * xpath) = 0;
  900. virtual IConstWorkUnitIterator * getWorkUnitsSorted(WUSortField * sortorder, WUSortField * filters, const void * filterbuf, unsigned startoffset, unsigned maxnum, const char * queryowner, __int64 * cachehint) = 0;
  901. virtual unsigned numWorkUnits() = 0;
  902. virtual unsigned numWorkUnitsFiltered(WUSortField * filters, const void * filterbuf) = 0;
  903. virtual void descheduleAllWorkUnits() = 0;
  904. virtual bool deleteWorkUnitEx(const char * wuid) = 0;
  905. };
  906. interface IWorkflowScheduleConnection : extends IInterface
  907. {
  908. virtual void lock() = 0;
  909. virtual void unlock() = 0;
  910. virtual void setActive() = 0;
  911. virtual void resetActive() = 0;
  912. virtual bool queryActive() = 0;
  913. virtual bool pull(IWorkflowItemArray * workflow) = 0;
  914. virtual void push(const char * name, const char * text) = 0;
  915. };
  916. interface IExtendedWUInterface
  917. {
  918. virtual unsigned calculateHash(unsigned prevHash) = 0;
  919. virtual void copyWorkUnit(IConstWorkUnit *cached) = 0;
  920. virtual bool archiveWorkUnit(const char *base,bool del,bool ignoredllerrors,bool deleteOwned) = 0;
  921. virtual void packWorkUnit(bool pack=true) = 0;
  922. };
  923. struct WorkunitUpdate : public Owned<IWorkUnit>
  924. {
  925. public:
  926. WorkunitUpdate(IWorkUnit *wu) : Owned<IWorkUnit>(wu) { }
  927. ~WorkunitUpdate() { if (get()) get()->commit(); }
  928. };
  929. extern WORKUNIT_API IStringVal &getEclCCServerQueueNames(IStringVal &ret, const char *process);
  930. extern WORKUNIT_API IStringVal &getEclServerQueueNames(IStringVal &ret, const char *process);
  931. extern WORKUNIT_API IStringVal &getEclSchedulerQueueNames(IStringVal &ret, const char *process);
  932. extern WORKUNIT_API IStringVal &getAgentQueueNames(IStringVal &ret, const char *process);
  933. extern WORKUNIT_API IStringVal &getRoxieQueueNames(IStringVal &ret, const char *process);
  934. extern WORKUNIT_API IStringVal &getThorQueueNames(IStringVal &ret, const char *process);
  935. extern WORKUNIT_API IStringIterator *getTargetClusters(const char *processType, const char *processName);
  936. extern WORKUNIT_API IConstWUClusterInfo* getTargetClusterInfo(const char *clustname);
  937. extern WORKUNIT_API bool getWorkUnitCreateTime(const char *wuid,CDateTime &time); // based on WUID
  938. extern WORKUNIT_API bool restoreWorkUnit(const char *base,const char *wuid);
  939. extern WORKUNIT_API void clientShutdownWorkUnit();
  940. extern WORKUNIT_API IExtendedWUInterface * queryExtendedWU(IWorkUnit * wu);
  941. extern WORKUNIT_API unsigned getEnvironmentThorClusterNames(StringArray &clusternames, StringArray &groupnames, StringArray &qnames);
  942. extern WORKUNIT_API StringBuffer &formatGraphTimerLabel(StringBuffer &str, const char *graphName, unsigned subGraphNum=0, unsigned __int64 subId=0);
  943. extern WORKUNIT_API bool parseGraphTimerLabel(const char *label, StringBuffer &graphName, unsigned &subGraphNum, unsigned __int64 &subId);
  944. extern WORKUNIT_API void addExceptionToWorkunit(IWorkUnit * wu, WUExceptionSeverity severity, const char * source, unsigned code, const char * text, const char * filename, unsigned lineno, unsigned column);
  945. extern WORKUNIT_API IWorkUnitFactory * getWorkUnitFactory();
  946. extern WORKUNIT_API IWorkUnitFactory * getSecWorkUnitFactory(ISecManager &secmgr, ISecUser &secuser);
  947. extern WORKUNIT_API IWorkUnitFactory * getWorkUnitFactory(ISecManager *secmgr, ISecUser *secuser);
  948. extern WORKUNIT_API ILocalWorkUnit* createLocalWorkUnit();
  949. extern WORKUNIT_API IStringVal& exportWorkUnitToXML(const IConstWorkUnit *wu, IStringVal &str);
  950. extern WORKUNIT_API StringBuffer &exportWorkUnitToXML(const IConstWorkUnit *wu, StringBuffer &str);
  951. extern WORKUNIT_API void exportWorkUnitToXMLFile(const IConstWorkUnit *wu, const char * filename, unsigned extraXmlFlags);
  952. extern WORKUNIT_API void submitWorkUnit(const char *wuid, const char *username, const char *password);
  953. extern WORKUNIT_API void abortWorkUnit(const char *wuid);
  954. extern WORKUNIT_API void secSubmitWorkUnit(const char *wuid, ISecManager &secmgr, ISecUser &secuser);
  955. extern WORKUNIT_API void secAbortWorkUnit(const char *wuid, ISecManager &secmgr, ISecUser &secuser);
  956. extern WORKUNIT_API IWUResult * updateWorkUnitResult(IWorkUnit * w, const char *name, unsigned sequence);
  957. extern WORKUNIT_API IConstWUResult * getWorkUnitResult(IConstWorkUnit * w, const char *name, unsigned sequence);
  958. //returns a state code. WUStateUnknown == timeout
  959. extern WORKUNIT_API WUState waitForWorkUnitToComplete(const char * wuid, int timeout = -1, bool returnOnWaitState = false);
  960. extern WORKUNIT_API bool waitForWorkUnitToCompile(const char * wuid, int timeout = -1);
  961. extern WORKUNIT_API WUState secWaitForWorkUnitToComplete(const char * wuid, ISecManager &secmgr, ISecUser &secuser, int timeout = -1, bool returnOnWaitState = false);
  962. extern WORKUNIT_API bool secWaitForWorkUnitToCompile(const char * wuid, ISecManager &secmgr, ISecUser &secuser, int timeout = -1);
  963. extern WORKUNIT_API bool secDebugWorkunit(const char * wuid, ISecManager &secmgr, ISecUser &secuser, const char *command, StringBuffer &response);
  964. extern WORKUNIT_API IStringVal& createToken(const char *wuid, const char *user, const char *password, IStringVal &str);
  965. // This latter is temporary - tokens will be replaced by something more secure
  966. extern WORKUNIT_API void extractToken(const char *token, const char *wuid, IStringVal &user, IStringVal &password);
  967. extern WORKUNIT_API WUState getWorkUnitState(const char* state);
  968. extern WORKUNIT_API IWorkflowScheduleConnection * getWorkflowScheduleConnection(char const * wuid);
  969. extern WORKUNIT_API bool isArchiveQuery(const char * text);
  970. extern WORKUNIT_API IPropertyTree * resolveDefinitionInArchive(IPropertyTree * archive, const char * path);
  971. inline bool isLibrary(IConstWorkUnit * wu) { return wu->getApplicationValueInt("LibraryModule", "interfaceHash", 0) != 0; }
  972. extern WORKUNIT_API bool looksLikeAWuid(const char * wuid);
  973. enum WUQueryActivationOptions
  974. {
  975. DO_NOT_ACTIVATE = 0,
  976. MAKE_ACTIVATE= 1,
  977. ACTIVATE_SUSPEND_PREVIOUS = 2,
  978. ACTIVATE_DELETE_PREVIOUS = 3,
  979. DO_NOT_ACTIVATE_LOAD_DATA_ONLY = 4,
  980. MAKE_ACTIVATE_LOAD_DATA_ONLY = 5
  981. };
  982. extern WORKUNIT_API IPropertyTree * addNamedQuery(IPropertyTree * queryRegistry, const char * name, const char * wuid, const char * dll); // result not linked
  983. extern WORKUNIT_API void removeNamedQuery(IPropertyTree * queryRegistry, const char * id);
  984. extern WORKUNIT_API void removeWuidFromNamedQueries(IPropertyTree * queryRegistry, const char * wuid);
  985. extern WORKUNIT_API void removeDllFromNamedQueries(IPropertyTree * queryRegistry, const char * dll);
  986. extern WORKUNIT_API void removeAliasesFromNamedQuery(IPropertyTree * queryRegistry, const char * id);
  987. extern WORKUNIT_API void setQueryAlias(IPropertyTree * queryRegistry, const char * name, const char * value);
  988. extern WORKUNIT_API IPropertyTree * resolveQueryAlias(IPropertyTree * queryRegistry, const char * alias);
  989. extern WORKUNIT_API IPropertyTree * getQueryRegistry(const char * wsEclId, bool readonly);
  990. extern WORKUNIT_API IPropertyTree * getQueryRegistryRoot();
  991. extern WORKUNIT_API void setQueryCommentForNamedQuery(IPropertyTree * queryRegistry, const char *id, const char *queryComment);
  992. extern WORKUNIT_API void setQuerySuspendedState(IPropertyTree * queryRegistry, const char * name, bool suspend);
  993. extern WORKUNIT_API IPropertyTree * addNamedPackageSet(IPropertyTree * packageRegistry, const char * name, IPropertyTree *packageInfo, bool overWrite); // result not linked
  994. extern WORKUNIT_API void removeNamedPackage(IPropertyTree * packageRegistry, const char * id);
  995. extern WORKUNIT_API IPropertyTree * getPackageSetRegistry(const char * wsEclId, bool readonly);
  996. extern WORKUNIT_API void addQueryToQuerySet(IWorkUnit *workunit, const char *querySetName, const char *queryName, IPropertyTree *packageInfo, WUQueryActivationOptions activateOption, StringBuffer &newQueryId);
  997. extern WORKUNIT_API bool removeQuerySetAlias(const char *querySetName, const char *alias);
  998. extern WORKUNIT_API void addQuerySetAlias(const char *querySetName, const char *alias, const char *id);
  999. extern WORKUNIT_API void setSuspendQuerySetQuery(const char *querySetName, const char *id, bool suspend);
  1000. extern WORKUNIT_API void deleteQuerySetQuery(const char *querySetName, const char *id);
  1001. extern WORKUNIT_API const char *queryIdFromQuerySetWuid(const char *querySetName, const char *wuid, IStringVal &id);
  1002. extern WORKUNIT_API void removeQuerySetAliasesFromNamedQuery(const char *querySetName, const char * id);
  1003. extern WORKUNIT_API void setQueryCommentForNamedQuery(const char *querySetName, const char *id, const char *comment);
  1004. extern WORKUNIT_API void associateLocalFile(IWUQuery * query, WUFileType type, const char * name, const char * description, unsigned crc);
  1005. extern WORKUNIT_API const char *getTargetClusterComponentName(const char *clustname, const char *processType, StringBuffer &name);
  1006. #if 0
  1007. void WORKUNIT_API testWorkflow();
  1008. #endif
  1009. #endif