public void SavePackageDefination(PackageDefination packageDefination) { var alias = packageDefination.Alias; if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentException("PackageDefination.Alias is required."); if (alias.Contains("/")) throw new ArgumentException("Invalid package alias. package alias cannot contain /"); var dir = this.Storage.GetDirectory(alias,true); this.Storage.PutText(alias + ".package.json",packageDefination.ToJson()); }
public PackageDefination(PackageDefination other) : base(other) { }
void TestDefinationAccess(IDefinationRepository rep) { #region package PackageDefination pack1 = new PackageDefination() { Alias = "Test1", Name = "Test Package1", Description = "Just for test package=1" }; rep.SavePackageDefination(pack1); PackageDefination pack2 = new PackageDefination() { Alias ="Test2", Name = "Test Package2", Description = "Just for test package=2" }; pack2.Extras["author"] = "yiy"; rep.SavePackageDefination(pack2); var packs = rep.ListPackages(); Assert.Equal(2,packs.Count); Assert.Equal("Test1",packs[0].Alias); Assert.Equal("Test2",packs[1].Alias); var pack = rep.GetPackageDefination("test2"); Assert.Equal("Test2",pack.Alias); Assert.Equal("Test Package2",pack.Name); Assert.Equal("Just for test package=2",pack.Description); Assert.Equal(1,pack.Extras.Count); Assert.Equal("yiy",pack.Extras["author"]); #endregion #region proccess var proccess = new ProccessDefination(); proccess.Alias = "test2/proccess1"; proccess.Name = "Proccess1"; proccess.StartAlias = "test2/proccess1/PR"; proccess.FinishAlias = "test2/proccess1/PO"; rep.SaveProccessDefination(proccess); var pro = rep.GetProccessDefination("test2/proccess1"); Assert.Equal("test2/proccess1",pro.Alias); Assert.Equal("Proccess1",pro.Name); Assert.Equal("test2/proccess1/PR", pro.StartAlias); Assert.Equal("test2/proccess1/PO", pro.FinishAlias); #endregion #region activity var prActivity = new ActivityDefination(); prActivity.Alias = "test2/proccess1/PR"; prActivity.Name = "PR"; prActivity.InstanceType = "Activity"; prActivity.StartMode = ExecutionModes.Automatic; prActivity.StartConstraintKind = ConstraintKinds.Code; prActivity.StartConstraint = "return true"; prActivity.FinishMode = ExecutionModes.Manual; prActivity.FinishConstraintKind = ConstraintKinds.Class; prActivity.FinishConstraint = "Finish"; rep.SaveActivityDefination(prActivity); var activity = rep.GetActivityDefination("test2/proccess1/PR"); Assert.Equal("test2/proccess1/PR", activity.Alias); Assert.Equal("PR", activity.Name); Assert.Equal("test2/proccess1", activity.ProccessAlias); Assert.Equal("Activity", activity.InstanceType); Assert.Equal(ExecutionModes.Automatic, activity.StartMode); Assert.Equal(ConstraintKinds.Code, activity.StartConstraintKind); Assert.Equal("return true", activity.StartConstraint); Assert.Equal(ExecutionModes.Manual, activity.FinishMode); Assert.Equal(ConstraintKinds.Class, activity.FinishConstraintKind); Assert.Equal("Finish", activity.FinishConstraint); #endregion #region transaction var trans = new TransactionDefination(); trans.Alias = "test2/proccess1/PR2PO"; trans.Name = "PR2PO"; trans.InstanceType = "Transaction"; trans.Constraint = "return true;"; trans.ConstraintKind = ConstraintKinds.Code; trans.FromAlias = "test2/proccess1/PR"; trans.ToAlias = "test2/proccess1/PO"; rep.SaveTransactionDefination(trans); var transaction = rep.GetTransactionDefination("test2/proccess1/PR2PO"); Assert.Equal("test2/proccess1/PR2PO", transaction.Alias); Assert.Equal("PR2PO", transaction.Name); Assert.Equal("test2/proccess1", transaction.ProccessAlias); Assert.Equal("Transaction", transaction.InstanceType); Assert.Equal(ConstraintKinds.Code, transaction.ConstraintKind); Assert.Equal("return true;", transaction.Constraint); Assert.Equal("test2/proccess1/PR", transaction.FromAlias); Assert.Equal("test2/proccess1/PO", transaction.ToAlias); #endregion #region list execution var list = rep.ListExecutionDefinations("test2/proccess1"); Assert.NotNull(list); Assert.Equal(2,list.Count); Assert.NotNull(list.FirstOrDefault(p=>p.Alias == "test2/proccess1/PR")); Assert.NotNull(list.FirstOrDefault(p => p.Alias == "test2/proccess1/PR2PO")); #endregion }
public IList<PackageDefination> ListPackages() { var items = this.Storage.ListItems(false, StorageTypes.File); List<PackageDefination> result = new List<PackageDefination>(); foreach (var item in items) { if (!item.Name.EndsWith(".package.json")) continue; try { var jsonText = this.Storage.GetText(item.Name); if (jsonText == null) throw new ArgumentException("Package[" + item.Name + "] is not existed or damaged."); var data = new Json.Parser().Parse(jsonText) as JObject; if (data == null) throw new ArgumentException("Package[" + item.Name + "] is damaged."); var pack= new PackageDefination(data); result.Add(pack); } catch (ArgumentException) { } } return result; }