Пример #1
0
        public virtual void testSerializeFileVariable()
        {
            IBpmnModelInstance modelInstance = ESS.FW.Bpm.Model.Bpmn.Bpmn.CreateExecutableProcess("process").StartEvent().UserTask().EndEvent().Done();
            IDeployment        deployment    = repositoryService.CreateDeployment().AddModelInstance("process.bpmn", modelInstance).Deploy();
            IVariableMap       variables     = ESS.FW.Bpm.Engine.Variable.Variables.CreateVariables();
            string             filename      = "test.Txt";
            string             type          = "text/plain";
            IFileValue         fileValue     = ESS.FW.Bpm.Engine.Variable.Variables.FileValue(filename).File(File.Open(filename, FileMode.OpenOrCreate)).Encoding("UTF-8").MimeType(type).Create();

            // IFileValue fileValue = Variable.Variables.FileValue(filename).File("ABC".GetBytes()).Encoding("UTF-8").MimeType(type).Create();
            variables.Add("file", fileValue);
            runtimeService.StartProcessInstanceByKey("process", variables);
            ITask             task   = taskService.CreateTaskQuery().First();
            IVariableInstance result = runtimeService.CreateVariableInstanceQuery(c => c.ProcessInstanceId == task.ProcessInstanceId).First();
            IFileValue        value  = (IFileValue)result.TypedValue;

            Assert.That(value.Filename, Is.EqualTo(filename));
            Assert.That(value.MimeType, Is.EqualTo(type));
            Assert.That(value.Encoding, Is.EqualTo("UTF-8"));
            Assert.That(value.EncodingAsCharset, Is.EqualTo(Encoding.UTF8));
            //Scanner scanner = new Scanner(value.Value);
            //Assert.That(scanner.NextLine(), Is.EqualTo("ABC"));

            Assert.That(value.Value, Is.EqualTo("ABC"));
            // clean up
            repositoryService.DeleteDeployment(deployment.Id, true);
        }
Пример #2
0
 protected override void Process(IFileValue fileValue, ZipAdapterConnectionParameters connectionParameters, ZipAdapterProcessorParameters processorParameters, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
 {
     new UnzipFileProcessorValuesProvider(new UnzipFileProcessorParams
     {
         FileNamePattern = processorParameters.FileNamePattern,
         Password        = connectionParameters.Password
     }).PushValues(fileValue, push, cancellationToken, resolver, invoker);
 }
Пример #3
0
        public virtual void testSerializeNullValue()
        {
            IProcessInstance pi = runtimeService.StartProcessInstanceByKey("oneTaskProcess",
                                                                           ESS.FW.Bpm.Engine.Variable.Variables.CreateVariables().PutValue("fileVar"
                                                                                                                                           , ESS.FW.Bpm.Engine.Variable.Variables.FileValue("test.Txt").Create()));

            IFileValue fileVar = runtimeService.GetVariableTyped <IFileValue>(pi.Id, "fileVar");

            Assert.IsNull(fileVar.MimeType);
        }
Пример #4
0
        public virtual void testSerializeNullEncoding()
        {
            string           fileName = "test.Txt";
            IProcessInstance pi       = runtimeService.StartProcessInstanceByKey("oneTaskProcess", ESS.FW.Bpm.Engine.Variable.Variables.CreateVariables().PutValue("fileVar",
                                                                                                                                                                   ESS.FW.Bpm.Engine.Variable.Variables.FileValue(fileName).MimeType("some mimetype")
                                                                                                                                                                   .File(File.Open(fileName, FileMode.OpenOrCreate)).Create()));

            IFileValue fileVar = runtimeService.GetVariableTyped <IFileValue>(pi.Id, "fileVar");

            Assert.IsNull(fileVar.Encoding);
        }
Пример #5
0
        protected override void Process(IFileValue fileValue, FileSystemAdapterConnectionParameters connectionParameters, FileSystemAdapterProcessorParameters processorParameters, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
        {
            var l = fileValue.GetContent();

            l.Seek(0, SeekOrigin.Begin);
            var folder         = string.IsNullOrWhiteSpace(connectionParameters.RootFolder) ? (processorParameters.SubFolder ?? "") : Path.Combine(connectionParameters.RootFolder, processorParameters.SubFolder ?? "");
            var outputFilePath = Path.Combine(folder, fileValue.Name);

            using (var fileStream = File.OpenWrite(outputFilePath))
                l.CopyTo(fileStream);
            push(fileValue);
        }
Пример #6
0
        public override void PushValues(IFileValue input, Action <TOut> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
        {
            var sr = _args.Encoding == null ? new StreamReader(input.GetContent(), true) : new StreamReader(input.GetContent(), _args.Encoding);

            using (sr)
                while (!sr.EndOfStream)
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        break;
                    }
                    push(_args.GetResult(sr.ReadLine()));
                }
        }
Пример #7
0
        protected override void Process(IFileValue fileValue, DropboxAdapterConnectionParameters connectionParameters, DropboxAdapterProcessorParameters processorParameters, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
        {
            var path   = $"/{Path.Combine(connectionParameters.RootFolder ?? "", processorParameters.SubFolder ?? "", fileValue.Name)}".Replace("\\", "/").Replace("//", "/");
            var stream = fileValue.GetContent();

            byte[] fileContents;
            stream.Position = 0;
            using (MemoryStream ms = new MemoryStream())
            {
                stream.CopyTo(ms);
                fileContents = ms.ToArray();
            }
            ActionRunner.TryExecute(connectionParameters.MaxAttempts, () => UploadSingleTime(connectionParameters, fileContents, path));
            push(fileValue);
        }
Пример #8
0
        protected override void Process(IFileValue fileValue, SftpAdapterConnectionParameters connectionParameters, SftpAdapterProcessorParameters processorParameters, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
        {
            var folder = string.IsNullOrWhiteSpace(connectionParameters.RootFolder) ? (processorParameters.SubFolder ?? "") : Path.Combine(connectionParameters.RootFolder, processorParameters.SubFolder ?? "");
            var stream = fileValue.GetContent();

            byte[] fileContents;
            stream.Position = 0;
            using (MemoryStream ms = new MemoryStream())
            {
                stream.CopyTo(ms);
                fileContents = ms.ToArray();
            }
            ActionRunner.TryExecute(connectionParameters.MaxAttempts, () => UploadSingleTime(connectionParameters, fileContents, Path.Combine(folder, fileValue.Name)));
            push(fileValue);
        }
Пример #9
0
        protected override void Process(
            IFileValue fileValue, MailAdapterConnectionParameters connectionParameters, MailAdapterProcessorParameters processorParameters,
            Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
        {
            var portNumber = connectionParameters.PortNumber == 0 ? 25 : connectionParameters.PortNumber;

            var          destinations = GetDestinations(processorParameters, fileValue.Metadata).ToList();
            var          stream       = fileValue.GetContent();
            MemoryStream ms           = new MemoryStream();

            stream.CopyTo(ms);
            foreach (var(destination, metadataJson) in destinations)
            {
                MailMessage mailMessage = new MailMessage();
                mailMessage.To.Add(new MailAddress(destination.Email, destination.DisplayName));
                mailMessage.From       = new MailAddress(FormatText(processorParameters.From, metadataJson), FormatText(processorParameters.FromDisplayName, metadataJson));
                mailMessage.Subject    = FormatText(processorParameters.Subject, metadataJson);
                mailMessage.IsBodyHtml = true;

                ms.Seek(0, SeekOrigin.Begin);
                var fileExtension = Path.GetExtension(fileValue.Name);
                if (string.IsNullOrWhiteSpace(processorParameters.Body) &&
                    (string.Equals(fileExtension, ".html", StringComparison.InvariantCultureIgnoreCase) ||
                     string.Equals(fileExtension, ".htm", StringComparison.InvariantCultureIgnoreCase)))
                {
                    var content = new StreamReader(ms).ReadToEnd();
                    mailMessage.Body = content;
                    if (string.IsNullOrWhiteSpace(mailMessage.Subject))
                    {
                        mailMessage.Subject = Path.GetFileNameWithoutExtension(fileValue.Name);
                    }
                }
                else
                {
                    mailMessage.Body = FormatText(processorParameters.Body, metadataJson);
                    Attachment attachment = new Attachment(ms, fileValue.Name, MimeTypes.GetMimeType(fileValue.Name));
                    mailMessage.Attachments.Add(attachment);
                }
                ActionRunner.TryExecute(connectionParameters.MaxAttempts, () => SendSingleFile(connectionParameters, (MimeMessage)mailMessage, portNumber));
            }
            push(fileValue);
        }
Пример #10
0
        protected override void Process(IFileValue fileValue, object connectionParameters, UnzipFileProcessorParams processorParameters, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
        {
            var destinations = (fileValue.Metadata as IFileValueWithDestinationMetadata)?.Destinations;

            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }
            using (var zf = new ZipFile(fileValue.GetContent()))
            {
                var searchPattern = string.IsNullOrEmpty(processorParameters.FileNamePattern) ? "*" : processorParameters.FileNamePattern;
                var matcher       = new Matcher().AddInclude(searchPattern);

                if (!String.IsNullOrEmpty(processorParameters.Password))
                {
                    zf.Password = processorParameters.Password;
                }
                var fileNames = zf.OfType <ZipEntry>().Where(i => i.IsFile && matcher.Match(Path.GetFileName(i.Name)).HasMatches).Select(i => i.Name).ToHashSet();
                foreach (ZipEntry zipEntry in zf)
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        break;
                    }
                    if (zipEntry.IsFile && matcher.Match(Path.GetFileName(zipEntry.Name)).HasMatches)
                    {
                        MemoryStream outputStream = new MemoryStream();
                        using (var zipStream = zf.GetInputStream(zipEntry))
                            zipStream.CopyTo(outputStream, 4096);
                        outputStream.Seek(0, SeekOrigin.Begin);
                        push(new UnzippedFileValue <UnzippedFileValueMetadata>(outputStream, zipEntry.Name, new UnzippedFileValueMetadata
                        {
                            ParentFileName     = fileValue.Name,
                            ParentFileMetadata = fileValue.Metadata,
                            Destinations       = destinations
                        }, fileValue, fileNames, zipEntry.Name));
                    }
                }
            }
        }
Пример #11
0
 public PdfTextLine(IFileValue fileValue, List <string> section, int pageNumber, int lineNumber, string text) : base(section, pageNumber, fileValue) => (Text, LineNumber) = (text, lineNumber);
Пример #12
0
 public void Process(IFileValue fileValue, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker)
 => Process(fileValue, _connectionParameters, _processorParameters, push, cancellationToken, resolver, invoker);
Пример #13
0
 protected abstract void Process(IFileValue fileValue, TConnectionParameters connectionParameters, TProcessorParameters processorParameters, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker);
Пример #14
0
 public UnzippedFileValue(Stream stream, string name, TMetadata metadata, IFileValue underlyingFileValue, HashSet <string> pathsNotFlaggedForDelete, string innerPath)
     : base(metadata) => (_stream, Name, _underlyingFileValue, _pathsNotFlaggedForDelete, _innerPath) = (stream, name, underlyingFileValue, pathsNotFlaggedForDelete, innerPath);
Пример #15
0
 protected PdfContent(List <string> section, int pageNumber, IFileValue fileValue)
 => (Section, PageNumber, FileValue) = (section, pageNumber, fileValue);
Пример #16
0
 public PdfHeader(IFileValue fileValue, List <string> section, int pageNumber) : base(section, pageNumber, fileValue)
 {
 }
Пример #17
0
 public PdfVisitor(Action <PdfContent> push, IFileValue fileValue) => (_push, _fileValue) = (push, fileValue);
Пример #18
0
 public PdfTable(IFileValue fileValue, List <string> section, int pageNumber, List <List <List <string> > > table) : base(section, pageNumber, fileValue) => (Table) = (table);