//解析xml 生成ProcessDefinitionEntity protected internal override IList <ProcessDefinitionEntity> TransformDefinitions(DeploymentEntity deployment, ResourceEntity resource, Core.Model.Properties properties) { byte[] bytes = resource.Bytes; System.IO.MemoryStream inputStream = new System.IO.MemoryStream(bytes); BpmnParse bpmnParse = bpmnParser.CreateBpmnParse().SourceInputStream(inputStream).Deployment(deployment).SetName(resource.Name); if (!deployment.IsValidatingSchema) { bpmnParse.SchemaResource = null; } //执行实际解析 bpmnParse.Execute(); //TODO 解析后续行为 if (!properties.Contains(JobDeclarationsProperty)) { properties.Set(JobDeclarationsProperty, new Dictionary <string, IList <IJobDeclaration> >()); } var oldProperties = properties.Get(JobDeclarationsProperty); foreach (var item in bpmnParse.GetJobDeclarations()) { oldProperties[item.Key] = item.Value; } //foreach (var item in oldProperties) //{ // bpmnParse.JobDeclarations[item.Key] = item.Value; //} //properties.Set<string, IList<IJobDeclaration>>(JobDeclarationsProperty, bpmnParse.JobDeclarations); return(bpmnParse.ProcessDefinitions); }
protected internal override void DefinitionAddedToDeploymentCache(DeploymentEntity deployment, ProcessDefinitionEntity definition, Core.Model.Properties properties) { IList <IJobDeclaration> declarations; properties.Get(JobDeclarationsProperty).TryGetValue(definition.Key, out declarations); //var obj = properties.Get(JobDeclarationsProperty); //IList<IJobDeclaration> declarations =obj.ContainsKey(definition.Key)?obj[definition.Key]:null; UpdateJobDeclarations(declarations, definition, deployment.IsNew); ProcessDefinitionEntity latestDefinition = FindLatestDefinitionByKeyAndTenantId(definition.Key, definition.TenantId); if (deployment.IsNew) { AdjustStartEventSubscriptions(definition, latestDefinition); } // add "authorizations" AddAuthorizations(definition); }