Esempio n. 1
0
        public AbstractWonkaOrchestrator(T poCommand, StringBuilder psRules, OrchestrationInitData poOrchInitData, string psGroveId = "", uint pnGroveIndex = 0)
        {
            msRulesContents = psRules;

            Init(poCommand, poOrchInitData);

            moInitData = poOrchInitData;

            moRulesEngine = new WonkaBreRulesEngine(msRulesContents,
                                                    poOrchInitData.BlockchainDataSources,
                                                    poOrchInitData.BlockchainCustomOpFunctions,
                                                    poOrchInitData.AttributesMetadataSource,
                                                    true);

            if (!String.IsNullOrEmpty(psGroveId) && (pnGroveIndex > 0))
            {
                moRulesEngine.GroveId    = psGroveId;
                moRulesEngine.GroveIndex = pnGroveIndex;
            }

            if (poOrchInitData.DefaultBlockchainDataSource != null)
            {
                moRulesEngine.DefaultSource = poOrchInitData.DefaultBlockchainDataSource.SourceId;
            }

            SerializeRulesEngineToBlockchain();
        }
        private void Init(T poCommand, OrchestrationInitData poOrchInitData)
        {
            WonkaRefEnvironment WonkaRefEnv = null;

            if (poOrchInitData == null)
            {
                throw new WonkaOrchestratorException("ERROR!  Initialization for orchestration has not been provided.");
            }

            if (poOrchInitData.AttributesMetadataSource == null)
            {
                throw new WonkaOrchestratorException("ERROR!  Initialization data for metadata retrieval has not been provided.");
            }

            if ((poOrchInitData.BlockchainDataSources == null) || (poOrchInitData.BlockchainDataSources.Count == 0))
            {
                if (poOrchInitData.DefaultBlockchainDataSource != null)
                {
                    Dictionary <string, WonkaBizSource> BlockchainDataSources = new Dictionary <string, WonkaBizSource>();

                    Dictionary <PropertyInfo, WonkaRefAttr> PropMap = poCommand.GetPropertyMap();

                    // Set Commentary Attributes
                    foreach (PropertyInfo TmpProperty in PropMap.Keys)
                    {
                        WonkaRefAttr TempAttr = PropMap[TmpProperty];

                        BlockchainDataSources[TempAttr.AttrName] = poOrchInitData.DefaultBlockchainDataSource;
                    }

                    poOrchInitData.BlockchainDataSources = BlockchainDataSources;
                }
            }

            if ((poOrchInitData.BlockchainDataSources == null) || (poOrchInitData.BlockchainDataSources.Count == 0))
            {
                throw new WonkaOrchestratorException("ERROR!  Initialization for data retrieval metadata has not been provided.");
            }

            try
            {
                WonkaRefEnv = WonkaRefEnvironment.GetInstance();
            }
            catch (Exception ex)
            {
                WonkaRefEnv = WonkaRefEnvironment.CreateInstance(false, poOrchInitData.AttributesMetadataSource);

                // NOTE: Should/could contract be deployed here along with metadata (i.e., Attributes)?
            }
        }
Esempio n. 3
0
 public SalesTransactionGenerator(SalesTrxCreateCommand command, StringBuilder psRulesContents, OrchestrationInitData poInitData) :
     base(command, psRulesContents, poInitData, "NewSaleGroup", 1)
 {
     // NOTE: Not necessary here
     // base.SerializeRulesEngineToBlockchain();
 }
        public WonkaOrchestratorProxy(T poCommand, OrchestrationInitData poOrchInitData)
        {
            Init(poCommand, poOrchInitData);

            moInitData = poOrchInitData;
        }