コード例 #1
0
ファイル: BpmnDeployer.cs プロジェクト: zf321/ESS.FW.Bpm
        //解析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);
        }