This commit introduces Oracle database integration by adding necessary configurations, entity mappings, and Docker Compose setup. Oracle-specific mappings ensure compatibility with NCLOB for large data handling. The changes also include updates to appsettings, enum for SqlDatabaseProvider, and project references to support Oracle.
332 lines
9 KiB
JSON
332 lines
9 KiB
JSON
{
|
|
"Logging": {
|
|
"LogLevel": {
|
|
"Default": "Warning",
|
|
"Microsoft.Hosting.Lifetime": "Information"
|
|
}
|
|
},
|
|
"HostBuilder": {
|
|
"reloadConfigOnChange": true
|
|
},
|
|
"AllowedHosts": "*",
|
|
"ConnectionStrings": {
|
|
"Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;",
|
|
"MySql": "Server=localhost;Database=elsa;Uid=admin;Pwd=password;",
|
|
"PostgreSql": "Server=localhost;Username=elsa;Database=elsa;Port=5432;Password=elsa;SSLMode=Prefer;MaxPoolSize=2000;Timeout=60",
|
|
"Oracle": "User Id=SYSTEM;Password=elsa;Data Source=oracle:1521/ORCLPDB1",
|
|
"CockroachDb": "Host=localhost;Port=26257;Database=elsa;SslMode=Disable;Username=root;IncludeErrorDetail=true",
|
|
"MongoDb": "mongodb://localhost:27017/elsa-workflows",
|
|
"AzureServiceBus": "",
|
|
"RabbitMq": "amqp://guest:guest@localhost:5672",
|
|
"Redis": "localhost:6379,abortConnect=false"
|
|
},
|
|
"DatabaseProvider": "Sqlite",
|
|
"Multitenancy": {
|
|
"Tenants": [
|
|
{
|
|
"Id": null,
|
|
"Name": "Default",
|
|
"Configuration": {
|
|
"Http": {
|
|
"Prefix": "",
|
|
"Host": "localhost:5001"
|
|
},
|
|
"ConnectionStrings": {
|
|
"Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Id": "tenant-1",
|
|
"Name": "Tenant 12 dd",
|
|
"Configuration": {
|
|
"Http": {
|
|
"Prefix": "/tenant-1",
|
|
"Host": "localhost:5001"
|
|
},
|
|
"ConnectionStrings": {
|
|
"Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"Smtp": {
|
|
"Host": "localhost",
|
|
"Port": 2525,
|
|
"DefaultSender": "noreply@crmservices.com"
|
|
},
|
|
"Http": {
|
|
"BaseUrl": "https://localhost:5001",
|
|
"BasePath": "/workflows",
|
|
"ApiRoutePrefix": "elsa/api",
|
|
"AvailableContentTypes": [
|
|
"application/json",
|
|
"application/xml",
|
|
"text/plain",
|
|
"text/html"
|
|
]
|
|
},
|
|
"Identity": {
|
|
"Tokens": {
|
|
"SigningKey": "sufficiently-large-secret-signing-key",
|
|
"AccessTokenLifetime": "1:00:00:00",
|
|
"RefreshTokenLifetime": "7:00:00:00"
|
|
},
|
|
"Roles": [
|
|
{
|
|
"Id": "admin",
|
|
"Name": "Administrator",
|
|
"Permissions": [
|
|
"*"
|
|
],
|
|
"TenantId": "default"
|
|
}
|
|
],
|
|
"Users": [
|
|
{
|
|
"Id": "a2323f46-42db-4e15-af8b-94238717d817",
|
|
"Name": "admin",
|
|
"HashedPassword": "TfKzh9RLix6FPcCNeHLkGrysFu3bYxqzGqduNdi8v1U=",
|
|
"HashedPasswordSalt": "JEy9kBlhHCNsencitRHlGxmErmSgY+FVyMJulCH27Ds=",
|
|
"Roles": [
|
|
"admin"
|
|
],
|
|
"TenantId": ""
|
|
},
|
|
{
|
|
"Id": "b0cd0e506e713a9d",
|
|
"Name": "alice",
|
|
"Roles": [
|
|
"admin"
|
|
],
|
|
"HashedPassword": "8B0fFK/f/kk9GkVtzXfRJ2Y6cNyYVvLTfKouWcAcuPg=",
|
|
"HashedPasswordSalt": "xlNWvEng8fRvo0McyJopbRJ2MJ9NIYV/4IY5dOZeiiw=",
|
|
"TenantId": "tenant-2"
|
|
},
|
|
{
|
|
"Id": "789d5056cb3bb8e9",
|
|
"Name": "bob",
|
|
"Roles": [
|
|
"admin"
|
|
],
|
|
"HashedPassword": "GMHHvUw7RfIIBq+GAWZ/AlHR50TbgONYfGQ92Xge0EI=",
|
|
"HashedPasswordSalt": "V4uHKg1PFBc1bsngCQoptibOu14faj9obSn5B23h1wE=",
|
|
"TenantId": "tenant-1"
|
|
}
|
|
],
|
|
"Applications": [
|
|
{
|
|
"Id": "d57030226341448daff5a2935aba2d3f",
|
|
"Name": "Postman",
|
|
"Roles": [
|
|
"admin"
|
|
],
|
|
"ClientId": "HXr0Vzdm9KCZbwsJ",
|
|
"ClientSecret": "a<~QGGHTEA%u4;CU&'Wga5ED:_&Gd1C)",
|
|
"HashedApiKey": "Z5ClHs3mbzx8Pnw3+PxbMq8A/Y+VKMCCDTGYtax8JFM=",
|
|
"HashedApiKeySalt": "kBisa1X8FwBfN2zmyGMFRgIVVBleghhQAJ4WGyTkaD0=",
|
|
"HashedClientSecret": "jEv58d0SVbGQ3nBZM0lkzHghG4Y+lMKW80wipz+9vHk=",
|
|
"HashedClientSecretSalt": "xRKy14Ok1/tU3kLf/8V1fcbLIegy9vcM90Peu2tzohU=",
|
|
"TenantId": "default"
|
|
}
|
|
]
|
|
},
|
|
"Environments": {
|
|
"Environments": [
|
|
{
|
|
"Name": "Local",
|
|
"ServerUrl": "https://localhost:5001/elsa/api"
|
|
},
|
|
{
|
|
"Name": "Staging",
|
|
"ServerUrl": "https://staging.acme.com/elsa/api"
|
|
},
|
|
{
|
|
"Name": "Production",
|
|
"ServerUrl": "https://production.acme.com/elsa/api"
|
|
}
|
|
]
|
|
},
|
|
"AppRole": "Default",
|
|
"Runtime": {
|
|
"DistributedLocking": {
|
|
"Provider": "File",
|
|
"LockAcquisitionTimeout": "00:00:10"
|
|
},
|
|
"DistributedLockProvider": "File",
|
|
"WorkflowDispatcher": {
|
|
"Channels": [
|
|
{
|
|
"Name": "Low"
|
|
},
|
|
{
|
|
"Name": "Medium"
|
|
},
|
|
{
|
|
"Name": "High"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"Scripting": {
|
|
"Python": {
|
|
"PythonDllPath": "",
|
|
"Scripts": [
|
|
"def greet(name): return f'Hello {name}!'",
|
|
"def say_hello_world(): return greet('World')"
|
|
]
|
|
}
|
|
},
|
|
"AzureServiceBus": {
|
|
"Queues": [
|
|
{
|
|
"Name": "queue1"
|
|
},
|
|
{
|
|
"Name": "queue2"
|
|
}
|
|
],
|
|
"Topics": [
|
|
{
|
|
"Name": "topic1",
|
|
"Subscriptions": [
|
|
{
|
|
"Name": "subscription1"
|
|
},
|
|
{
|
|
"Name": "subscription2"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Kafka": {
|
|
"Topics": [
|
|
{
|
|
"Id": "topic-1",
|
|
"Name": "topic-1"
|
|
},
|
|
{
|
|
"Id": "topic-2",
|
|
"Name": "topic-2"
|
|
}
|
|
],
|
|
"SchemaRegistries": [
|
|
{
|
|
"Id": "schema-registry-1",
|
|
"Name": "Schema Registry 1",
|
|
"Config": {
|
|
"Url": "http://localhost:8081"
|
|
}
|
|
}
|
|
],
|
|
"Producers": [
|
|
{
|
|
"Id": "producer-1",
|
|
"Name": "Producer 1",
|
|
"FactoryType": "Elsa.Kafka.Factories.GenericProducerFactory`2[[System.String, System.Private.CoreLib], [Elsa.Server.Web.Messages.OrderReceived, Elsa.Server.Web]], Elsa.Kafka",
|
|
"Config": {
|
|
"BootstrapServers": "localhost:9092"
|
|
},
|
|
"SchemaRegistryId": "schema-registry-1"
|
|
}
|
|
],
|
|
"Consumers": [
|
|
{
|
|
"Id": "consumer-1",
|
|
"Name": "Consumer 1",
|
|
"FactoryType": "Elsa.Kafka.Factories.GenericConsumerFactory`2[[System.String, System.Private.CoreLib], [Elsa.Server.Web.Messages.OrderReceived, Elsa.Server.Web]], Elsa.Kafka",
|
|
"Config": {
|
|
"BootstrapServers": "localhost:9092",
|
|
"GroupId": "group-1",
|
|
"AutoOffsetReset": "earliest",
|
|
"EnableAutoCommit": "true"
|
|
},
|
|
"SchemaRegistryId": "schema-registry-1"
|
|
}
|
|
]
|
|
},
|
|
"Secrets": {
|
|
"Management": {
|
|
"SweepInterval": "04:00:00"
|
|
}
|
|
},
|
|
"Agents": {
|
|
"ApiKeys": [
|
|
{
|
|
"Name": "MyApiKey",
|
|
"Value": "my-api-key"
|
|
}
|
|
],
|
|
"Services": [
|
|
{
|
|
"Name": "ChatCompletion",
|
|
"Type": "OpenAIChatCompletion",
|
|
"Settings": {
|
|
"ModelId": "gpt-4o",
|
|
"ApiKeyRef": "MyApiKey"
|
|
}
|
|
},
|
|
{
|
|
"Name": "TextToImage",
|
|
"Type": "OpenAITextToImage",
|
|
"Settings": {
|
|
"ModelId": "dall-e-3",
|
|
"ApiKeyRef": "MyApiKey"
|
|
}
|
|
}
|
|
],
|
|
"Agents": [
|
|
{
|
|
"Name": "Copywriter",
|
|
"Description": "A persona that writes articles on any topic.",
|
|
"Services": [
|
|
"ChatCompletion"
|
|
],
|
|
"FunctionName": "WriteArticle",
|
|
"PromptTemplate": "You are a writer of articles about any topic and any additional instructions given to you. The syntax of the article content will be markdown, and your response will be in JSON format containing a \"title\" field and a \"markdown\" field using the following JSON structure: { \"title\": \"The title of the Article\", \"markdown\": \"The article content in markdown syntax.\" }. This is the topic: {{$Topic}}. The article consists of around {{$ParagraphCount}} paragraphs. The article must be written in the language {{$Language}} using the following style: {{$WritingStyle}}. Additional instructions (if any): {{$AdditionalInstructions}}.",
|
|
"InputVariables": [
|
|
{
|
|
"Name": "Topic",
|
|
"Description": "The topic to write an article about.",
|
|
"Type": "string"
|
|
},
|
|
{
|
|
"Name": "ParagraphCount",
|
|
"Description": "The number of paragraphs to write.",
|
|
"Type": "int"
|
|
},
|
|
{
|
|
"Name": "Language",
|
|
"Description": "The language to write the text in.",
|
|
"Type": "string"
|
|
},
|
|
{
|
|
"Name": "WritingStyle",
|
|
"Description": "The style to write the text in.",
|
|
"Type": "string"
|
|
},
|
|
{
|
|
"Name": "AdditionalInstructions",
|
|
"Description": "Any additional instructions.",
|
|
"Type": "string"
|
|
}
|
|
],
|
|
"OutputVariable": {
|
|
"Name": "Article",
|
|
"Description": "The article consisting of a title and markdown text."
|
|
},
|
|
"ExecutionSettings": {
|
|
"MaxTokens": null,
|
|
"Temperature": 0.5,
|
|
"TopP": 0.9,
|
|
"PresencePenalty": 0.5,
|
|
"FrequencyPenalty": 0.5,
|
|
"ResponseFormat": "json_object"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|