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); }
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); }
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); }
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); }
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); }
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())); } }
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); }
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); }
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); }
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)); } } } }
public PdfTextLine(IFileValue fileValue, List <string> section, int pageNumber, int lineNumber, string text) : base(section, pageNumber, fileValue) => (Text, LineNumber) = (text, lineNumber);
public void Process(IFileValue fileValue, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker) => Process(fileValue, _connectionParameters, _processorParameters, push, cancellationToken, resolver, invoker);
protected abstract void Process(IFileValue fileValue, TConnectionParameters connectionParameters, TProcessorParameters processorParameters, Action <IFileValue> push, CancellationToken cancellationToken, IDependencyResolver resolver, IInvoker invoker);
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);
protected PdfContent(List <string> section, int pageNumber, IFileValue fileValue) => (Section, PageNumber, FileValue) = (section, pageNumber, fileValue);
public PdfHeader(IFileValue fileValue, List <string> section, int pageNumber) : base(section, pageNumber, fileValue) { }
public PdfVisitor(Action <PdfContent> push, IFileValue fileValue) => (_push, _fileValue) = (push, fileValue);
public PdfTable(IFileValue fileValue, List <string> section, int pageNumber, List <List <List <string> > > table) : base(section, pageNumber, fileValue) => (Table) = (table);