using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using MBS.Web; using MBS.Web.Controls; using Mocha.Core; using Mocha.OMS; using Mocha.OMS.OMSComponents; using Mocha.Web.Controls; using UniversalEditor.ObjectModels.PropertyList; namespace Mocha.Web { /* * Instance Security brainstorming: * * An Instance's security is defined by its Class. * For example: * A Business may only be visible to people within that Business, but also * (in the case of the City of Orlando) to City officials administering * the application. * * Security Policy * .for Instance* * .has Boolean Attribute `Visible` * .has Boolean Attribute `Editable` * .has Security Group* * * The Security Policy is applied to all associated Instances and Security * Groups. To determine if a particular User is authorized to see an Instance: * * Instance@is visible by User parm (GRA)*P [rsmb]: * * Returns Attribute : Visible * * Loop on Instance Set: Instance.has Security Policy* * Get Attribute: Security Policy@get Visible to User parm (BA) *P[ramb]: * * if `Set`.`is Set A intersects with Set B`(User.has Security Group, Security Policy.has Security Group): return true * * I have [Security A] You want Security B * Security X Security C * Security W [Security A] * * else: return false * * */ public partial class InstancePage : System.Web.UI.Page { private const string PROMPT_VALUE_PREFIX = "ctl00$ctl00$aspcContent$aspcContent$SummaryComponent_0$0_"; protected override void OnInit(EventArgs e) { base.OnInit(e); pnlDashboardEmpty.Visible = true; pnlDashboardContent.Visible = false; object oCid = RouteData.Values["ClassID"]; object oIid = RouteData.Values["InstanceID"]; object rCid = RouteData.Values["RelatedClassID"]; object rIid = RouteData.Values["RelatedInstanceID"]; string paramzb64 = (string)RouteData.Values["Parameters"]; Oms oms = this.GetOMS(); if (oms == null) return; Page.Title = this.FormatPageTitle("Welcome"); if (oCid == null && oIid == null) { Instance instUser = null; string userTitle = "New User"; object oToken = this.GetTenantedVariable("LoginToken"); if (oToken != null) { LoginTokenInfo token = (LoginTokenInfo)oToken; instUser = token.UserInstance; userTitle = oms.GetTTC(token.UserInstance, oms.GetInstance(KnownRelationshipGuids.User__has_display_name__Translatable_Text_Constant)); } Master.PageTitle = String.Format("Welcome, {0}!", userTitle); // display dashboard if (instUser != null) { Instance instPage = oms.GetRelatedInstance(instUser, KnownRelationshipGuids.User__has_default__Page); if (instPage != null) { string pageTitle = oms.GetTTC(instPage, oms.GetInstance(KnownRelationshipGuids.Page__has_title__Translation), null); if (pageTitle == null) { pageTitle = String.Format("Welcome, {0}!", userTitle); } Master.PageTitle = pageTitle; PageBuilder pb = new PageBuilder((SessionContext)this.GetTenantedVariable("SessionContext")); pb.RenderPage(instPage, pnlDashboardContent); pnlDashboardEmpty.Visible = false; pnlDashboardContent.Visible = true; Master.PageFooterVisible = false; } } return; } int cid = -1, iid = -1; if (!(Int32.TryParse(oCid.ToString(), out cid) && Int32.TryParse(oIid.ToString(), out iid))) { label.Text = "parse failed"; return; } if (Request.Url.Segments.Length > 2 && Request.Url.Segments[2] == "inst/") { Response.Clear(); Response.ContentType = "application/json"; if (!this.HasTenantedVariable("LoginToken") || DateTime.Now > ((LoginTokenInfo)this.GetTenantedVariable("LoginToken")).Expires) { Response.Status = "401 Unauthorized"; Response.Write("{ \"type\": \"error\",\"code\": 401, \"title\": \"Unauthorized\", \"description\": \"You are not logged in\" }"); Response.End(); return; } // send the request to the OMS Instance p_inst = oms.GetInstance(new InstanceKey(cid, iid)); if (p_inst == null) { Response.Status = "404 Not Found"; Response.Write("{ \"type\": \"error\", \"code\": 404, \"title\": \"Not Found\", \"description\": \"The requested resource was not found\" }"); Response.End(); return; } OmsContext v_context = new OmsContext(); Instance rel_task = null; IOmsResponse v_resp = oms.ExecuteInstance(v_context, p_inst, rel_task); Response.Write(v_resp.ToJSONString()); Response.End(); return; } Instance inst = oms.GetInstance(new InstanceKey(cid, iid)); Instance instModule = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Instance__for__Module); Instance instRel = null; if (rCid != null && rIid != null) { int rcid = -1, riid = -1; if (!(Int32.TryParse(rCid.ToString(), out rcid) && Int32.TryParse(rIid.ToString(), out riid))) { label.Text = "parse failed"; return; } instRel = oms.GetInstance(new InstanceKey(rcid, riid)); } Instance instClass = oms.GetParentClass(inst); OmsContext context = new OmsContext(); context.GlobalVariables.Add(new OmsVariable(oms.GetInstance(KnownInstanceGuids.PromptValueClasses.This_Instance), inst)); context.GlobalVariables.Add(new OmsVariable(oms.GetInstance(KnownInstanceGuids.PromptValueClasses.Related_Instance), instRel)); context.CallStack.Push(new OmsCallStack(oms.GetInstanceKey(inst), new OmsVariable[] { new OmsVariable(oms.GetInstance(KnownInstanceGuids.PromptValueClasses.This_Instance), inst) })); if (inst != null) { if (inst.GlobalIdentifier == KnownInstanceGuids.Tasks.OpenDefinitionInCodeEditor) { Response.Redirect(String.Format("http://localhost:63320/node?ref={0}&tenant={1}", instRel.GlobalIdentifier.ToString(), oms.TenantName)); return; } else if (inst.GlobalIdentifier == new Guid("{c1aafaf7-835b-4bc4-9fd8-cc57055cc3d1}")) { if (instRel != null) { ibTestMethodBinding.InstanceReferences.Add(oms.GetInstanceKey(instRel)); Instance[] instParms = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Method__has__Method_Parameter); for (int i = 0; i < instParms.Length; i++) { FormViewItemInstance fvi1 = new FormViewItemInstance(); fvi1.Title = oms.GetInstanceText(instParms[i]); // fvi1.ValidClassIDs.Add(oms.GetInstanceKey(oms.GetInstance(KnownInstanceGuids.Classes.Class))); fvTestMethodBindingParameters.Items.Add(fvi1); } pnlDashboard.Visible = false; pnlTestMethodBinding.Visible = true; if (this.IsPostBack) { object value = oms.ExecuteMethod(instRel, context, new OmsVariable[] { new OmsVariable(oms.GetInstance(KnownInstanceGuids.PromptValueClasses.This_Instance), inst) }); Instance instAttrClass = null; if (value is bool) { instAttrClass = oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute); } else if (value is DateTime) { instAttrClass = oms.GetInstance(KnownInstanceGuids.Classes.DateAttribute); } else if (value is string) { instAttrClass = oms.GetInstance(KnownInstanceGuids.Classes.TextAttribute); } else if (value is decimal) { instAttrClass = oms.GetInstance(KnownInstanceGuids.Classes.NumericAttribute); } else if (value is Instance) { instAttrClass = oms.GetParentClass((Instance)value); } else if (value is Instance[]) { instAttrClass = oms.GetParentClass(((Instance[])value)[0]); } else { instAttrClass = null; } fvTestMethodBinding.Items["fviTestMethodBindingID"].Value = instRel.GlobalIdentifier.ToString("B"); if (instAttrClass != null) { ((FormViewItemInstance)fvTestMethodBinding.Items["fviTestMethodBindingReturnType"]).SelectedInstances.Add(oms.GetInstanceKey(instAttrClass)); } pnlTestMethodBindingReturned.Visible = true; if (value is Instance[] || value is Instance) { FormViewItemInstance fvii = new FormViewItemInstance() { Title = "Value" }; List keyz = new List(); if (value is Instance) { fvii.SelectedInstances.Add(oms.GetInstanceKey((Instance)value)); } else if (value is Instance[]) { for (int i = 0; i < ((Instance[])value).Length; i++) { fvii.SelectedInstances.Add(oms.GetInstanceKey(((Instance[])value)[i])); } } fvTestMethodBinding.Items.Add(fvii); } else { fvTestMethodBinding.Items.Add(new FormViewItemText() { Title = "Value", Value = value?.ToString() }); } } return; } } } string taskTitle = null; if (inst == null) { taskTitle = "not found"; return; } else { taskTitle = oms.GetInstanceText(inst); } label.Text = taskTitle; Page.Title = this.FormatPageTitle(taskTitle); pnlTask.Visible = true; pnlDashboard.Visible = false; pnlDashboardContent.Visible = false; if (instClass.GlobalIdentifier == KnownInstanceGuids.Classes.Class) { Master.PageTitle = "View Class"; Master.PageSubtitleInstance = oms.GetInstanceKey(inst); pnlTask.Visible = false; pnlClass.Visible = true; fvStructure.Items["fvStructure_Name"].Value = oms.GetInstanceText(inst); fvStructure.Items["fvStructure_GlobalIdentifier"].Value = inst.GlobalIdentifier.ToString("B"); if (instModule != null) { ((FormViewItemInstance)fvStructure.Items["fvStructure_Module"]).SelectedInstances.Add(oms.GetInstanceKey(instModule)); } Instance[] instAttrs = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Class__has__Attribute); for (int i = 0; i < instAttrs.Length; i++) { // attributes ListViewItem lvi = new ListViewItem(); ListViewItemColumnInstance lvc = new ListViewItemColumnInstance(); lvc.ColumnID = "lvcAttribute"; lvc.InstanceIDs.Add(oms.GetInstanceKey(instAttrs[i])); lvi.Columns.Add(lvc); lvc = new ListViewItemColumnInstance(); lvc.ColumnID = "lvcAttributeType"; lvc.InstanceIDs.Add(oms.GetInstanceKey(oms.GetParentClass(instAttrs[i]))); lvi.Columns.Add(lvc); lvAttributes.Items.Add(lvi); ListViewColumn lvcAttribute = new ListViewColumn() { Title = oms.GetInstanceText(instAttrs[i]), ID = String.Format("lvcAttribute{0}", i) }; lvInstances.Columns.Add(lvcAttribute); } Instance[] instRelationships = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Class__has__Relationship); for (int i = 0; i < instRelationships.Length; i++) { ListViewItem lvi = new ListViewItem(); ListViewItemColumnInstance lvic1 = new ListViewItemColumnInstance() { ColumnID = "lvcRelationship" }; lvic1.InstanceIDs.Add(oms.GetInstanceKey(instRelationships[i])); lvi.Columns.Add(lvic1); lvRelationships.Items.Add(lvi); } Instance[] instSuperclasses = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Class__has_super__Class); for (int i = 0; i < instSuperclasses.Length; i++) { if (instSuperclasses[i] != null) { ((FormViewItemInstance)fvInheritance.Items["fvInheritance_Superclasses"]).SelectedInstances.Add(oms.GetInstanceKey(instSuperclasses[i])); } } Instance[] instSubclasses = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Class__has_sub__Class); for (int i = 0; i < instSubclasses.Length; i++) { ((FormViewItemInstance)fvInheritance.Items["fvInheritance_Subclasses"]).SelectedInstances.Add(oms.GetInstanceKey(instSubclasses[i])); } Instance[] insts = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Class__has__Instance); for (int i = 0; i < insts.Length; i++) { ListViewItem lvi = new ListViewItem(); ListViewItemColumnInstance lvc = new ListViewItemColumnInstance(); lvc.ColumnID = "lvcInstance"; lvc.InstanceIDs.Add(oms.GetInstanceKey(insts[i])); lvi.Columns.Add(lvc); for (int j = 0; j < instAttrs.Length; j++) { lvi.Columns.Add(new ListViewItemColumn() { ColumnID = String.Format("lvcAttribute{0}", j), Value = oms.GetAttributeValue(insts[i], instAttrs[j])?.ToString() }); } lvInstances.Items.Add(lvi); } } else if (oms.IsClassSubclassOf(instClass, KnownInstanceGuids.Classes.Method) /* instClass.GlobalIdentifier == KnownInstanceGuids.Classes.BuildAttributeMethod || instClass.GlobalIdentifier == KnownInstanceGuids.Classes.GetAttributeMethod || instClass.GlobalIdentifier == KnownInstanceGuids.Classes.GetSpecificInstancesMethod || instClass.GlobalIdentifier == KnownInstanceGuids.Classes.GetReferencedAttributeMethod || instClass.GlobalIdentifier == KnownInstanceGuids.Classes.GetReferencedInstanceSetMethod */ ) { pnlTask.Visible = false; pnlMethod.Visible = true; if (instModule != null) { ((FormViewItemInstance)fvMethodDefinition.Items["fviModule"]).SelectedInstances.Add(oms.GetInstanceKey(instModule)); } if (instClass.GlobalIdentifier == KnownInstanceGuids.MethodClasses.GetReferencedAttributeMethod) { // SAC - Conditional Select Attribute Method pnlMethodImplementationGRA.Visible = true; } else if (instClass.GlobalIdentifier == KnownInstanceGuids.MethodClasses.ConditionalSelectAttributeMethod) { // SAC - Conditional Select Attribute Method pnlMethodImplementationSAC.Visible = true; Instance[] instCases = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Conditional_Method__has__Conditional_Method_Case); foreach (Instance instCase in instCases) { Instance instExecutableReturningAttribute = oms.GetRelatedInstance(instCase, KnownRelationshipGuids.Conditional_Select_Attribute_Case__invokes__Executable_returning_Attribute); } } Master.PageTitle = String.Format("View {0}", oms.GetInstanceText(instClass)); Master.PageSubtitle = oms.GetInstanceText(inst); Master.PageSubtitleInstance = oms.GetInstanceKey(inst); Instance instMethod_for_Class = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Method__for__Class); ((FormViewItemInstance)fvMethodDefinition.Items["fviForClass"]).SelectedInstances.Add(oms.GetInstanceKey(instMethod_for_Class)); fvMethodDefinition.Items["fviVerb"].Value = oms.GetAttributeValue(inst, KnownAttributeGuids.Text.Verb)?.ToString(); fvMethodDefinition.Items["fviName"].Value = oms.GetAttributeValue(inst, KnownAttributeGuids.Text.Name)?.ToString(); // fvMethodDefinition.Items["fviAccess"].Value = oms.GetAttributeValue(inst, KnownAttributeGuids.Text.Verb)?.ToString(); // Instance instMethod_for_Module = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Method__for__Module); // ((FormViewItemInstance)fvMethodDefinition.Items["fviModule"]).SelectedInstances.Add(oms.GetInstanceKey(instMethod_for_Module)); Instance[] instMethodParms = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Method__has__Method_Parameter); for (int i = 0; i < instMethodParms.Length; i++) { bool required = false, nullAllowed = false; required = oms.GetAttributeValue(instMethodParms[i], KnownAttributeGuids.Boolean.Required); nullAllowed = oms.GetAttributeValue(instMethodParms[i], KnownAttributeGuids.Boolean.Null); if (required && nullAllowed) { ((FormViewItemInstance)fvMethodParms.Items["fviRequiredParmsNullAllowed"]).SelectedInstances.Add(oms.GetInstanceKey(instMethodParms[i])); } else if (required) { ((FormViewItemInstance)fvMethodParms.Items["fviRequiredParmsNotNull"]).SelectedInstances.Add(oms.GetInstanceKey(instMethodParms[i])); } else { ((FormViewItemInstance)fvMethodParms.Items["fviOptionalParms"]).SelectedInstances.Add(oms.GetInstanceKey(instMethodParms[i])); } } Instance instReturnAttribute = null; instReturnAttribute = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Method__returns__Attribute); if (instReturnAttribute == null) { instReturnAttribute = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Get_Attribute_Method__has__Attribute); } if (instReturnAttribute != null) { (fvMethodReturn.Items["fviReturnAttribute"] as FormViewItemInstance).SelectedInstances.Add(oms.GetInstanceKey(instReturnAttribute)); } } else if (oms.IsClassSubclassOf(instClass, KnownInstanceGuids.Classes.MethodBinding)) { pnlTask.Visible = false; pnlMethodBinding.Visible = true; Master.PageTitle = String.Format("View {0}", oms.GetInstanceText(instClass)); Master.PageSubtitleInstance = oms.GetInstanceKey(inst); Instance instExecutesMethod = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Method_Binding__for__Method); ((FormViewItemInstance)fvMethodBindingDefinition.Items["fviMethodBindingExecutesMethod"]).SelectedInstances.Add(oms.GetInstanceKey(instExecutesMethod)); Instance[] instMethodParms = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Method_Binding__has__Parameter_Assignment); for (int i = 0; i < instMethodParms.Length; i++) { ListViewItem lvi = new ListViewItem(); Instance instAssignsFrom = oms.GetRelatedInstance(instMethodParms[i], KnownRelationshipGuids.Parameter_Assignment__assigns_from__Method_Binding); Instance instAssignsTo = oms.GetRelatedInstance(instMethodParms[i], KnownRelationshipGuids.Parameter_Assignment__assigns_to__Parameter); // FIXME: the loop requires these to be in the same order as defined on the ListView, this should NOT be a requirement ListViewItemColumnInstance lvicAssignsTo = new ListViewItemColumnInstance() { ColumnID = "colMethodBindingParmAssignsTo" }; lvicAssignsTo.InstanceIDs.Add(oms.GetInstanceKey(instAssignsTo)); lvi.Columns.Add(lvicAssignsTo); ListViewItemColumnInstance lvicAssignsFrom = new ListViewItemColumnInstance() { ColumnID = "colMethodBindingParmAssignsFrom" }; lvicAssignsFrom.InstanceIDs.Add(oms.GetInstanceKey(instAssignsFrom)); lvi.Columns.Add(lvicAssignsFrom); lvMethodBindingParameters.Items.Add(lvi); } return; } else if (instClass.GlobalIdentifier == KnownInstanceGuids.Classes.ElementContent) { pnlTask.Visible = false; pnlElementContent.Visible = true; Master.PageTitle = String.Format("View {0}", oms.GetInstanceText(instClass)); Master.PageSubtitleInstance = oms.GetInstanceKey(inst); Instance instElement = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Element_Content__for__Element); InstanceKey ikElement = oms.GetInstanceKey(instElement); (fvElementContent.Items["fvElementContent_ForElement"] as FormViewItemInstance).SelectedInstances.Add(ikElement); Instance instInstance = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Element_Content__has__Instance); if (instInstance != null) { InstanceKey ikInstance = oms.GetInstanceKey(instInstance); (fvElementContent.Items["fvElementContent_DefaultDataType"] as FormViewItemInstance).SelectedInstances.Add(ikInstance); (fvElementContent.Items["fvElementContent_DataTypeOverride"] as FormViewItemInstance).SelectedInstances.Add(ikInstance); } Instance[] instValidations = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Element_Content__has__Validation); foreach (Instance instValidation in instValidations) { Instance instValidationClassification = oms.GetRelatedInstance(instValidation, KnownRelationshipGuids.Validation__has__Validation_Classification); ListViewItemColumnInstance lvicTrueConditions = new ListViewItemColumnInstance() { ColumnID = "lvcElementContentDerivedValidationsTrueConditions" }; Instance[] trueConditions = oms.GetRelatedInstances(instValidation, KnownRelationshipGuids.Validation__has_true_condition__Executable); foreach (Instance trueCondition in trueConditions) { lvicTrueConditions.InstanceIDs.Add(oms.GetInstanceKey(trueCondition)); } ListViewItemColumnInstance lvicFalseConditions = new ListViewItemColumnInstance() { ColumnID = "lvcElementContentDerivedValidationsFalseConditions" }; Instance[] falseConditions = oms.GetRelatedInstances(instValidation, KnownRelationshipGuids.Validation__has_false_condition__Executable); foreach (Instance falseCondition in falseConditions) { lvicFalseConditions.InstanceIDs.Add(oms.GetInstanceKey(falseCondition)); } lvElementContentDerivedValidations.Items.Add(new ListViewItem(new ListViewItemColumn[] { new ListViewItemColumn() { ColumnID = "lvcElementContentDerivedValidationsValidation" }, new ListViewItemColumnInstance() { ColumnID = "lvcElementContentDerivedValidationsValidationClassification", InstanceIDs = new List(new InstanceKey[] { oms.GetInstanceKey(instValidationClassification) })}, lvicTrueConditions, lvicFalseConditions, new ListViewItemColumn() { ColumnID="lvcElementContentDerivedValidationsUseAnyCondition", Value = ""}, new ListViewItemColumn() { ColumnID="lvcElementContentDerivedValidationsOnlyOnSubmit", Value = (oms.GetAttributeValue(instValidation, KnownAttributeGuids.Boolean.ValidateOnlyOnSubmit) ? "Yes" : String.Empty)}, new ListViewItemColumnInstance() { ColumnID = "lvcElementContentDerivedValidationsErrorWordBucket", InstanceIDs = new List(new InstanceKey[] { oms.GetInstanceKey(oms.GetTranslation(instValidation, KnownRelationshipGuids.Validation__has_failure_message__Translation)) }) } })); } } if (IsPostBack) { // fill in the prompt values from the posted back page foreach (string key in Request.Form) { if (key.StartsWith(PROMPT_VALUE_PREFIX)) { string qiid = key.Substring(PROMPT_VALUE_PREFIX.Length); string value = Request.Form[key]; if (qiid.Contains("_")) { int index = qiid.IndexOf("_"); string type = qiid.Substring(index); if (type == "Hidden") { } else { continue; } qiid = qiid.Substring(0, index); } context.GlobalVariables.Add(new OmsVariable(oms.GetInstance(InstanceKey.Parse(qiid)), value)); } } } context.IsPostback = this.IsPostBack; context.RelatedInstance = instRel; IOmsResponse resp = oms.ExecuteInstance(context, inst, null); if (resp != null) { Page.Title = this.FormatPageTitle(resp.Title); this.RegisterScript("~/Scripts/Task.js"); Master.PageTitleInstance = oms.GetInstanceKey(inst); // Master.PageTitle = resp.Title; if (resp.DescriptionInstance != InstanceKey.Empty) { Master.PageSubtitleInstance = resp.DescriptionInstance; } else { Master.PageSubtitle = resp.Description; } PageBuilder pb = new PageBuilder((SessionContext)this.GetTenantedVariable("SessionContext")); foreach (OMSComponent comp in resp.Components) { Control ctl = pb.RenderOMSComponent(comp); ctl.ID = comp.Name; if (ctl != null) pnlTask.Controls.Add(ctl); } if (paramzb64 != null) { string paramz = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(paramzb64)); PropertyListObjectModel plom = new PropertyListObjectModel(); UniversalEditor.DataFormats.PropertyList.JavaScriptObjectNotation.JSONDataFormat json = new UniversalEditor.DataFormats.PropertyList.JavaScriptObjectNotation.JSONDataFormat(); UniversalEditor.Document.Load(plom, json, new UniversalEditor.Accessors.StringAccessor(paramz)); for (int i = 0; i < plom.Items.Count; i++) { string val = (string)((plom.Items[i] as Group).Items[1] as Property).Value; (pnlTask.Controls[1] as FormView).Items[i].Value = val; } } else { if (IsPostBack) { if (pnlTask.Controls[1] is FormView) { if ((pnlTask.Controls[1] as FormView).Items.Count > 0) { foreach (string key in Request.Form) { if (key.StartsWith(PROMPT_VALUE_PREFIX)) { string qiid = key.Substring(PROMPT_VALUE_PREFIX.Length); string fvid = String.Format("SummaryComponent_0$0_{0}", qiid); (pnlTask.Controls[1] as FormView).Items[fvid].Value = Request.Form[key]; } } Instance[] instMethodCalls = oms.GetRelatedInstances(inst, KnownRelationshipGuids.Task__executes__Method_Call); // start calling methods associated with this Task foreach (Instance instMethodCall in instMethodCalls) { oms.ExecuteInstance(context, instMethodCall); } } } } } } } /* protected override void Render(HtmlTextWriter writer) { // if (otask == null) return; writer.Write(""); writer.Write(""); writer.Write(""); writer.Write(""); writer.Write(""); writer.Write(""); writer.Write(""); writer.Write("
 
"); writer.Write("
 
"); writer.Write("
"); // page content goes here writer.Write("

View Instance " + oname + "

"); writer.Write("
"); writer.Write("
 
"); writer.Write(""); writer.Write(""); writer.Flush(); } */ } }