public void InitAct(SysInstance ins, opis specification) { instanse = ins; env = ins.GetEnvirinmentForModel(); modelSpec = specification; if (logopis == null) { logopis = new opis(name); } }
public void InitAct(SysInstance ins, opis specification) { //modelSpec = new opis(); instanse = ins; env = ins.GetEnvirinmentForModel(); //thisins = env.W("thisins"); //spec = env.W("spec"); //o = env.W("currCont"); //sharedVal = thisins["sharedVariablesContext"]; modelSpec = specification; //if (CTX ==null) //CTX = new contex(spec.V(ModelNotion.canHandleParentRange)); //CTX.Handle(o); if (logopis == null) { logopis = new opis(name); } }
//public static readonly string SUBJ = "SUBJ"; public override void Process(opis message) { opis instLoc = thisins; opis datacontext = instLoc[SysInstance.svcIdx][SysInstance.ldcIdx].W(); int idxInstr = modelSpec.getPartitionIdx(instructions, false); if (idxInstr != -1) { opis currSpec = modelSpec; opis instr = modelSpec[idxInstr].Duplicate(); instanse.ExecActionModel(instr, instr); //opis messagerole = instr; modelSpec = currSpec; if (modelSpec.OptionActive(message_as_parameter_for_instructions)) { instanse.ExecActionResponceModelsList(instr, message); } else { if (modelSpec.isHere(for_X_times) || modelSpec.isHere(While)) { if (modelSpec.isHere(While)) { opis chk = new opis(); chk.PartitionName = "chk"; chk.Vset("do", ""); opis tim = modelSpec[While].Duplicate(); SysInstance locInst = instanse; locInst.ExecActionResponceModelsList(tim, chk); while (chk.V("do") == "y") { locInst.ExecActionModelsList(instr.Duplicate()); chk.Vset("do", ""); locInst.ExecActionResponceModelsList(tim, chk); } } else { SysInstance locInst = instanse; opis tim = modelSpec[for_X_times].Duplicate(); locInst.ExecActionModel(tim, tim); for (int i = 0; i < tim.intVal; i++) { locInst.ExecActionModelsList(instr.Duplicate()); } } } else { instanse.ExecActionModelsList(instr); } } } else { opis instr = message.Duplicate(); instanse.ExecActionModelsList(instr); } instLoc[SysInstance.svcIdx][SysInstance.ldcIdx].Wrap(datacontext); }