AMcoder - javascript, python, java, html, php, sql

տվյալների փոխանակում աշխատանքային հոսքի գործողությունների միջև

Ես ունեմ հատուկ գործողությունների ցուցակ (գրված է կոդով, C#), որտեղ յուրաքանչյուրը բխում է NativeActivity-ից, այժմ ես ավելացնում եմ այս բոլոր գործողությունները հաջորդականության մեջ՝ foreach հանգույցի օգնությամբ: Հիմա հարցն այն է, թե ինչպես պետք է վարվեմ, եթե պետք է ինչ-որ արժեք ստանալ գործունեությունից և այն փոխանցել այլ գործունեության:

Ասենք, Activity1-ը տողի հատկության արժեքը սահմանում է «որոշ ֆայլի անուն» (թույլ է տալիս պատկերի ֆայլի ուղին) և դրա հիման վրա դրա կողքին գտնվող գործունեությունը, որը երբևէ ավելացվել է հաջորդականության մեջ for հանգույցի օգնությամբ, այն ընդունում է որպես մուտքագրում: շրջել այդ պատկերը:

Ֆայլը ստանալու տրամաբանությունը 3-ն է Activity1-ի Կատարման մեթոդում և նույնն է պատկերը շրջելու համար Execute-ի մեթոդի Act2-ում:

նախապես շնորհակալություն


  • Այս հարցը իմաստ չունի։ Եթե ​​դուք բավականաչափ գիտեք NativeActivity-ից տարածվող գործունեություն ստեղծելու համար, դուք պետք է կարողանաք պարզել, թե ինչպես են աշխատում արգումենտները, փոփոխականները և նույնիսկ աշխատանքային հոսքի ընդլայնումները մուտք/ելք: 13.09.2011
  • Հեյ Ուիլ, խոսքը խելքի մասին չէ, ես այստեղ խանգարում եմ, դրա համար էլ հարցը տվեցի, քո խոսքերով դա կարող է անիմաստ լինել, բայց ինձ համար ես կարող եմ ինչ-որ բան բաց թողնել: Եթե դուք գիտեք դրա համար խելամիտ պատասխանը, տեղեկացրեք ինձ, գուցե դա օգտակար լինի ինձ համար: ձեր օգնությունը կարող է բառեր ավելացնել իմ մտքերին: 13.09.2011
  • Այնուհետև ակտիվության 1-ի արգումենտը կապեք աշխատանքային հոսքի փոփոխականին, այնուհետև կապեք ակտիվության 2-ի անարգումենտը այդ նույն փոփոխականին: 13.09.2011
  • Ինձ հենց դա է պետք, տեսեք կամք, գուցե զարմացնեք, բայց ես սկսեցի աշխատել WF-ի վրա ընդամենը 2 շաբաթ առաջ, դուք հասա այս մակարդակին, բայց գիտեք, որ երբեմն հիմնական բաներն անտեսվում են: Այսպիսով, եթե դուք կարող եք ինձ համառոտ ներկայացնել միայն օրինակով, ես ուրախ կլինեմ: 13.09.2011

Պատասխանները:


1
        var workflow = new Sequence();           
        Variable<Dictionary<string,object>> variable = new Variable<Dictionary<string,object>>
        {
            Name = "SharedData"
        };
        workflow.Variables.Add(variable);
        foreach (MyCustomActivity activity in mAddedActivities)
        {                
            workflow.Activities.Add(activity);                                      
        }

        WorkflowInvoker invoker = new WorkflowInvoker(workflow);
        invoker.Invoke();

Սա այն է, ինչ ես արեցի իրական իրականացման համար, որևէ հակափաստարկ/արգումենտի կարիք չկա, «Համօգտագործվող տվյալներ» փոփոխականը բավականաչափ կարող է պահել տվյալները գործողությունների ընթացքում:

Այժմ վերացված կոդի գործունեության «Կատարել» մեթոդի յուրաքանչյուր գործունեության մակարդակում դուք պետք է օգտագործեք կոդի այս հատվածը՝ այս աշխատանքային հոսքի փոփոխականի՝ «SharedData»-ի մուտքագրման/առբերման համար:

        WorkflowDataContext dataContext = context.DataContext;
        PropertyDescriptorCollection propertyDescriptorCollection = dataContext.GetProperties();
        foreach (PropertyDescriptor propertyDesc in propertyDescriptorCollection)
        {
            if (propertyDesc.Name == "SharedData")
            {
                myData = propertyDesc.GetValue(dataContext) as Dictionary<string, object>;
                if (myData == null) //this to check if its the initial(1st) activity.
                    myData = new Dictionary<string, object>();
                //I'm adding here an additional value into the workflow variable 
                //its having signature same as that of workflow variable
                //dictionary's key as what it is and value as an object
                //which user can cast to what actually one wants.
                myData.Add("islogonrequired", Boolean.TrueString);


                //here I'm fetching some value, as i entered it in my previous activity. 
                string filePath = myData["filepath"].ToString();
                propertyDesc.SetValue(dataContext, myData);
                break;
            }
        }

Հուսով եմ, որ սա կարող է օգնել ուրիշներին: Շնորհակալություն բոլորին օգնության և աջակցության համար:

16.09.2011

2
        var workflow = new Sequence();
        //Variable<string> v = new Variable<string>
        //{
        //    Name = "str" 
        //};

        //workflow.Variables.Add(v);

        Dictionary<string, object> abc = new Dictionary<string, object>();
        abc.Add("thedata", "myValue");

        foreach (MyCustomActivity activity in mAddedActivities)
        {
            if (activity.ActivityResult == null)
                activity.ActivityResult = new Dictionary<string, object>();
            activity.ActivityResult = abc;                
            workflow.Activities.Add(activity);

            //new Assign<string>
            //           {
            //               To = v,
            //               Value = activity.ActivityResult["thedata"].ToString()
            //           };                

        }
        WorkflowInvoker invoker = new WorkflowInvoker(workflow);
        invoker.Invoke();

սա այն է, ինչ ես արեցի, և ինչ-որ կերպ այն աշխատում է: Վստահ չեմ, քանի որ դրա ճիշտ մոտեցումն է, առաջարկեք ինձ ինչ-որ բան Will!!, այստեղ ActivityResult-ը սեփականություն է, որը համօգտագործվում է տարբեր ավելացված գործողությունների մեջ՝ ինչ-որ ինտերֆեյսի անդամի միջոցով:

13.09.2011
  • @will:: խնդրում եմ ստուգեք և տեղեկացրեք ինձ: 14.09.2011
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..