Exemplo n.º 1
0
        protected ActionResult MappingAction(SysChannel channel)
        {
            MethodInfo actionMethod;
            var        controller = ViewController.GetWebController(channel, Request.Path, out actionMethod);

            if (controller == null || actionMethod == null)
            {
                return(Content("no controller"));
            }

            SysOutput output = (actionMethod.Invoke(controller, null) as SysChannel).Out;

            //TODO: Headers
            foreach (var head in output.Headers)
            {
                Request.Headers[head.Key] = head.Value;
            }
            //TODO: Cookie
            foreach (var store in output.Stores)
            {
                Response.Cookies.Set(new HttpCookie(store.Key, store.Value));
            }
            //TODO: output.Content is *  :填写自己的条件
            if (output.Content is JsonActionResult)
            {
                return(Json(((JsonActionResult)output.Content).Model));
            }

            return(Content("no controller"));
        }
Exemplo n.º 2
0
        private List <SysEvent> parseSequence(EventContext[] any)
        {
            List <SysEvent> sequence = new List <SysEvent>();

            foreach (EventContext i in any)
            {
                if (i.process() != null)
                {
                    // event is process such as proc()
                    SysProcess proc = (SysProcess)VisitProcess(i.process());
                    sequence.Add(proc);
                }
                else if (i.channel() != null)
                {
                    // event is channel input or output
                    SysChannel channel = null;
                    if ((i.channel().channelOutput() != null) &&
                        (i.channel().channelOutput().ID() != null))
                    {
                        channel = new SysChannel(i.channel().ID().GetText(), SysChannel.Type.Output);
                        channel.Parameters.Add(i.channel().channelOutput().ID().GetText());
                    }
                    else if ((i.channel().channelInput() != null) &&
                             (i.channel().channelInput().ID() != null))
                    {
                        channel = new SysChannel(i.channel().ID().GetText(), SysChannel.Type.Input);
                        channel.Parameters.Add(i.channel().channelInput().ID().GetText());
                    }
                    sequence.Add(channel);
                }
            }
            return(sequence);
        }
Exemplo n.º 3
0
        public ActionResult Freamwork()
        {
            SysChannel channel = new SysChannel();

            channel.In.Parameters = Request.Params;
            return(MappingAction(channel));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取控制器
        /// </summary>
        /// <param name="channel"></param>
        /// <param name="controllerType"></param>
        /// <returns></returns>
        private static object GetController(SysChannel channel, Type controllerType)
        {
            object controller = null;

            if (controllerType != null)
            {
                controller = Activator.CreateInstance(controllerType, channel);
            }
            return(controller);
        }
Exemplo n.º 5
0
        public ActionResult AddOrEdit(int?id)
        {
            SysChannel entity = null;

            ViewBag.Title = "添加频道";
            if (id.HasValue)
            {
                entity        = _syschannelService.Get(id.Value);
                ViewBag.Title = "修改频道";
            }
            entity = entity ?? new SysChannel
            {
                Name = string.Empty
            };
            return(View(entity));
        }
Exemplo n.º 6
0
        public Resp_Binary Create(SysChannel model)
        {
            if (sysChannelRepository.GetByWhere(t => t.Name == model.Name).FirstOrDefault().IsNotNull())
            {
                return new Resp_Binary {
                           message = "行政通道名已存在"
                }
            }
            ;
            sysChannelRepository.Insert(model);
            if (sysChannelRepository.UnitOfWork.Commite() > 0)
            {
                return(Resp_Binary.Add_Sucess);
            }

            return(Resp_Binary.Add_Failed);
        }
Exemplo n.º 7
0
        public static object GetController(SysChannel channel, string requestPath, string controllerParam, out MethodInfo actionMethod)
        {
            object controller;
            var    mappingParams = requestPath.Split('/');
            string moduleParam   = "Default";
            Type   controllerType;

            if (mappingParams.Length > 2)
            {
                moduleParam     = mappingParams[1];
                controllerParam = mappingParams[2];
            }
            //获取控制器类型
            controllerType = GetControllerType(moduleParam);
            //获取控制器方法
            actionMethod = GetMethodInfo(controllerType, controllerParam);
            //获取控制器
            controller = GetController(channel, controllerType);

            return(controller);
        }
Exemplo n.º 8
0
        public ActionResult Save(SysChannel entity)
        {
            var result = new CommonResult {
                Success = false, Message = "添加或修改失败,请联系管理员"
            };

            if (ModelState.IsValid)
            {
                if (0 == entity.Id)
                {
                    if (!base._syschannelService.IsExist(entity.Name))
                    {
                        base._syschannelService.Save(entity);
                        result.Success = true;
                        result.Message = "添加成功";
                    }
                    else
                    {
                        result.Message = "频道名称已存在,请重新输入";
                    }
                }
                else
                {
                    var model = base._syschannelService.Get(entity.Id);
                    model.Name        = entity.Name;
                    model.OrderNo     = entity.OrderNo;
                    model.IsEnabled   = entity.IsEnabled;
                    model.Keyword     = entity.Keyword;
                    model.Url         = entity.Url;
                    model.Description = entity.Description;
                    base._syschannelService.Update(model);
                    result.Success = true;
                    result.Message = "修改成功";
                }
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            return(View("AddOrEdit", entity));
        }
Exemplo n.º 9
0
        public Resp_Binary Modify(SysChannel model)
        {
            var entity = sysChannelRepository.GetById(model.ID);

            if (entity == null)
            {
                return new Resp_Binary {
                           message = "行政通道不存在"
                }
            }
            ;

            entity.Name        = model.Name;
            entity.Description = model.Description;

            sysChannelRepository.Update(entity);
            if (sysChannelRepository.UnitOfWork.Commite() > 0)
            {
                return(Resp_Binary.Modify_Sucess);
            }

            return(Resp_Binary.Modify_Failed);
        }
Exemplo n.º 10
0
 public Resp_Binary Modify(SysChannel model) => sysChannelService.Modify(model);
Exemplo n.º 11
0
 public Resp_Binary Create(SysChannel model) => sysChannelService.Create(model);
Exemplo n.º 12
0
        public static object GetWebController(SysChannel channel, string requestPath, out MethodInfo actionMethod)
        {
            string controllerParam = string.Empty;

            return(GetController(channel, requestPath, controllerParam, out actionMethod));
        }
Exemplo n.º 13
0
        protected override void Seed(SKContext context)
        {
            base.Seed(context);
            Stopwatch sw = new Stopwatch();

            sw.Start();

            #region sysuser
            var _sysUser = new SysUser
            {
                Name       = "superAdmin",
                TrueName   = "系统管理员",
                Pwd        = "12345678".MD5(),
                Sex        = "未知",
                State      = 1,
                Position   = "系统管理员",
                Creater    = 1,
                CreateTime = DateTime.Now,
                Remark     = "系统初始化管理员,不允许删除"
            };

            var _sysRole = new SysRole
            {
                Name        = "超级管理员",
                Description = "管理系统",
                Creater     = 1,
                CreateTime  = DateTime.Now
            };


            var channel_1 = new SysChannel {
                Name = "SCT"
            };
            var channel_2 = new SysChannel {
                Name = "CIC"
            };
            var channel_3 = new SysChannel {
                Name = "CCT"
            };
            var channel_4 = new SysChannel {
                Name = "MCT"
            };
            var channel_5 = new SysChannel {
                Name = "CMBL"
            };
            var channel_6 = new SysChannel {
                Name = "SKP"
            };
            var channel_7 = new SysChannel {
                Name = "赤湾港务"
            };

            _sysUser.SysChannels.Add(channel_1);
            _sysUser.SysChannels.Add(channel_2);
            _sysUser.SysChannels.Add(channel_3);
            _sysUser.SysChannels.Add(channel_4);
            _sysUser.SysChannels.Add(channel_5);
            _sysUser.SysChannels.Add(channel_6);
            _sysUser.SysChannels.Add(channel_7);

            _sysUser.SysRoles.Add(_sysRole);

            context.SysUsers.Add(_sysUser);
            #endregion

            #region sysModule

            var _sysModule1 = new SysModule
            {
                Name        = "系统管理",
                EnglishName = "System Management",
                Url         = "sys",
                Sort        = 1,
                Remark      = "",
                Enable      = 1,
                CreateTime  = DateTime.Now,
                Creater     = 1
            };   //系统管理菜单


            var user_manager = new SysModule
            {
                Name        = "用户管理",
                EnglishName = "User Manage",
                Url         = "SysUser",
                Sort        = 1,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };  //用户管理

            user_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "分配角色", KeyCode = "Allot", IsValid = 1
            });
            user_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "分配行政通道", KeyCode = "AllotChannel", IsValid = 1
            });
            user_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "创建", KeyCode = "Create", IsValid = 1
            });
            user_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            user_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Edit", IsValid = 1
            });
            user_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            user_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "保存", KeyCode = "Save", IsValid = 1
            });

            _sysModule1.SubSysModules.Add(user_manager);


            var channel_manager = new SysModule
            {
                Name        = "行政通道管理",
                EnglishName = "Channel Manage",
                Url         = "SysChannel",
                Sort        = 2,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            channel_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "分配用户", KeyCode = "Allot", IsValid = 1
            });
            channel_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "创建", KeyCode = "Create", IsValid = 1
            });
            channel_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            channel_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Edit", IsValid = 1
            });
            channel_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            channel_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "保存", KeyCode = "Save", IsValid = 1
            });

            _sysModule1.SubSysModules.Add(channel_manager);

            var role_manage = new SysModule
            {
                Name        = "角色组管理",
                EnglishName = "Rike Manage",
                Url         = "SysRole",
                Sort        = 3,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            }; //角色管理

            role_manage.SysModuleOperates.Add(new SysModuleOperate {
                Name = "分配用户", KeyCode = "Allot", IsValid = 1
            });
            role_manage.SysModuleOperates.Add(new SysModuleOperate {
                Name = "创建", KeyCode = "Create", IsValid = 1
            });
            role_manage.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            role_manage.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Edit", IsValid = 1
            });
            role_manage.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            role_manage.SysModuleOperates.Add(new SysModuleOperate {
                Name = "保存", KeyCode = "Save", IsValid = 1
            });

            _sysModule1.SubSysModules.Add(role_manage);

            var module_setting = new SysModule
            {
                Name        = "模块维护",
                EnglishName = "Module Setting",
                Url         = "SysModule",
                Sort        = 4,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            }; //模块管理

            module_setting.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });

            _sysModule1.SubSysModules.Add(module_setting);

            var role_auth = new SysModule
            {
                Name        = "角色权限设置",
                EnglishName = "Role Authorize",
                Url         = "SysRight",
                Sort        = 5,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            role_auth.SysModuleOperates.Add(new SysModuleOperate {
                Name = "保存", KeyCode = "Save", IsValid = 1
            });
            _sysModule1.SubSysModules.Add(role_auth);

            var query_user_auth = new SysModule
            {
                Name        = "用户权限查询",
                EnglishName = "Query User Authority",
                Url         = "SysGetRightByUser",
                Sort        = 7,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };
            query_user_auth.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            _sysModule1.SubSysModules.Add(query_user_auth);


            var query_role_auth = new SysModule
            {
                Name        = "角色权限查询",
                EnglishName = "Query Role Authority",
                Url         = "SysGetRightByRole",
                Sort        = 8,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };
            query_role_auth.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            _sysModule1.SubSysModules.Add(query_role_auth);

            var sys_error_log = new SysModule
            {
                Name        = "系统异常日志",
                EnglishName = "Query SysErrorLog",
                Url         = "SysError",
                Sort        = 9,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };
            sys_error_log.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            _sysModule1.SubSysModules.Add(sys_error_log);

            var sysModule2 = new SysModule
            {
                Name        = "备案管理",
                EnglishName = "Record Manage",
                Url         = "RecordManage",
                Sort        = 2,
                Remark      = "",
                Enable      = 1,
                CreateTime  = DateTime.Now,
                Creater     = 1
            };

            var record_manager = new SysModule
            {
                Name        = "备案管理",
                EnglishName = "Record Manage",
                Url         = "RecordManage",
                Sort        = 10,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };
            record_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            record_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "添加", KeyCode = "Add", IsValid = 1
            });
            record_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "批量导入", KeyCode = "export", IsValid = 1
            });
            record_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            record_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Edit", IsValid = 1
            });

            sysModule2.SubSysModules.Add(record_manager);


            var recordM_Grade = new SysModule
            {
                Name        = "备案分级",
                EnglishName = "Record Manage Grade",
                Url         = "RecordManageGrade",
                Sort        = 1,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            recordM_Grade.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            recordM_Grade.SysModuleOperates.Add(new SysModuleOperate {
                Name = "添加", KeyCode = "Add", IsValid = 1
            });
            recordM_Grade.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            recordM_Grade.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Edit", IsValid = 1
            });

            sysModule2.SubSysModules.Add(recordM_Grade);

            var carColor = new SysModule
            {
                Name        = "车身颜色设置",
                EnglishName = "CarColor",
                Url         = "CarColor",
                Sort        = 2,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            carColor.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            carColor.SysModuleOperates.Add(new SysModuleOperate {
                Name = "添加", KeyCode = "Add", IsValid = 1
            });
            carColor.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            carColor.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Edit", IsValid = 1
            });

            var carType = new SysModule
            {
                Name        = "车型设置",
                EnglishName = "carType set",
                Url         = "CarType",
                Sort        = 3,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            carType.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            carType.SysModuleOperates.Add(new SysModuleOperate {
                Name = "添加", KeyCode = "Add", IsValid = 1
            });
            carType.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            carType.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Edit", IsValid = 1
            });

            sysModule2.SubSysModules.Add(recordM_Grade);
            sysModule2.SubSysModules.Add(carColor);
            sysModule2.SubSysModules.Add(carType);


            var sysModule3 = new SysModule
            {
                Name        = "布控管理",
                EnglishName = "Layout Manage",
                Url         = "Layout",
                Sort        = 3,
                Remark      = "",
                Enable      = 1,
                CreateTime  = DateTime.Now,
                Creater     = 1
            };


            var layout_manager = new SysModule
            {
                Name        = "布控管理",
                EnglishName = "Layout Manage",
                Url         = "Layout",
                Sort        = 1,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            layout_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            layout_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "编辑", KeyCode = "Update", IsValid = 1
            });
            layout_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "删除", KeyCode = "Delete", IsValid = 1
            });
            layout_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "添加", KeyCode = "Add", IsValid = 1
            });
            layout_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "批量导入", KeyCode = "Export", IsValid = 1
            });
            layout_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "随机取样", KeyCode = "Random", IsValid = 1
            });
            layout_manager.SysModuleOperates.Add(new SysModuleOperate {
                Name = "有效设置", KeyCode = "Valid_Set", IsValid = 1
            });

            sysModule3.SubSysModules.Add(layout_manager);

            //var layout_manager_query = new SysModule
            //{
            //    Name = "布控查询",
            //    EnglishName = "Layout Manage Query",
            //    Url = "Layout",
            //    Sort = 2,
            //    Enable = 1,
            //    Creater = 1,
            //    CreateTime = DateTime.Now,
            //    IsLast = 1
            //};
            //layout_manager_query.SysModuleOperates.Add(new SysModuleOperate { Name = "查询", KeyCode = "Query", IsValid = 1 });

            //sysModule3.SubSysModules.Add(layout_manager_query);


            var sysModule4 = new SysModule
            {
                Name        = "信息采集管理",
                EnglishName = "Capture Manage",
                Url         = "Capture",
                Sort        = 4,
                Remark      = "",
                Enable      = 1,
                CreateTime  = DateTime.Now,
                Creater     = 1
            };

            var capture_query = new SysModule
            {
                Name        = "信息采集",
                EnglishName = "Capture Query",
                Url         = "Capture",
                Sort        = 2,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            capture_query.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            capture_query.SysModuleOperates.Add(new SysModuleOperate {
                Name = "备案", KeyCode = "Record", IsValid = 1
            });
            capture_query.SysModuleOperates.Add(new SysModuleOperate {
                Name = "手动报警", KeyCode = "Alarm", IsValid = 1
            });

            sysModule4.SubSysModules.Add(capture_query);


            var sysModule5 = new SysModule
            {
                Name        = "报警检查管理",
                EnglishName = "Alarm Manage",
                Url         = "Alarm",
                Sort        = 5,
                Remark      = "",
                Enable      = 1,
                CreateTime  = DateTime.Now,
                Creater     = 1
            };


            var alarm = new SysModule
            {
                Name        = "报警检查",
                EnglishName = "Alarm",
                Url         = "Alarm",
                Sort        = 1,
                Enable      = 1,
                Creater     = 1,
                CreateTime  = DateTime.Now,
                IsLast      = 1
            };

            alarm.SysModuleOperates.Add(new SysModuleOperate {
                Name = "查询", KeyCode = "Query", IsValid = 1
            });
            alarm.SysModuleOperates.Add(new SysModuleOperate {
                Name = "修改", KeyCode = "Modify", IsValid = 1
            });

            sysModule5.SubSysModules.Add(alarm);
            #endregion

            context.SysModules.Add(_sysModule1);
            context.SysModules.Add(sysModule2);
            context.SysModules.Add(sysModule3);
            context.SysModules.Add(sysModule4);
            context.SysModules.Add(sysModule5);


            context.CarTypes.Add(new CarType {
                Name = "小型车"
            });
            context.CarTypes.Add(new CarType {
                Name = "大型车"
            });
            context.CarTypes.Add(new CarType {
                Name = "超大型车"
            });


            context.CarColors.Add(new CarColor {
                Name = "白"
            });
            context.CarColors.Add(new CarColor {
                Name = "黑"
            });
            context.CarColors.Add(new CarColor {
                Name = "灰"
            });
            context.CarColors.Add(new CarColor {
                Name = "银"
            });
            context.CarColors.Add(new CarColor {
                Name = "蓝"
            });
            context.CarColors.Add(new CarColor {
                Name = "红"
            });
            context.CarColors.Add(new CarColor {
                Name = "黄"
            });
            context.CarColors.Add(new CarColor {
                Name = "粉"
            });
            context.CarColors.Add(new CarColor {
                Name = "绿"
            });
            context.CarColors.Add(new CarColor {
                Name = "棕"
            });

            context.Commite();
            sw.Stop();

            var s1 = sw.Elapsed.TotalMilliseconds;
            sw.Reset();

            sw.Start();
            context.Initialize_Rights();
            context.Initialize_RightOperates();
            sw.Stop();
            var s2 = sw.Elapsed.TotalMilliseconds;
        }
Exemplo n.º 14
0
        private void createRoleProcessSpec(Feature role, Feature linkedRole, String eventPrefixStr, Feature attachedPort, String componentName)
        {
            if (Spec.DefinitionDatabase.ContainsKey(eventPrefixStr + "_" + role.getName()))
            {
                return;
            }
            //Feature role = conn.getRoleByName(roleName);

            Spec.CompStateDatabase.TryGetValue(componentName, out List <string> statesList);
            if (statesList == null)
            {
                statesList = new List <string>();
                Spec.CompStateDatabase.Add(componentName, statesList);
            }

            // create parameter of role process
            List <Expression> paramsExpr = new List <Expression>();

            if (role.Params.Count > 0)
            {
                foreach (var param in role.Params)
                {
                    paramsExpr.Add(new Variable(param));
                }
            }
            // create main role process
            DefinitionRef process = new DefinitionRef(eventPrefixStr + "_" + role.getName(), paramsExpr.ToArray());
            Process       prev    = null;

            Console.WriteLine(role.process.ElementAt(role.process.Count - 1).Name + "====" + role.getName());
            if (role.process.ElementAt(role.process.Count - 1).getName() == role.getName())
            {
                prev = process;
            }
            else if (role.process.ElementAt(role.process.Count - 1).Name.IndexOf("Skip") != -1)
            {
                prev = new Skip();
            }
            else if (role.process.ElementAt(role.process.Count - 1).Name.IndexOf("Stop") != -1)
            {
                prev = new Stop();
            }
            // copy list of event from the role process
            List <SysEvent> roleProcess = new List <SysEvent>();

            roleProcess.AddRange(role.process);

            // intercept if there is a link to other role
            if (linkedRole != null)
            {
                for (int i = 0; i < roleProcess.Count; i++)
                {
                    if (roleProcess.ElementAt(i).Name.IndexOf("_process") != -1)

                    {
                        // get rid of xxx() in linked role process
                        if (linkedRole.process.ElementAt(linkedRole.process.Count - 1).Name == linkedRole.Name)
                        {
                            linkedRole.process.RemoveAt(linkedRole.process.Count - 1);
                        }
                        Console.WriteLine("##inserting " + roleProcess.ElementAt(i));
                        // combine process at where  _process is
                        roleProcess.InsertRange(i, linkedRole.process);

                        // combine process after where  _process is
                        // roleProcess.InsertRange(i+1, linkedRole.process);
                        break;
                    }
                }
            }

            // insert component internal computation
            if (attachedPort.process.Count != 0)
            {
                for (int i = 0; i < roleProcess.Count; i++)
                {
                    if (roleProcess.ElementAt(i).Name.IndexOf("_process") != -1)

                    {
                        if (attachedPort.process.ElementAt(attachedPort.process.Count - 1).Name == attachedPort.Name)
                        {
                            attachedPort.process.RemoveAt(attachedPort.process.Count - 1);
                        }

                        // insert event trail after process event
                        //  roleProcess.InsertRange(i+1, attachedPort.process);

                        // insert event trail at process event
                        roleProcess.InsertRange(i, attachedPort.process);

                        break;
                    }
                }
            }


            // construct a sequenc for the role process
            // start from the second event
            for (int i = roleProcess.Count - 2; i >= 0; i--)
            {
                var     sysEvent = roleProcess.ElementAt(i);
                Process current  = null;
                if (sysEvent is SysProcess)
                {
                    // it is event
                    current = new EventPrefix(new Common.Classes.LTS.Event(eventPrefixStr + "_" + sysEvent.getName()), prev);
                    Console.WriteLine("   ->" + componentName + "  addEvent " + eventPrefixStr + "_" + sysEvent.getName());
                    statesList.Add(eventPrefixStr + "_" + sysEvent.getName());
                }
                else if (sysEvent is SysChannel)
                {
                    // it is channel
                    SysChannel channel = (SysChannel)sysEvent;
                    // parse channel parameters
                    List <Expression> chparamsExpr = new List <Expression>();
                    if (channel.Parameters.Count > 0)
                    {
                        foreach (var param in channel.Parameters)
                        {
                            chparamsExpr.Add(new Variable(param));
                        }
                    }
                    // add channelqueue to database, if still not exists
                    if (!Spec.ChannelDatabase.ContainsKey(channel.getName()))
                    {
                        ChannelQueue queue = new ChannelQueue(1);
                        Spec.ChannelDatabase.Add(channel.getName(), queue);
                    }
                    if (channel.ChannelType == SysChannel.Type.Input)
                    {
                        current = new ChannelInput(channel.getName(), null, chparamsExpr.ToArray(), prev);
                    }
                    else if (channel.ChannelType == SysChannel.Type.Output)
                    {
                        current = new ChannelOutput(channel.getName(), null, chparamsExpr.ToArray(), prev);
                    }
                }
                prev = current;
            }
            //Spec.CompStateDatabase.Add(componentName, statesList);
            Spec.CompStateDatabase.TryGetValue(componentName, out List <string> outstatesList);
            Console.WriteLine("     -> outstate: " + outstatesList.Count);
            // create process definition
            Definition processDef = new Definition(eventPrefixStr + "_" + role.getName(), role.Params.ToArray(), prev);

            process.Def = processDef;

            // add role process to spec
            Console.WriteLine("............ create role process :" + role.getName());
            Spec.DefinitionDatabase.Add(processDef.Name, processDef);
        }